مفهوم اصلی
در بخشهای قبلی، سه تکنیک اصلی مورد استفاده در Retriever بررسی شدند:
- Metadata Filtering
- Keyword Search
- Semantic Search
هر کدام از این روشها نقاط قوت و ضعف متفاوتی دارند.
ایده Hybrid Search این است که این تکنیکها را با هم ترکیب کنیم تا Retriever بتواند از مزایای هر روش استفاده کند.
مرور تکنیکهای Retrieval
1. Metadata Filtering
مفهوم
Metadata Filtering با استفاده از معیارهای ثابت موجود در Metadata اسناد، نتایج جستجو را محدود میکند.
مثال Metadata:
- نوع سند
- سطح دسترسی
- بخش سازمانی
- تاریخ ایجاد
مزایا
- سریع است.
- پیادهسازی آن ساده است.
- رفتار آن قابل درک و قابل پیشبینی است.
محدودیت
Metadata Filtering بهتنهایی یک روش جستجوی واقعی نیست.
اما یک ویژگی مهم دارد:
تنها روشی است که میتواند یک فیلتر قطعی Yes/No روی اسناد اعمال کند.
مثلاً:
- این کاربر اجازه دیدن این سند را دارد یا ندارد.
- این سند مربوط به این بخش سازمانی است یا نیست.
2. Keyword Search
مفهوم
Keyword Search اسناد را بر اساس وجود کلمات مشابه با Prompt رتبهبندی میکند.
مزایا
- سریع است.
- ساده پیادهسازی میشود.
- در بسیاری از موارد عملکرد بسیار خوبی دارد.
بهترین کاربرد
زمانی که Prompt و Document شامل:
- اصطلاحات فنی
- نام دقیق محصولات
- کلمات تخصصی
باشند.
مثال:
جستجوی:
Cisco Catalyst 9300 configuration
نیاز به تطابق دقیق کلمات دارد.
محدودیت
Keyword Search فقط تطابق دقیق کلمات را میبیند.
اگر:
- معنی مشابه باشد.
- اما کلمات متفاوت باشند.
ممکن است سند مرتبط پیدا نشود.
3. Semantic Search
مفهوم
Semantic Search اسناد را بر اساس شباهت معنایی با Prompt رتبهبندی میکند.
در این روش:
- Prompt به Vector تبدیل میشود.
- Documentها نیز به Vector تبدیل میشوند.
- نزدیکترین Vectorها انتخاب میشوند.
مزایا
انعطاف بالایی دارد.
میتواند اسنادی را پیدا کند که:
- کلمات یکسان ندارند.
- اما معنی مشابه دارند.
محدودیت
Semantic Search:
- کندتر از Keyword Search است.
- محاسبات بیشتری نیاز دارد.
معماری Hybrid Search
در یک Retriever معمولاً این مراحل انجام میشود:
مرحله ۱: دریافت Prompt
کاربر یک Prompt ارسال میکند.
Prompt وارد Retriever میشود.
مرحله ۲: اجرای دو نوع Search
Retriever به صورت همزمان دو جستجو انجام میدهد:
Keyword Search
خروجی:
یک لیست رتبهبندیشده از اسناد.
Semantic Search
خروجی:
یک لیست رتبهبندیشده دیگر از اسناد.
مثلاً:
هر روش میتواند ۵۰ سند برگرداند.
در این دو لیست:
- بعضی اسناد مشترک هستند.
- اما ممکن است رتبه متفاوتی داشته باشند.
مرحله ۳: اعمال Metadata Filtering
هر دو لیست با Metadata Filter بررسی میشوند.
هدف:
حذف اسنادی که شرایط لازم را ندارند.
مثال:
اگر کاربر عضو تیم Engineering باشد:
- اسناد HR حذف میشوند.
- فقط اسناد مرتبط باقی میمانند.
مثال:
بعد از فیلتر:
Keyword Search:
50 documents → 35 documents
Semantic Search:
50 documents → 30 documents
مرحله ۴: ترکیب رتبهبندیها
اکنون دو لیست رتبهبندیشده داریم:
- Ranking مربوط به Keyword Search
- Ranking مربوط به Semantic Search
باید این دو را به یک Ranking نهایی تبدیل کنیم.
یکی از الگوریتمهای رایج:
Reciprocal Rank Fusion (RRF)
است.
Reciprocal Rank Fusion (RRF)
مفهوم اصلی
RRF اسناد را بر اساس رتبهای که در هر لیست دارند امتیاز میدهد.
هدف:
- اسنادی که در هر دو لیست رتبه خوبی دارند تقویت شوند.
- اسنادی که فقط در یک لیست رتبه خوبی دارند نیز فرصت داشته باشند.
فرمول ساده RRF
امتیاز یک سند:
Score = 1 / Rank
(در حالت ساده که K برابر صفر فرض شده است.)
مثال
اگر یک Document:
در Keyword Search:
رتبه دوم داشته باشد:
1 / 2 = 0.5
و در Semantic Search:
رتبه دهم داشته باشد:
1 / 10 = 0.1
امتیاز نهایی:
0.5 + 0.1 = 0.6
پارامتر K در RRF
پارامتر:
K
برای کنترل تأثیر رتبههای بالا استفاده میشود.
وقتی K = 0 باشد
سند رتبه اول:
1 point
سند رتبه دهم:
0.1 point
اختلاف:
۱۰ برابر
بنابراین رتبه اول تأثیر بسیار زیادی دارد.
وقتی K افزایش پیدا کند
مثلاً:
K = 50
امتیازها متعادلتر میشوند.
رتبه اول:
1 / 50
رتبه دهم:
1 / 60
اختلاف کمتر میشود.
در نتیجه:
- رتبه اول همچنان مهم است.
- اما بیش از حد بر نتیجه مسلط نمیشود.
نکته مهم درباره RRF
RRF فقط به:
- رتبه سند
توجه میکند.
به مقدار واقعی Score توجه نمیکند.
مثلاً:
اگر:
- سند اول خیلی بهتر از سند دوم باشد.
این اختلاف در RRF دیده نمیشود.
پارامتر Beta در Hybrid Search
در Retriever معمولاً پارامتر دیگری وجود دارد:
Beta
که وزن بین دو روش Search را تعیین میکند.
مثال:
β = 0.8
یعنی:
- ۸۰٪ اهمیت برای Semantic Search
- ۲۰٪ اهمیت برای Keyword Search
مقدار اولیه پیشنهادی Beta
یک نقطه شروع معمول:
70% Semantic Search
30% Keyword Search
است.
یعنی:
β = 0.7
اما باید برای هر پروژه تنظیم شود.
تنظیم وزنها بر اساس نوع کاربرد
زمانی که تطابق دقیق کلمات مهم است
مثلاً:
- نام محصول
- کد خطا
- اصطلاح فنی
وزن Keyword Search بیشتر میشود.
زمانی که معنی مهمتر است
مثلاً:
- پرسشهای عمومی
- جستجوی مفهومی
وزن Semantic Search بیشتر میشود.
مرحله نهایی Retrieval
پس از ایجاد Ranking نهایی:
Retriever تعداد مشخصی از بهترین اسناد را برمیگرداند.
این تعداد معمولاً:
Top K
نام دارد.
مثلاً:
اگر Top K برابر ۵ باشد:
۵ سند اول Ranking نهایی انتخاب میشوند.
مزایای Hybrid Search
Hybrid Search اجازه میدهد Retriever از مزایای هر تکنیک استفاده کند.
| تکنیک | مزیت اصلی |
|---|---|
| Metadata Filtering | حذف قطعی اسناد بر اساس قوانین |
| Keyword Search | تطابق دقیق کلمات |
| Semantic Search | تطابق بر اساس معنی |
امکان تنظیم Hybrid Search
برای بهینهسازی سیستم میتوان موارد مختلفی را تغییر داد:
BM25
تنظیم پارامترهای الگوریتم Keyword Search.
Metadata
انتخاب اینکه چه Metadataهایی برای فیلتر استفاده شوند.
RRF
تغییر وزن Keyword Search و Semantic Search.
اهمیت ارزیابی Retriever
برای تنظیم درست Hybrid Search باید بدانیم Retriever چقدر خوب عمل میکند.
بنابراین مرحله بعدی:
- ارزیابی عملکرد Retriever
بررسی خواهد شد.
جمعبندی
- Hybrid Search ترکیبی از Metadata Filtering، Keyword Search و Semantic Search است.
- Keyword Search برای تطابق دقیق کلمات مناسب است.
- Semantic Search برای پیدا کردن مفاهیم مشابه مناسب است.
- Metadata Filtering کنترل قطعی روی اسناد قابل استفاده ایجاد میکند.
- نتایج Keyword و Semantic Search با الگوریتمهایی مانند RRF ترکیب میشوند.
- RRF بر اساس رتبه اسناد امتیازدهی میکند.
- پارامترهای K و Beta امکان تنظیم رفتار Hybrid Search را فراهم میکنند.
- یک Retriever قدرتمند با تنظیم مناسب تعادل بین روشهای مختلف ساخته میشود.