یکی از بزرگترین مشکلات هنگام کار با 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
یعنی مدل فقط خوب صحبت نکند؛ بلکه درست و قابل اثبات صحبت کند.