مفهوم اصلی
یکی از مراحل مهم در یک سیستم RAG Production، آمادهسازی و اصلاح Promptهای ارسالشده توسط کاربر است.
در بسیاری از سیستمهای RAG، کاربر انتظار دارد مانند یک انسان با LLM گفتگو کند.
بنابراین Promptهای انسانی معمولاً برای Search مناسب نیستند.
مشکل Promptهای خام کاربران
کاربران معمولاً:
- به شکل محاورهای سؤال میپرسند.
- اطلاعات اضافی وارد میکنند.
- از اصطلاحات دقیق استفاده نمیکنند.
- ابهام دارند.
اما Retriever نیاز دارد:
- یک Query دقیق
- با اطلاعات مرتبط
برای جستجو دریافت کند.
Query Parsing چیست؟
Query Parsing فرآیندی است که طی آن Retriever قبل از ارسال Query به Vector Database:
- Intent کاربر را تشخیص میدهد.
- Query را اصلاح میکند.
- بازنویسی میکند.
- یا حتی به شکل جدیدی تبدیل میکند.
هدف:
تبدیل Prompt انسانی به یک Query بهینه برای Retrieval.
روشهای Query Parsing
روشهای مختلفی وجود دارد.
مهمترین آنها:
- Query Rewriting
- Named Entity Recognition (NER)
- Hypothetical Document Embeddings (HyDE)
1. Query Rewriting
مفهوم اصلی
سادهترین و رایجترین روش Query Parsing:
استفاده از یک LLM برای بازنویسی Query قبل از ارسال به Retriever است.
وظایف Query Rewriter
LLM میتواند:
- ابهامها را برطرف کند.
- اصطلاحات تخصصی اضافه کند.
- Synonymهای مناسب اضافه کند.
- اطلاعات غیرضروری را حذف کند.
مثال پزشکی
فرض کنید سیستم RAG دارای Knowledge Base پزشکی است.
کاربر میپرسد:
I was out walking my dog, a beautiful black lab named Poppy, when she raced away from me and yanked on her leash hard while I was holding it. Three days later, my shoulder is still numb and my fingers are all pins and needles. What's going on?
مشکل Query اصلی
این Prompt برای Retrieval مناسب نیست.
دلایل:
- اطلاعات غیرمرتبط زیاد دارد.
- اصطلاحات پزشکی دقیق ندارد.
- هدف اصلی سؤال در میان جزئیات گم شده است.
Query بازنویسیشده
LLM آن را تبدیل میکند به:
Experience a sudden forceful pull on the shoulder resulting in persistent shoulder numbness and finger numbness for three days. What are the potential causes or diagnoses such as neuropathy or nerve impingement?
بهبودهای Query جدید
Query جدید:
- اطلاعات اضافی را حذف کرده است.
- مشکل اصلی را مشخص کرده است.
- از اصطلاحات پزشکی استفاده کرده است.
مثلاً:
- Neuropathy
- Nerve impingement
این موارد احتمال پیدا کردن Document مرتبط را افزایش میدهند.
مزایای Query Rewriting
- پیادهسازی ساده است.
- کیفیت Retrieval معمولاً افزایش قابل توجهی پیدا میکند.
- هزینه یک درخواست اضافی به LLM معمولاً ارزش بهبود را دارد.
2. Named Entity Recognition (NER)
مفهوم اصلی
Named Entity Recognition
تکنیکی برای تشخیص موجودیتهای مهم در Query است.
مثلاً:
- افراد
- مکانها
- تاریخها
- شخصیتهای داستانی
- کتابها
کاربرد NER در RAG
اطلاعات استخراجشده میتواند برای:
- Vector Search
- Metadata Filtering
استفاده شود.
مثال
یک مدل NER مانند:
GLiNER
میتواند متن را دریافت کند.
همراه آن مشخص میکنیم چه Entityهایی را پیدا کند.
مثلاً:
- Person
- Book
- Location
- Date
- Actor
- Character
مدل Query را تحلیل میکند و بخشهای مربوط به این دستهها را علامتگذاری میکند.
مزیت NER
NER میتواند:
- اطلاعات مهم Query را استخراج کند.
- به بهبود Retrieval کمک کند.
هزینه NER
اجرای NER برای هر Query:
- کمی Latency اضافه میکند.
اما:
- کیفیت Retrieval میتواند بهتر شود.
3. Hypothetical Document Embeddings (HyDE)
مفهوم اصلی
HyDE
روشی است که به جای Search مستقیم Query، ابتدا یک Document فرضی تولید میکند.
ایده HyDE
Retriever معمولاً باید:
Prompt کاربر را با Documentهای واقعی مقایسه کند.
اما این دو نوع متن متفاوت هستند.
یعنی:
- Query کوتاه
- Document طولانی
مثل مقایسه:
سیب با پرتقال
HyDE این مشکل را حل میکند.
نحوه کار HyDE
مراحل:
- کاربر Query ارسال میکند.
- LLM یک Document فرضی تولید میکند که پاسخ ایدهآل به Query باشد.
- Document فرضی به Embedding Vector تبدیل میشود.
- همین Vector برای Search استفاده میشود.
مثال پزشکی
Query:
مشکل بیحسی شانه و دست بعد از کشیده شدن ناگهانی
LLM یک Document فرضی تولید میکند درباره:
- بیحسی شانه و دست
- آسیب عصبی ناشی از کشش ناگهانی
- دلایل احتمالی
سپس:
Vector این Document فرضی برای Search استفاده میشود.
مزیت HyDE
Retriever دیگر فقط Query را با Documentها مقایسه نمیکند.
بلکه مقایسه میکند:
- یک Document فرضی با کیفیت بالا
- Documentهای واقعی Knowledge Base
بنابراین دو طرف مقایسه شبیهتر هستند.
محدودیت HyDE
هزینه دارد:
- نیاز به اجرای LLM دارد.
- Latency افزایش پیدا میکند.
- منابع محاسباتی بیشتری مصرف میشود.
اما در عمل میتواند عملکرد Retrieval را بهتر کند.
مقایسه تکنیکهای Query Parsing
| روش | هدف | مزیت | هزینه |
|---|---|---|---|
| Query Rewriting | اصلاح Query کاربر | ساده و مؤثر | کم |
| NER | استخراج Entityها | بهبود Search و Filter | متوسط |
| HyDE | ساخت Document فرضی | کیفیت Retrieval بالاتر | بیشتر |
انتخاب روش مناسب
در اکثر پروژههای RAG:
بهترین نقطه شروع:
Query Rewriting
است.
یعنی:
- یک LLM با Prompt مناسب
- اصلاح ساده Queryهای کاربر
روشهای پیشرفتهتر مانند:
- NER
- HyDE
ممکن است مفید باشند، اما:
- پیچیدگی بیشتری دارند.
- همیشه باعث بهبود نمیشوند.
نکته مهم در طراحی RAG
هدف این نیست که پیچیدهترین تکنیک ممکن استفاده شود.
هدف:
انتخاب تکنیکی است که برای داده و نیاز پروژه بیشترین ارزش را ایجاد کند.
بنابراین باید:
- آزمایش انجام شود.
- نتایج Retrieval بررسی شوند.
- بر اساس عملکرد تصمیمگیری شود.
جمعبندی
- Promptهای انسانی معمولاً برای Retrieval مستقیم مناسب نیستند.
- Query Parsing باعث تبدیل Prompt کاربر به Query مناسبتر برای Search میشود.
- Query Rewriting رایجترین و سادهترین روش Query Parsing است.
- NER موجودیتهای مهم Query را استخراج میکند و میتواند برای Search و Filtering استفاده شود.
- HyDE ابتدا یک Document فرضی ایجاد میکند و Vector آن را برای Search استفاده میکند.
- تکنیکهای پیشرفتهتر ممکن است کیفیت Retrieval را افزایش دهند، اما هزینه و پیچیدگی بیشتری دارند.
- در اکثر سیستمها شروع با Query Rewriting بهترین انتخاب است.