خب میرسیم به RAG یا همون Retrieval-Augmented Generation. خیلیا فکر میکنن فقط چندتا فایل رو میریزی تو یه Vector Database و یه LLM بهش وصل میکنی و تمام. این تصور اولیه شاید برای یه دموی ساده جواب بده، ولی برای یه محصول واقعی، تازه اول ماجراست.
چندتا نکته کلیدی که کاش روز اول یکی بهم میگفت:
۱. فرایند Chunking یه هنر مهندسیه، نه یه کار روتین.
اینکه چطور داکیومنتهات رو به قطعات کوچیکتر تقسیم میکنی، مستقیم روی کیفیت جواب نهایی تأثیر داره. یه چانک زیادی بزرگ، کلی اطلاعات نامرتبط و نویز وارد کانتکست مدل میکنه. یه چانک زیادی کوچیک هم باعث میشه مفهوم اصلی و ارتباط بین جملات از بین بره. استراتژیهای مختلفی هست، از fixed-size ساده گرفته تا RecursiveCharacterTextSplitter که ساختار متن رو بهتر درک میکنه. به نظر من، نقطه بهینه معمولاً با آزمون و خطا روی دیتای واقعی خودتون پیدا میشه. پارامتری مثل chunk_overlap هم مهمه تا ارتباط معنایی بین چانکهای متوالی حفظ بشه.
۲. کانتکست بیشتر به معنی جواب بهتر نیست.
اینکه ۱۰ تا چانک رو از Vector DB بازیابی کنی و همهشو بریزی تو پرامپت، معمولاً نتیجه رو خراب میکنه. مدلهای زبانی بزرگ با پدیدهای به اسم "Lost in the Middle" درگیرن؛ یعنی به اطلاعاتی که وسط یه کانتکست طولانی قرار گرفته، توجه کمتری میکنن. راه حل اینه که بعد از بازیابی اولیه، یه مرحله Re-ranking اضافه بشه. میتونین از یه مدل سبک cross-encoder یا سرویسهایی مثل Cohere Rerank استفاده کنین تا چانکها رو بر اساس ارتباط واقعیشون با سوال کاربر دوباره مرتب کنین. اینطوری مرتبطترین اطلاعات اول کانتکست قرار میگیره و مدل جواب دقیقتری تولید میکنه.
۳. انتخاب مدل Embedding یکی از حیاتیترین تصمیماته.
مدلهای Embedding مترجمهای دیتای شما به زبان ریاضی هستن. اگه مترجم کارشو بلد نباشه، کل سیستم بازیابی فلج میشه. مدلهای عمومی مثل text-embedding-3-small از OpenAI برای شروع خوبن، ولی برای دیتای تخصصی یا زبانهای خاص، ممکنه بهترین نباشن. باید مدلهای open-source مثل jina embedding رو هم بررسی کرد که روی تسکهای multilingual retrieval عملکرد خوبی نشون دادن. برای انتخاب درست، به معیارهای استاندارد نگاه کنین.
📃 مرجع مقایسه مدلهای Embedding
MTEB Leaderboard
در نهایت، RAG یه سیستم زندهس. باید به طور مداوم کیفیت بازیابی (retrieval precision) و وفاداری پاسخ مدل به منبع (faithfulness) رو ارزیابی کنین.
🛠 Join @LLMEngineers Community
Post #101
1.03K
- 👍 15