چرا اپلیکیشن RAG من دچار توهم (Hallucination) شد و چگونه آن را اصلاح کردم
من یک بار چتبات پشتیبانی RAG خود را به یکی از همکارانم نشان دادم.
بات به او گفت که سیاست بازگشت وجه ما ۳۰ روز است.
سیاست واقعی ما ۱۴ روز است.
بات اعلام نکرد که مطمئن نیست؛ بلکه با اعتمادبهنفس کامل، پاسخی از خودش ساخت.
RAG باید جلوی توهمات را بگیرد. تنظیمات من فقط آنها را از جایی به جای دیگر منتقل میکرد.
من با طی کردن پنج مرحله این مشکل را حل کردم.
۱. استراتژی تکهبندی (Chunking) خود را اصلاح کنید
من قبلاً اسناد را بر اساس تعداد کاراکتر تقسیم میکردم. این یک اشتباه بود.
یک تکه (chunk) اغلب موضوعات مختلفی مثل ارسال و مرجوعی را با هم ترکیب میکرد. مدل اینها را با هم مخلوط میکرد و پاسخهای اشتباه تولید میکرد.
راه حل: من به تکهبندی معنایی (semantic chunking) روی آوردم. اکنون متن را بر اساس تیترها و پاراگرافها تقسیم میکنم.
۲. فقط به امتیازات شباهت (similarity scores) اعتماد نکنید
بازیاب (retriever) من سه تکه برتر را بر اساس شباهت کسینوسی (cosine similarity) استخراج میکرد.
«مشابه بودن» با «مرتبط بودن» یکی نیست. یک تکه میتواند به سوال شبیه باشد اما هیچ پاسخی در آن نباشد.
راه حل: من یک مرحله بازرتبهبندی (reranking) با استفاده از یک cross-encoder اضافه کردم. این کار به من کمک کرد بفهمم چه زمانی سیستم داده واقعی در اختیار ندارد.
۳. به مدل اجازه خطا کردن بدهید
پرامپت قدیمی من فقط میگفت: از متن (context) برای پاسخ به سوال استفاده کن.
اگر پاسخ در متن نبود، مدل شکافها را با حدس و گمان پر میکرد.
راه حل: من یک دستور مستقیم اضافه کردم: «اگر پاسخ در متن نیست، بگو نمیدانم». همین کار به تنهایی جلوی بیشتر توهمات را گرفت.
۴. یک آستانه بازیابی (retrieval threshold) تعیین کنید
گاهی اوقات وقتی بازیابی شکست میخورد، مدل از دانش عمومی خود استفاده میکرد. امیدوار بودم پرامپت کارساز باشد، اما امید داشتن استراتژی نیست.
راه حل: من یک حد نصاب امتیاز (score cutoff) اضافه کردم. اگر امتیاز بازیابی خیلی پایین باشد، سیستم یک پاسخ جایگزین (fallback) برمیگرداند. نبودِ متن یعنی نبودِ پاسخ.
۵. برای شکست تست کنید، نه برای موفقیت
من قبلاً فقط سوالات آسان را تست میکردم. پرسوجوهای مبهم و اطلاعات ناقص را نادیده میگرفتم.
راه حل: من یک مجموعه ارزیابی از «سوالات تله» ساختم. اینها مواردی هستند که پاسخ در آنها وجود ندارد. اجرای منظم این تستها دقیقاً نشان میدهد که سیستم شما در کجا دچار مشکل میشود.
RAG توهمات را از بین نمیبرد، بلکه آنها را قابل کنترل میکند.
بات من هنوز همه جزئیات را نمیداند، اما حالا وقتی مطمئن نیست، آن را اعتراف میکند. این باعث میشود قابل استفاده باشد.
Source: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10
Optional learning community: https://t.me/GyaanSetuAi