RAG چیست؟
اگر از یک مدل هوش مصنوعی دربارهٔ اطلاعات داخلی شرکت خود سؤال کنید، احتمالاً پاسخ دقیقی دریافت نمیکنید. دلیل ساده است: مدل هنگام آموزش به فایلها، دیتابیس، مستندات یا اطلاعات اختصاصی سازمان شما دسترسی نداشته است. یکی از راههای حل این مشکل، RAG یا Retrieval-Augmented Generation است.
در RAG بهجای اینکه همهٔ اطلاعات جدید را وارد فرایند آموزش مدل کنیم، ابتدا اطلاعات مرتبط با سؤال کاربر از یک منبع خارجی پیدا میشود و سپس همراه سؤال در اختیار مدل قرار میگیرد. به زبان ساده:
کاربر سؤال میپرسد → سیستم اطلاعات مرتبط را پیدا میکند → اطلاعات همراه سؤال برای مدل ارسال میشود → مدل پاسخ میدهد.
همین ایدهٔ ساده پایهٔ تعداد زیادی از چتباتهای سازمانی و سیستمهای هوش مصنوعی مبتنی بر اسناد است.
RAG دقیقاً چگونه کار میکند؟
فرض کنید یک شرکت ۲۰ هزار صفحه مستندات فنی دارد. در مرحلهٔ اول، اسناد معمولاً به قطعات کوچکتری تقسیم میشوند. سپس هر قسمت توسط یک مدل Embedding به مجموعهای از اعداد تبدیل میشود و این بردارها داخل یک Vector Database ذخیره میشوند.
وقتی کاربر میپرسد «شرایط مرجوع کردن کالا بعد از ۷ روز چیست؟»، سیستم ابتدا بخشهایی از اسناد را که از نظر معنایی به این سؤال نزدیک هستند پیدا میکند؛ سپس متن همان بخشها به مدل زبانی داده میشود تا پاسخ را بر اساس اطلاعات واقعی سازمان تولید کند.
اگر دربارهٔ این قسمت کنجکاو هستید، مقالهٔ Embedding و Vector Database چیست؟ توضیح فنیتری دربارهٔ این فرایند ارائه میکند.
چرا اطلاعات را مستقیماً داخل Prompt قرار ندهیم؟
برای تعداد کمی سند این روش ممکن است جواب بدهد، اما تصور کنید چند گیگابایت PDF، مستندات، قرارداد، Wiki، تیکت پشتیبانی و اطلاعات محصول دارید. ارسال همهٔ این اطلاعات در هر درخواست:
- هزینهٔ Token را بالا میبرد
- زمان پاسخ را افزایش میدهد
- ممکن است از Context Window مدل عبور کند
- باعث ورود اطلاعات غیرمرتبط به Prompt میشود
RAG تلاش میکند فقط بخشهایی را وارد Context کند که احتمالاً برای پاسخ لازم هستند.
RAG چه کاربردهایی دارد؟
یکی از رایجترین کاربردها ساخت دستیار داخلی سازمان است: کارمند میتواند سؤالی دربارهٔ آییننامه، محصول یا فرایند شرکت بپرسد و سیستم پاسخ را از مستندات داخلی پیدا کند. کاربردهای دیگر شامل سیستم پشتیبانی مشتری، جستجوی هوشمند مستندات فنی، تحلیل قراردادها، دستیار برنامهنویسی متصل به Repository و سیستمهای پرسش و پاسخ روی کتابها و مقالات است.
آیا RAG باعث میشود مدل همهٔ اطلاعات را یاد بگیرد؟
خیر. این یکی از سوءتفاهمهای رایج دربارهٔ RAG است. در RAG وزنهای مدل تغییر نمیکنند؛ مدل صرفاً هنگام پاسخ دادن اطلاعات مرتبط را دریافت میکند و بعد از پایان درخواست نیز لزوماً آن اطلاعات را «یاد نگرفته» است.
اگر هدف تغییر رفتار یا تخصص دائمیتر یک مدل باشد، روشهایی مثل Fine-tuning مطرح میشوند. تفاوت این دو روش را در مقالهٔ RAG یا Fine-tuning؛ کدام بهتر است؟ بررسی کردهایم.
مزایای RAG
مزیت مهم RAG این است که اطلاعات را میتوان بدون آموزش مجدد مدل بهروز کرد. فرض کنید قیمت محصولات هر روز تغییر میکند؛ کافی است منبع اطلاعاتی یا ایندکس بهروز شود و لازم نیست مدل دوباره آموزش داده شود.
همچنین میتوان پاسخ را به منبع اصلی متصل کرد؛ مثلاً سیستم علاوه بر جواب، نام سند یا صفحهای که اطلاعات از آن استخراج شده را نمایش دهد. این قابلیت برای محیطهای سازمانی بسیار مهم است.
محدودیتهای RAG
RAG جادو نیست: اگر مرحلهٔ Retrieval اطلاعات اشتباه پیدا کند، مدل نیز احتمالاً پاسخ نامناسبی تولید میکند. کیفیت یک سیستم RAG به عوامل مختلفی وابسته است: کیفیت اسناد، روش Chunking، مدل Embedding، نوع Vector Database، الگوریتم Retrieval، Reranking و نحوهٔ ساخت Prompt. به همین دلیل دو سیستم که هر دو از یک مدل زبانی استفاده میکنند ممکن است کیفیت بسیار متفاوتی داشته باشند.
RAG با مدل ابری یا Self-Hosted؟
هر دو امکانپذیر است: میتوان Vector Database و اسناد را داخل شبکهٔ سازمان نگه داشت و فقط بخشهای انتخابشده را برای API یک مدل ابری ارسال کرد؛ همچنین میتوان کل سیستم، شامل LLM، Embedding و Vector Database را داخل زیرساخت خود سازمان اجرا کرد. مقایسهٔ این معماریها را در Cloud AI یا Self-Hosted یا Hybrid؟ بخوانید.
جمعبندی
RAG روشی برای متصل کردن مدلهای زبانی به اطلاعاتی است که هنگام آموزش در اختیار آنها نبوده است. بهجای آموزش دوبارهٔ مدل، اطلاعات مورد نیاز در لحظه پیدا شده و در اختیار LLM قرار میگیرد. برای بسیاری از پروژههای سازمانی، RAG اولین روشی است که قبل از Fine-tuning ارزش بررسی دارد.