تکنیکهای پیشرفته RAG لزوماً بهتر نیستند. آنها گاهی اوقات بهتر عمل میکنند.
تکنیکهای پیشرفته RAG ارتقاهای رایگان نیستند. آنها ابزارهایی با موازنههایی (tradeoffs) متفاوت هستند.
من پنج روش بازیابی (retrieval) را روی یک خط لوله (pipeline) RAG با استفاده از مستندات Anthropic آزمایش کردم. میخواستم ببینم کدامیک واقعاً ارزش پیچیدگیشان را دارند.
آنچه یافتم به شرح زیر است:
• Dense Retrieval: روش پایه. خوب عمل میکند اما کلمات دقیق را از دست میدهد. • Hybrid Search: از ترکیب جستجوی dense و جستجوی کلمات کلیدی استفاده میکند. کلمات دقیقی را که روش dense از دست میدهد، پیدا میکند. اما باید وزن نتایج را به درستی تنظیم کنید، وگرنه سیگنال اصلی از بین میرود. • Reranking: از یک cross-encoder برای امتیازدهی به کاندیداها استفاده میکند. زمانی که تکه (chunk) درست در سطوح پایین نتایج دفن شده باشد، به کمک میآید. • HyDE: از یک پاسخ فرضی برای یافتن دادهها استفاده میکند. این روش خطرناک است. برای پرسوجوهای (queries) غیررسمی کمک میکند، اما در پرسوجوهای مستقیم، همه چیز را خراب میکند. در یک آزمایش، Recall از 0.80 به 0.17 کاهش یافت. • Contextual Retrieval: خلاصهها را به تکهها (chunks) اضافه میکند. این کار به تکههای کوتاه کمک میکند اما هزینههای LLM را افزایش میدهد.
بزرگترین درس مربوط به HyDE است. این یک ابزار «تنظیم کن و فراموش کن» نیست. شما فقط زمانی باید از آن استفاده کنید که پرسوجوی کاربر و اسناد شما به زبانهای متفاوتی صحبت میکنند. برای تصمیمگیری در مورد زمان استفاده از آن، به یک router نیاز دارید.
همچنین درسی درباره اندازهگیری آموختم.
سعی کردم از Ragas برای ارزیابی استفاده کنم. خیلی کند بود و ساعتها وقت صرف تلاش مجدد برای فراخوانیهای ناموفق میکرد. تصمیم گرفتم harness ناهمگام (async) خودم را بسازم. به جای ۱۱ ساعت، ارزیابی من ۲۲۱ ثانیه طول کشید.
با ابزارهای هوش مصنوعی مانند جعبه سیاه برخورد نکنید. اگر ابزاری کند است یا با خطا مواجه میشود، به ریاضیات پشت آن نگاه کنید. اگر لازم است، راهکار خودتان را بسازید.
کار فقط اضافه کردن ویژگیهای جدید نیست. کار این است که اندازهگیری کنید کدام ویژگی ارزش قرار گرفتن در سیستم شما را دارد.
خلاصهای از زمان استفاده از هر کدام:
- Hybrid: زمانی استفاده کنید که پرسوجوها به پارامترهای دقیق متکی هستند.
- HyDE: زمانی استفاده کنید که پرسوجوها به درستی بیان نشدهاند.
- Reranking: زمانی استفاده کنید که بازیابی گسترده اما غیردقیق است.
- Contextual: زمانی استفاده کنید که تکههای شما فاقد بافت (context) هستند.
دست از دنبال کردن «آخرین فناوریهای روز» (state of the art) بردارید. اندازهگیری نتایج خود را شروع کنید.
Source: https://dev.to/yogesh23012001/advanced-rag-techniques-arent-better-theyre-better-sometimes-4m2o
Optional learning community: https://t.me/GyaanSetuAi
