مفهوم اصلی
در یک سیستم RAG (Retrieval-Augmented Generation) سه جزء اصلی وجود دارد:
LLM (Large Language Model)
مدل زبانی که وظیفه تولید پاسخ را بر عهده دارد.Knowledge Base
مجموعهای از اطلاعات مرتبط که میتواند شامل اسناد و دادههای مفید باشد.Retriever
بخشی که وظیفه جستجو در Knowledge Base و پیدا کردن اطلاعات مرتبط را دارد.
تفاوت اصلی بین استفاده مستقیم از LLM و استفاده از RAG، اضافه شدن مرحله Retrieval توسط Retriever است.
نحوه کار معمول یک LLM
در حالت عادی:
- کاربر یک Prompt وارد میکند.
- Prompt به LLM ارسال میشود.
- LLM آن را پردازش کرده و پاسخ تولید میکند.
روند ساده:
User Prompt → LLM → Response
نحوه کار یک سیستم RAG
از دید کاربر، تجربه استفاده از RAG مانند یک LLM معمولی است:
- کاربر سؤال میپرسد.
- پاسخ دریافت میکند.
اما در داخل سیستم مراحل بیشتری انجام میشود.
مراحل پردازش در RAG
مرحله ۱: دریافت Prompt
سیستم RAG سؤال کاربر را دریافت میکند.
مثال:
چرا هتلهای ونکوور در آخر هفته آینده بسیار گران هستند؟
مرحله ۲: ارسال سؤال به Retriever
Prompt ابتدا به Retriever ارسال میشود.
Retriever به یک Knowledge Base دسترسی دارد.
از نظر عملی، Knowledge Base معمولاً یک پایگاه داده شامل اسناد مفید است.
مرحله ۳: جستجو در Knowledge Base
Retriever پایگاه داده را جستجو میکند و اسنادی را که مرتبطترین اطلاعات را دارند پیدا میکند.
خروجی:
- چند سند مرتبط
- اطلاعات مورد نیاز برای پاسخ
مرحله ۴: ساخت Prompt تقویتشده (Augmented Prompt)
سیستم اطلاعات پیدا شده را به Prompt اصلی اضافه میکند.
مثال:
Answer the following question:
Why are hotels in Vancouver so expensive this coming weekend?
Here are five relevant articles that may help you respond:
[متن مقالات مرتبط]
در این مرحله، سؤال اصلی همراه با اطلاعات اضافی به LLM داده میشود.
مرحله ۵: تولید پاسخ توسط LLM
اکنون سیستم مانند یک LLM معمولی عمل میکند.
Prompt تقویتشده به LLM ارسال میشود و مدل پاسخ را تولید میکند.
LLM از دو منبع اطلاعات استفاده میکند:
- دانش موجود در دادههای آموزشی خودش
- اطلاعات اضافی دریافتشده از اسناد بازیابیشده
مزایای معماری RAG
1. دسترسی LLM به اطلاعاتی که در آموزش آن وجود نداشته است
مهمترین مزیت RAG این است که اطلاعات جدید یا اختصاصی را در اختیار LLM قرار میدهد.
نمونه اطلاعات:
- سیاستهای شرکت
- اطلاعات شخصی
- اخبار جدید
در بسیاری از موارد، RAG تنها راه فراهم کردن چنین اطلاعاتی برای LLM است.
2. کاهش Hallucination (توهم مدل)
مفهوم Hallucination
گاهی LLM درباره موضوعاتی پاسخ تولید میکند که:
- در دادههای آموزشی آن وجود نداشتهاند.
- یا اطلاعات بسیار کمی درباره آنها داشته است.
در نتیجه ممکن است پاسخ:
- عمومی
- اشتباه
- گمراهکننده
باشد.
نقش RAG در کاهش Hallucination
با اضافه کردن اطلاعات مرتبط داخل Prompt:
- پاسخ LLM به اطلاعات واقعیتر متصل میشود.
- احتمال تولید متن اشتباه کاهش پیدا میکند.
- پاسخها کمتر عمومی و گمراهکننده میشوند.
3. بهروزرسانی آسان اطلاعات LLM
مشکل مدلهای زبانی
آموزش مجدد یک LLM:
- هزینه زیادی دارد.
- زمانبر است.
به همین دلیل مدلها نمیتوانند همیشه اطلاعات جدید را یاد بگیرند.
راهحل RAG
در RAG نیازی به آموزش دوباره مدل نیست.
فقط کافی است اطلاعات موجود در Knowledge Base بهروزرسانی شود.
مانند بهروزرسانی یک دیتابیس معمولی.
پس از Index شدن اطلاعات جدید:
- LLM میتواند بر اساس دادههای جدید پاسخ دهد.
4. امکان ارائه Source و Citation
RAG میتواند اطلاعات مربوط به منبع را نیز به Prompt اضافه کند.
LLM سپس میتواند:
- پاسخ را همراه با منبع ارائه دهد.
- امکان بررسی و اعتبارسنجی پاسخ را برای کاربر فراهم کند.
مزیت:
- افزایش اعتماد به پاسخ
- امکان بررسی عمیقتر اطلاعات
5. تمرکز هر بخش روی وظیفه اصلی خود
در معماری RAG، هر جزء کاری را انجام میدهد که در آن بهتر است.
Retriever
وظیفه:
- جستجو در حجم زیادی از اطلاعات
- فیلتر کردن اطلاعات مهم
- پیدا کردن مرتبطترین محتوا
LLM
وظیفه:
- تولید متن مناسب
- ساخت پاسخ نهایی
در نتیجه LLM مجبور نیست:
- تمام اطلاعات جهان را جستجو کند.
- خودش مرحله پیدا کردن اطلاعات را انجام دهد.
نمونه ساده پیادهسازی RAG
در یک مثال ساده، دو تابع اصلی وجود دارد:
تابع Retrieve
یک Wrapper برای Retriever است.
ورودی:
Text Query
خروجی:
Relevant Documents
وظیفه:
- دریافت سؤال
- پیدا کردن اسناد مرتبط از Knowledge Base
تابع Generate
یک Wrapper برای LLM است.
ورودی:
Text Prompt
خروجی:
LLM Response
وظیفه:
- ارسال Prompt به مدل
- دریافت پاسخ
روند مثال عملی
سؤال کاربر:
Why are hotel prices in Vancouver super expensive this weekend?
حالت اول: ارسال مستقیم به LLM
User Question
↓
LLM
↓
Response
حالت دوم: استفاده از RAG
1. Retrieval
Retriever اطلاعات مرتبط را پیدا میکند.
2. ساخت Prompt تقویتشده
ترکیب:
Original Question
+
Retrieved Documents
3. ارسال به LLM
LLM پاسخ را با استفاده از اطلاعات جدید تولید میکند.
نتیجه:
- پاسخ دقیقتر
- استفاده از اطلاعات Knowledge Base
جمعبندی
- معماری RAG از سه بخش اصلی تشکیل شده است: LLM، Retriever و Knowledge Base.
- تفاوت اصلی RAG با LLM معمولی، اضافه شدن مرحله Retrieval است.
- Retriever اطلاعات مرتبط را از Knowledge Base پیدا میکند.
- اطلاعات بازیابیشده به Prompt اضافه میشوند و یک Augmented Prompt ساخته میشود.
- LLM با استفاده از دانش قبلی خود و اطلاعات جدید پاسخ تولید میکند.
- RAG باعث کاهش Hallucination، افزایش دقت، امکان استفاده از اطلاعات خصوصی و بهروزرسانی آسانتر میشود.
- در RAG، Retriever مسئول پیدا کردن اطلاعات و LLM مسئول تولید پاسخ است.