اولین RAG همهی ما یک نسخهی ساده بود: سند را تکه کن، embedding بگیر، در پایگاه داده برداری بریز، موقع پرسش چند تکهی نزدیک بکش بیرون و بریز جلوی مدل. روی دموی پرسشهای تمیز، درخشان است؛ روی دادهی واقعی کاربر — پرسشهای کوتاه و مبهم، اصطلاحات درونسازمانی، اسناد ناهمگون — جوابها نوسان میکند. این شکستها پترن مشخصی دارند و برای هر کدام، تکنیک مشخصی ساخته شده. این مطلب مرور این تکنیکها در سه لایه است: قبل از بازیابی، خود بازیابی، و بعد از بازیابی.
کجای RAG ساده میشکند؟
چهار شکست پرتکرار: ناهمخوانی واژگان — کاربر میگوید «اشتراکم رو قطع کنید» و سند نوشته «لغو حق اشتراک»؛ بردار معنا را میگیرد اما نه همیشه، بهخصوص برای اصطلاحات فنی و نام محصولات. پرسشهای چندمرحلهای — «قرارداد X که سال پیش امضا شد، چه فرقی با فرم فعلی دارد؟» با یک جستجوی واحد حل نمیشود. پرسش مبهم — «بیشترین هزینه کجاست؟» بدون معلومشدن مرجع، بازیابی را به سمت اشتباه میفرستد. و سیل یا قحطی نتیجه — یا ده تکهی بیربط میآید یا هیچکدام؛ هر دو حالت، مدل را تنها میگذارد.
لایهی اول: پرسش را قبل از جستجو درست کنید
ارزانترین ارتقا، سرمایهگذاری روی خود پرسش است. بازنویسی: مدل کوچکی پرسش گفتاری کاربر را به شکل استاندارد اسناد بازنویسی میکند — ضمیرها را حل میکند، اختصارات را باز میکند. در گفتگوهای چندنوبتی، بازنویسی «پرسش مستقل» حیاتی است چون بردار پرسشِ «اون مورد دوم چی شد؟» هیچ است. تجزیه به زیرپرسشها: پرسش چندبخشی را به چند پرسش ساده بشکنید، هرکدام را جدا بازیابی کنید و جوابها را در پاسخ نهایی ترکیب کنید. جستجو با پاسخ فرضی: بگذارید مدل یک جواب حدسی بنویسد و با همان جستجو کنید؛ جوابها و اسناد اغلب همقالبتر از پرسشها هستند و این سادهنمایی جالب، در بازیابی دشوار جواب میدهد. هزینهی همهی اینها یک درخواست اضافهی مدل کوچک است — حسابش در راهنمای هزینه.
لایهی دوم: بازیابی ترکیبی
جستجوی برداری معنا را میگیرد اما واژهی دقیق را نه؛ جستجوی کلیدواژهای (نوع BM25) دقیقاً برعکس. شمارهی پرونده، نام مدل، خطای سیستم، اصطلاح حقوقی — اینها را کلیدواژه بهتر پیدا میکند. راهحل، بازیابی ترکیبی است: هر دو موتور را اجرا کنید و نتایج را با روش RRF ادغام کنید — سندی که در هر دو رتبه بالا گرفته، احتمالاً واقعاً مرتبط است. هزینهی این لایه تقریباً صفر و بازدهاش در سیستمهای واقعی از هر تکنیک دیگری پایدارتر است. کنارش، ایندکسگذاری را هم متنوع کنید: تیتر و متادیتا را جدا ایندکس کنید و برای اسناد ساختیافته، تکهبندی را روی مرز منطقی بگذارید نه وسط جدول.
لایهی سوم: بازمرتبسازی
بازیابی سریع است چون تقریبی است؛ حالا وقت دقت است. بازمرتبساز (cross-encoder) هر کاندید را با پرسش کنار هم میخواند و امتیاز مرتبطبودن واقعی میدهد — کاری که مدل embedding در مقیاس بزرگ نمیتواند انجام دهد. الگوی استاندارد: از بازیابی، ۵۰ کاندید بگیرید؛ بازمرتبساز آنها را رتبه کند؛ فقط ۵ تا ۱۰ تای اول به پرامپت برود. بازدهی این مرحله معمولاً از هر بهینهسازی دیگری بیشتر است، چون کیفیت زمینهی جلوی مدل مستقیم روی توهمزایی و کیفیت پاسخ اثر میگذارد. مکملش فشردهسازی زمینه است: بهجای کل تکه، فقط جملههای مرتبط با پرسش را نگه دارید تا زمینهی تمیزتر و ارزانتر شود.
RAG خوب مثل کارکنان تجاری است: یکبار جستجو نمیکند؛ پرسش را مرتب میکند، از چند در جستجو میکند و قبل از تحویل، دوباره مرتبترینها را انتخاب میکند.
حلقهای که همهچیز را کنار هم نگه میدارد: ارزیابی
هر لایهی اضافه یعنی تنظیم اضافه: چند کاندید؟ چند تکهی نهایی؟ وزن هر موتور؟ بدون سنجش، این تنظیمها حدسوگماناند. از روز اول دو عدد را جدا دنبال کنید: کیفیت بازیابی (آیا سند درست اصلاً پیدا میشود؟) و کیفیت پاسخ (آیا جواب نهایی درست و وفادار به منبع است؟) — چارچوب و سنجهها در ارزیابی سیستمهای RAG آمده. قاعدهی سرانگشتی: اول بازیابی ترکیبی و بازمرتبسازی را اضافه کنید که بازده به هزینهشان بالا است؛ تکنیکهای پیچیدهتر را فقط وقتی بگذارید که ارزیابی نشان دهد گلوگاه کجاست.
جمعبندی
RAG پیشرفته یک تکنیک نیست؛ یک خط لوله است: پرسش تمیز شود، بازیابی ترکیبی پوشش بدهد، بازمرتبساز دقت بدهد و ارزیابی مداوم نشان دهد کجا میشکند. اگر الان فقط جستجوی برداری ساده دارید، همین دو قدم — ترکیبی + rerank — معمولاً بزرگترین جهش را میدهد. برای شروع ساخت از پایه، آموزش ساخت RAG را ببینید، درسهای فرق RAG و تنظیم دقیق را در RAG در برابر Fine-tuning، و برای تست روی اسناد واقعی خودتان یک حساب بسازید.