مفهوم اصلی
مدلهای زبانی بزرگ (LLM - Large Language Models) ابزارهای قدرتمندی هستند که میتوانند وظایف مختلفی انجام دهند، مانند:
- پاسخ دادن به سؤالها
- خلاصهسازی و بازنویسی متن
- ارائه بازخورد روی اسناد
- تولید کد
- و بسیاری از کارهای دیگر
این قابلیتها تا چند سال قبل برای کامپیوترها بسیار دشوار یا غیرممکن به نظر میرسیدند و تعامل با یک LLM گاهی شبیه کار کردن با یک انسان احساس میشود.
اما LLMها محدودیتهایی دارند؛ آنها همیشه اطلاعات مورد نیاز برای پاسخ دقیق را ندارند.
RAG روشی است که با دادن دسترسی به اطلاعاتی که LLM در زمان آموزش خود ندیده است، عملکرد آن را بهبود میدهد.
ایده اصلی RAG با یک مثال
مثال اول: سؤال عمومی
فرض کنید سؤال زیر پرسیده شود:
چرا هتلها در آخر هفته گرانتر هستند؟
پاسخ دادن به این سؤال نیاز به اطلاعات خاصی ندارد.
با دانش عمومی میتوان پاسخ داد:
- افراد بیشتری در آخر هفته سفر میکنند.
- تقاضا برای اتاقهای هتل افزایش پیدا میکند.
- رقابت برای رزرو اتاق بیشتر میشود.
- بنابراین قیمتها افزایش پیدا میکنند.
در این حالت نیازی به جمعآوری اطلاعات جدید نیست.
مثال دوم: سؤال نیازمند اطلاعات جدید
حالا سؤال:
چرا هتلهای ونکوور در آخر هفته آینده بسیار گران هستند؟
برای پاسخ دقیق، اطلاعات بیشتری نیاز است.
با جستجو ممکن است مشخص شود:
- ستاره بینالمللی Taylor Swift در آن آخر هفته در ونکوور برای اجرای دو شب حضور دارد.
با اضافه شدن این اطلاعات، پاسخ دقیقتر میشود.
مثال سوم: سؤال تخصصی
سؤال:
چرا ونکوور ظرفیت هتل بیشتری نزدیک مرکز شهر ندارد؟
برای پاسخ دادن، فقط دانش عمومی کافی نیست.
نیاز به تحقیق درباره مواردی مانند:
- تاریخ توسعه شهر ونکوور
- برنامهریزی شهری
- عوامل مؤثر بر توسعه شهری
وجود دارد.
یعنی برای پاسخ به این سؤال باید به حجم زیادی از اطلاعات تخصصی دسترسی داشت.
دو مرحله اصلی پاسخ دادن
فرآیند پاسخدهی را میتوان به دو مرحله تقسیم کرد:
مرحله اول: جمعآوری اطلاعات (Information Collection)
ابتدا اطلاعات مورد نیاز برای پاسخ جمعآوری میشود.
مرحله دوم: استدلال و تولید پاسخ (Reasoning & Response)
سپس بر اساس اطلاعات جمعآوریشده، پاسخ ساخته میشود.
مفهوم Retrieval و Generation در RAG
در سیستمهای RAG، این دو مرحله نام مشخصی دارند:
Retrieval
فرآیند پیدا کردن و جمعآوری اطلاعات مفید.
مثلاً:
- جستجو در یک پایگاه دانش
- پیدا کردن اسناد مرتبط
- استخراج اطلاعات مورد نیاز
Generation
فرآیند استفاده از اطلاعات پیدا شده برای تولید پاسخ.
در این مرحله LLM اطلاعات را تحلیل کرده و پاسخ نهایی را ایجاد میکند.
چرا LLM به Retrieval نیاز دارد؟
LLMها را میتوان مانند فردی تصور کرد که:
- دانش عمومی زیادی دارد.
- با حجم عظیمی از اطلاعات موجود در اینترنت آموزش دیده است.
وقتی یک Prompt به LLM ارسال میشود، مدل از اطلاعاتی که در زمان آموزش یاد گرفته استفاده میکند.
برای بسیاری از سؤالها این روش کافی است.
اما در برخی موارد، LLM اطلاعات لازم را ندارد.
محدودیتهای LLM
LLM ممکن است اطلاعات لازم برای پاسخ دقیق را نداشته باشد، زیرا:
1. اطلاعات جدید هستند
مثلاً:
- یک اتفاق یا خبر جدید که بعد از آموزش مدل رخ داده است.
2. اطلاعات تخصصی یا خصوصی هستند
مثلاً:
- دیتابیس داخلی یک شرکت
- اسناد محرمانه
- اطلاعاتی که عمومی نیستند
3. اطلاعات در دادههای آموزشی وجود نداشتهاند
با توجه به اینکه هر روز اطلاعات جدید منتشر میشود، همیشه دادههایی وجود دارند که LLM آنها را ندیده است.
راهحل RAG
ایده اصلی RAG این است:
قبل از ارسال Prompt به LLM، آن را با اطلاعات مفید تکمیل کنیم.
یعنی به جای اینکه فقط سؤال کاربر ارسال شود:
User Question
سیستم RAG اطلاعات مرتبط را پیدا کرده و Prompt را تغییر میدهد:
User Question + Retrieved Information
سپس Prompt کاملشده به LLM ارسال میشود.
روند کار یک سیستم RAG
مثال:
سؤال:
چرا هتلهای ونکوور این آخر هفته بسیار گران هستند؟
مرحله ۱: Retrieval
سیستم ابتدا اطلاعات مرتبط را پیدا میکند.
مثلاً:
- رویداد Taylor Swift
- افزایش تعداد مسافران
- کاهش ظرفیت هتلها
مرحله ۲: ایجاد Prompt تقویتشده
اطلاعات پیدا شده به سؤال اصلی اضافه میشود.
مرحله ۳: Generation
LLM با استفاده از اطلاعات جدید پاسخ دقیقتری تولید میکند.
نقش Retriever در RAG
کامپوننتی که مسئول Retrieval است، Retriever نام دارد.
وظایف Retriever:
- مدیریت یک Knowledge Base
- نگهداری اطلاعات معتبر، مرتبط و حتی خصوصی
- پیدا کردن اطلاعات مناسب برای هر سؤال
روند کار:
- دریافت Prompt از کاربر
- جستجو در Knowledge Base
- استخراج مرتبطترین اطلاعات
- ارسال اطلاعات به LLM
- استفاده LLM از اطلاعات برای تولید پاسخ
معنی نام Retrieval-Augmented Generation
نام RAG از سه بخش تشکیل شده است:
Retrieval
بازیابی اطلاعات مرتبط از یک منبع اطلاعاتی.
Augmented
تقویت یا تکمیل کردن Prompt با اطلاعات اضافی.
Generation
تولید پاسخ توسط LLM.
به زبان ساده:
RAG یعنی قبل از اینکه LLM پاسخ تولید کند، اطلاعات مرتبط را از یک Knowledge Base پیدا کنیم و به آن بدهیم تا پاسخ بهتر و دقیقتری ایجاد کند.
جمعبندی
- LLMها توانایی زیادی در تولید متن دارند، اما همیشه اطلاعات مورد نیاز را ندارند.
- RAG با اضافه کردن مرحله Retrieval، اطلاعات مرتبط را قبل از تولید پاسخ در اختیار LLM قرار میدهد.
- Retrieval یعنی پیدا کردن اطلاعات مفید.
- Generation یعنی تولید پاسخ بر اساس اطلاعات موجود.
- Retriever مسئول پیدا کردن اطلاعات از Knowledge Base است.
- RAG باعث میشود LLM بتواند با اطلاعات جدید، تخصصی یا خصوصی کار کند.
- ایده اصلی RAG: بهبود پاسخ LLM با افزودن اطلاعات بازیابیشده قبل از تولید پاسخ است.