RAG (Retrieval-Augmented Generation) چیست؟
تکنیکی که قبل از پاسخدادن مدل زبانی، اطلاعات مرتبط را از یک منبع دانش خارجی بازیابی و به Prompt اضافه میکند تا پاسخ دقیقتر و بهروزتر باشد.
چرا مهم است؟
مدلهای زبانی فقط چیزی را میدانند که در زمان آموزش دیدهاند و دانش خصوصی/داخلی سازمان شما را ندارند؛ آموزش دوباره (Fine-tuning) مدل برای هر تغییر داده گران و کند است، درحالیکه RAG با فقط بهروزرسانی یک Vector Database، دانش مدل را «تازه» نگه میدارد و احتمال Hallucination (ساختن پاسخ نادرست با اعتمادبهنفس) را کم میکند.
تعریف
RAG یعنی قبل از اینکه مدل زبانی به سؤال کاربر پاسخ دهد، ابتدا مرتبطترین بخشهای دانش (از اسناد داخلی، مستندات محصول، پایگاهدانش) را بازیابی میکنیم و همراه سؤال به مدل میدهیم — مدل بهجای «حدسزدن از حافظه»، از همان متنهای دادهشده پاسخ میسازد.
پایپلاین معمول
- Chunking: شکستن اسناد به قطعات کوچکتر (مثلاً ۵۰۰ توکن با همپوشانی).
- Embedding: تبدیل هر قطعه به بردار و ذخیره در Vector Database.
- Retrieval: در زمان سؤال کاربر، تبدیل سؤال به بردار و پیدا کردن نزدیکترین قطعات.
- Augmentation: افزودن آن قطعات به Prompt بهعنوان Context.
- Generation: مدل بر اساس همان Context پاسخ میدهد.
مثال Prompt نهایی
از متن زیر برای پاسخ استفاده کن. اگر پاسخ در متن نبود، بگو «نمیدانم».
متن:
{{قطعات بازیابیشده از Vector Database}}
سؤال کاربر:
{{سؤال}}
اشتباه رایج
❌ Chunkهای خیلی بزرگ یا خیلی کوچک بدون تست — Chunk بزرگ باعث میشود مدل بین اطلاعات مرتبط و نامرتبط گم شود؛ Chunk خیلی کوچک باعث ازدسترفتن Context میشود. اندازه مناسب معمولاً باید برای هر نوع سند تست شود، نه یک عدد ثابت برای همه.
منبع و مطالعه بیشتر
خلاصه
RAG قبل از پاسخ مدل، بخشهای مرتبط دانش را از یک Vector Database بازیابی و به Prompt اضافه میکند تا پاسخ دقیقتر و مبتنی بر دانش واقعی/بهروز باشد، نه فقط حافظه مدل. پایپلاین آن Chunking → Embedding → Retrieval → Augmentation → Generation است. اندازه Chunk باید برای هر نوع سند تست شود. مرجع کامل: Microsoft Learn.
