MODULE 04 / LESSON 30

Handling Hallucinations در سیستم‌های RAG

یکی از بزرگ‌ترین مشکلات هنگام کار با LLMها، Hallucination (توهم‌زایی) است. حتی اگر یک سیستم RAG خوب طراحی کنیم، باز هم ممکن است مدل: اطلاعات اشتباه تولید کند چیزی را که وجود ندارد بسازد منبع جعلی ارائه دهد بنابراین کنترل…

نویسنده: محمد ابوطالبی۸۶۳ واژهماژول ۴: LLM & Prompting

یکی از بزرگ‌ترین مشکلات هنگام کار با LLMها، Hallucination (توهم‌زایی) است.

حتی اگر یک سیستم RAG خوب طراحی کنیم، باز هم ممکن است مدل:

  • اطلاعات اشتباه تولید کند
  • چیزی را که وجود ندارد بسازد
  • منبع جعلی ارائه دهد

بنابراین کنترل Hallucination یکی از مهم‌ترین بخش‌های طراحی Pipeline RAG است.


مثال Hallucination در RAG

فرض کنید یک فروشگاه آنلاین یک Chatbot پشتیبانی دارد.

کاربر می‌پرسد:

Do you offer student discounts?

Retriever اطلاعات زیر را پیدا می‌کند:

Senior discount: 10%

New customer discount: 10%

اما هیچ اطلاعاتی درباره دانشجو وجود ندارد.


System Prompt:

Be helpful to customers.

باعث می‌شود مدل تلاش کند پاسخ مفیدی بدهد.

پس مدل می‌گوید:

Yes, students get 10% discount with a valid student ID.

مشکل:

این تخفیف اصلاً وجود ندارد.

مدل آن را ساخته است.


چرا LLMها Hallucinate می‌کنند؟

چون هدف اصلی LLM:

❌ تولید حقیقت نیست.

بلکه:

✅ تولید محتمل‌ترین توالی Tokenها است.


LLM یاد گرفته:

Question
   ↓
Most probable answer

نه:

Question
   ↓
Verified true answer

پس ممکن است:

یک جمله بسیار طبیعی و منطقی تولید کند،

اما واقعیت نداشته باشد.


چرا Hallucination خطرناک است؟

1. اطلاعات غلط به کاربر می‌دهد

واضح‌ترین مشکل.


2. تشخیص آن سخت است

چون معمولاً:

  • بی‌معنی نیست
  • غلط املایی ندارد
  • ساختار حرفه‌ای دارد

بلکه:

"غلط اما قانع‌کننده"

است.


3. اعتماد کاربر کاهش پیدا می‌کند

اگر کاربر چند بار پاسخ غلط بگیرد:

حتی پاسخ‌های درست را هم باور نمی‌کند.


انواع Hallucination

Hallucination فقط ساختن اطلاعات جدید نیست.

چند نوع دارد:


1. تغییر جزئی اطلاعات

اطلاعات درست است ولی جزئیات اشتباه است.

مثلاً:

واقعیت:

Senior discount = 10%

مدل:

Senior discount = 5%

2. انکار اطلاعات موجود

واقعیت:

Senior discount exists

مدل:

The company does not offer discounts.

3. ساخت اطلاعات کاملاً جدید

واقعیت:

No student discount

مدل:

Students receive 10% discount.

آیا RAG مشکل Hallucination را حل می‌کند؟

RAG یکی از بهترین روش‌های کاهش Hallucination است.

چون:

اطلاعات واقعی را وارد Prompt می‌کند.

ساختار:

User Question

        ↓

Retriever

        ↓

Trusted Documents

        ↓

LLM

        ↓

Grounded Answer

اما:

RAG صددرصد Hallucination را حذف نمی‌کند.

چون LLM هنوز:

  • احتمالی است
  • ممکن است Context را اشتباه تفسیر کند
  • ممکن است اطلاعات خارج از Context اضافه کند

روش‌های کاهش Hallucination


1. Grounding با Retrieved Documents

مهم‌ترین روش.

به مدل دستور بدهید:

Only answer based on retrieved documents.

مثال System Prompt:

You are a company assistant.

Answer questions only using the provided context.

If the answer is not available,
say "I don't know".

Do not make assumptions.

نتیجه:

مدل کمتر از دانش داخلی خودش استفاده می‌کند.


2. الزام به Citation

یک روش قوی:

از مدل بخواهید منبع بدهد.

مثلاً:

Always cite the source document.

پاسخ:

The company offers senior discounts.

Source:
discount_policy.pdf

مزایا:

  • بررسی انسانی راحت‌تر می‌شود
  • مدل بیشتر مجبور می‌شود به Context تکیه کند

مشکل Citation جعلی

اما یک مشکل وجود دارد.

LLM ممکن است حتی Citation هم بسازد!

مثلاً:

Source: policy_2024.pdf

در حالی که چنین فایلی وجود ندارد.


پس Citation تولیدشده توسط مدل همیشه قابل اعتماد نیست.


3. External Citation Verification

برای اعتماد بیشتر باید یک سیستم خارجی بررسی کند.


مثال:

ContextCite

ایده:

پاسخ را جمله به جمله بررسی می‌کند.

ساختار:

Generated Answer

       ↓

Sentence 1
Sentence 2
Sentence 3

       ↓

Find supporting document

       ↓

Attach source

مثلاً:

جمله:

Students receive 10% discount.

بررسی می‌شود:

آیا در Documentها چنین چیزی وجود دارد؟


اگر وجود نداشته باشد:

No source

4. Self-Consistency Checking

اگر Knowledge Base نداریم:

می‌توان چند بار از مدل سؤال کرد.

مثلاً:

یک سؤال:

What is the capital of X?

چند پاسخ تولید می‌کنیم:

Answer 1
Answer 2
Answer 3

بعد بررسی می‌کنیم:

آیا اطلاعات ثابت هستند؟


ایده:

اگر مدل در حال hallucination باشد:

احتمالاً پاسخ‌ها متفاوت می‌شوند.


مشکل:

  • هزینه زیاد
  • همیشه قابل اعتماد نیست

5. Benchmark برای بررسی Hallucination

برای ارزیابی سیستم‌های RAG از Benchmark استفاده می‌شود.


ALCE Benchmark

هدف:

بررسی کیفیت Citation و Grounding.

سه معیار اصلی:


1. Fluency

آیا متن روان و قابل فهم است؟


2. Correctness

آیا اطلاعات درست است؟


3. Citation Quality

آیا منابع واقعاً پاسخ را پشتیبانی می‌کنند؟


ساختار:

Question

↓

RAG System

↓

Generated Answer

↓

ALCE Evaluation

↓

Score

نکته مهم در طراحی RAG ضد Hallucination

ترتیب اهمیت:


مرحله 1

Retriever خوب

چون اگر اطلاعات غلط وارد Prompt شود، مدل هم اشتباه می‌کند.


مرحله 2

Chunking مناسب

تا Context درست بازیابی شود.


مرحله 3

System Prompt قوی

مثلاً:

Use only provided documents.

مرحله 4

Citation Verification

برای سیستم‌های حساس.


یک System Prompt مناسب ضد Hallucination

نمونه:

You are an AI assistant.

Your answers must be based only on the provided context.

Rules:

1. Do not use outside knowledge.
2. Do not guess.
3. If information is missing, say:
"I don't have enough information."

4. Cite the source document for every factual claim.

جمع‌بندی

Hallucination یکی از اصلی‌ترین مشکلات LLMهاست.

دلایل:

  • LLM حقیقت را نمی‌داند
  • فقط Tokenهای محتمل را پیش‌بینی می‌کند

RAG بهترین روش فعلی برای کاهش آن است، اما کافی نیست.

راهکارهای اصلی:

روش هدف
Grounding محدود کردن پاسخ به Context
Better System Prompt کنترل رفتار مدل
Citation قابل بررسی کردن پاسخ
ContextCite اعتبارسنجی منبع
Self-consistency کشف تناقض
ALCE ارزیابی کیفیت Citation

هدف نهایی یک RAG حرفه‌ای:

Retrieve Correct Information
          ↓
Provide Good Context
          ↓
Force Grounded Generation
          ↓
Verify Citations
          ↓
Trustworthy Answer

یعنی مدل فقط خوب صحبت نکند؛ بلکه درست و قابل اثبات صحبت کند.