مفهوم اصلی
در یک سیستم RAG (Retrieval-Augmented Generation)، وظیفه اصلی Retriever این است که اطلاعات مفیدی را در اختیار LLM قرار دهد؛ بهخصوص اطلاعاتی که ممکن است هنگام آموزش مدل در دسترس آن نبوده باشند.
Retriever کمک میکند LLM بتواند با استفاده از اطلاعات خارج از دادههای آموزشی خود، پاسخهای دقیقتر و مرتبطتری تولید کند.
تشبیه Retriever با کتابخانه
برای درک بهتر عملکرد Retriever، میتوان آن را با یک کتابخانه مقایسه کرد.
فرض کنید میخواهید به سؤال زیر پاسخ دهید:
چگونه میتوانم پیتزای سبک نیویورکی را در خانه درست کنم؟
در یک کتابخانه:
- تعداد زیادی کتاب درباره موضوعات مختلف وجود دارد.
- کتابها بر اساس ویژگیهایی مانند:
- موضوع
- ژانر
- نویسنده
- دستهبندی
در بخشها و قفسههای مختلف قرار گرفتهاند.
نقش کتابدار
اگر سؤال خود را با کتابدار مطرح کنید، کتابدار:
- معنی سؤال شما را درک میکند.
- بخشهای مرتبط کتابخانه را پیدا میکند.
- کتابهای مناسب را پیشنهاد میدهد.
مثلاً برای سؤال درباره پیتزای نیویورکی، ممکن است به دنبال کتابهایی در بخش:
- آشپزی
- غذاهای ایتالیایی
- غذاهای نیویورکی
بگردد.
ارتباط کتابخانه با Retriever
اجزای Retriever مشابه کتابخانه هستند.
| کتابخانه | سیستم RAG |
|---|---|
| مجموعه کتابها | Knowledge Base شامل اسناد |
| دستهبندی و قفسهبندی | Index |
| کتابدار | Retriever |
| سؤال مراجعهکننده | Prompt کاربر |
Knowledge Base و Index
Knowledge Base
در RAG، به جای کتابها، یک مجموعه از اسناد داریم.
این اسناد میتوانند شامل:
- فایلها
- متنها
- اطلاعات سازمانی
- دادههای مختلف
باشند.
Index
Retriever ابتدا یک Index از اسناد Knowledge Base ایجاد میکند.
هدف Index:
- سازماندهی اسناد
- آسانتر کردن جستجو
- پیدا کردن سریع اطلاعات مرتبط
است.
فرآیند کار Retriever
Retriever چند مرحله اصلی دارد:
مرحله ۱: پردازش Prompt
ابتدا Retriever سؤال کاربر را دریافت میکند.
سپس تلاش میکند:
- معنی سؤال را بفهمد.
- مفهوم اصلی آن را استخراج کند.
مثلاً سؤال:
چگونه پیتزای سبک نیویورکی درست کنم؟
فقط دنبال کلمات "پیتزا" و "نیویورک" نیست، بلکه مفهوم کلی سؤال را درک میکند.
مرحله ۲: جستجو در Index
Retriever با استفاده از درک خود از سؤال، در Index اسناد جستجو میکند.
مرحله ۳: بازگرداندن اسناد مرتبط
Retriever اسنادی را که بیشترین ارتباط را با Prompt دارند برمیگرداند.
این اسناد سپس در اختیار LLM قرار میگیرند.
رتبهبندی اسناد (Document Ranking)
Retriever تمام اسناد را به یک شکل برنمیگرداند.
ابتدا میزان ارتباط هر سند با Prompt را محاسبه میکند.
برای هر سند:
- یک امتیاز عددی (Score) تعیین میشود.
- این امتیاز میزان ارتباط سند با سؤال را نشان میدهد.
معمولاً این امتیاز بر اساس:
- میزان شباهت متن Prompt
- میزان شباهت متن سند
محاسبه میشود.
انتخاب اسناد نهایی
اسنادی که بالاترین امتیاز را دارند انتخاب و به LLM ارسال میشوند.
روشهای مختلفی برای محاسبه این Similarity Score وجود دارد که در ادامه دوره بررسی خواهند شد.
اهمیت حذف اطلاعات غیرمرتبط
یک Retriever خوب فقط نباید اطلاعات مرتبط را پیدا کند؛ بلکه باید اطلاعات غیرمرتبط را نیز حذف کند.
مثال:
اگر سؤال درباره:
روش تهیه پیتزای نیویورکی در خانه
باشد، اگر Retriever تمام اسناد موجود در Knowledge Base را ارسال کند:
- شاید اطلاعات مرتبط وجود داشته باشد.
- اما در میان حجم زیادی از اطلاعات بیربط گم میشود.
مشکل ارسال اطلاعات زیاد
ارسال اسناد زیاد باعث میشود:
- Prompt بزرگتر شود.
- هزینه پردازش افزایش پیدا کند.
- ممکن است Context Window مدل کاملاً پر شود.
مشکل انتخاب تعداد اسناد
از طرف دیگر، اگر فقط چند سند اول انتخاب شوند:
ممکن است اطلاعات مفیدی در اسناد رتبه:
- دوم
- سوم
- چهارم
وجود داشته باشد که از دست بروند.
چالش طراحی Retriever
در حالت ایدهآل:
Retriever باید:
- اسناد را کاملاً درست رتبهبندی کند.
- دقیقاً تعداد مناسب سند را انتخاب کند.
اما در عمل:
- بعضی اسناد مرتبط ممکن است رتبه پایین بگیرند.
- بعضی اسناد غیرمرتبط ممکن است رتبه بالا بگیرند.
بنابراین تعیین تعداد مناسب اسناد دشوار است.
بهینهسازی Retriever
برای بهبود عملکرد Retriever باید:
- عملکرد آن در طول زمان بررسی شود.
- تنظیمات مختلف آزمایش شوند.
- رفتار آن Monitoring شود.
در طول دوره، روشهای مختلف بهینهسازی Retriever بررسی خواهند شد.
ارتباط Retriever با سیستمهای دیگر
بسیاری از نرمافزارهای آشنا نیز عملکرد مشابه Retriever دارند.
موتور جستجوی وب
وظیفه:
- دریافت Query
- پیدا کردن صفحات مرتبط وب
پایگاه داده رابطهای (Relational Database)
وظیفه:
- دریافت SQL Query
- پیدا کردن رکوردها و جدولهای مرتبط
Information Retrieval چیست؟
حوزه Information Retrieval قبل از توسعه LLMها وجود داشته است.
این حوزه درباره:
- پیدا کردن اطلاعات مرتبط از حجم زیادی داده
است.
ایدههای این حوزه پایه طراحی Retrieverها و سیستمهای RAG هستند.
پیادهسازی Retriever
از نظر تئوری روشهای مختلفی برای ساخت Retriever وجود دارد.
یکی از گزینهها:
استفاده از دیتابیسهای رابطهای موجود.
چون بسیاری از شرکتها اطلاعات خود را در دیتابیسهای سنتی نگهداری میکنند، استفاده از همان دادهها برای RAG جذاب است.
Vector Database در Retriever
اگرچه Vector Database الزامی نیست، اما در سیستمهای بزرگ و Production معمولاً Retrieverها بر پایه آن ساخته میشوند.
Vector Database چیست؟
نوع خاصی از دیتابیس که برای پیدا کردن سریع اسنادی طراحی شده است که بیشترین شباهت را با Prompt دارند.
مزیت:
- جستجوی سریع در حجم زیاد اطلاعات
- پیدا کردن اسناد مشابه از نظر معنایی
محتوای این دوره درباره Retriever
در ادامه دوره دو موضوع اصلی بررسی میشوند:
1. اصول کلی Information Retrieval
برای درک روشهای مختلف جستجو و بازیابی اطلاعات.
2. Vector Database
برای ساخت Retriever در سیستمهای RAG در مقیاس Production.
جمعبندی
- Retriever وظیفه فراهم کردن اطلاعات مورد نیاز LLM را بر عهده دارد.
- Retriever با جستجو در Knowledge Base، اسناد مرتبط را پیدا میکند.
- برای جستجوی سریع، اسناد معمولاً Index میشوند.
- Retriever ابتدا معنی Prompt را درک کرده و سپس اسناد مرتبط را پیدا میکند.
- هر سند یک امتیاز ارتباط دریافت میکند و اسناد با امتیاز بالاتر انتخاب میشوند.
- ارسال بیش از حد اطلاعات باعث افزایش هزینه و پر شدن Context Window میشود.
- انتخاب تعداد مناسب اسناد یکی از چالشهای مهم طراحی Retriever است.
- Vector Database در سیستمهای RAG بزرگ معمولاً پایه اصلی Retriever است.