טכניקות RAG מתקדמות הן לא טובות יותר. הן טובות יותר לעיתים.
טכניקות RAG מתקדמות אינן שדרוגים חינמיים. הן כלים עם פשרות (tradeoffs).
בדקתי חמש שיטות שליפה (retrieval) בתוך pipeline של RAG תוך שימוש בתיעוד של Anthropic. רציתי לראות אילו מהן באמת מצדיקות את המורכבות שלהן.
הנה מה שמצאתי:
• Dense Retrieval: הבסיס (baseline). זה עובד טוב אבל מפספס מונחים מדויקים. • Hybrid Search: משלב חיפוש dense יחד עם חיפוש מילות מפתח (keyword search). זה מוצא מונחים מדויקים ש-dense מפספס. אך עליכם לשקלל את התוצאות נכון, אחרת האות (signal) נעלמת. • Reranking: משתמש ב-cross-encoder כדי לדרג מועמדים. זה עוזר כאשר ה-chunk הנכון קבור עמוק מדי בתוצאות. • HyDE: משתמש בתשובה היפותטית כדי למצוא נתונים. זה מסוכן. זה עוזר בשאילתות כלליות, אך בשאילתות ישירות, זה הורס הכל. ה-Recall צנח מ-0.80 ל-0.17 בניסוי אחד. • Contextual Retrieval: מוסיף סיכומים ל-chunks. זה עוזר ל-chunks קצרים אך עולה יותר בעמלות LLM.
השיעור הכי גדול הוא לגבי HyDE. זה לא כלי מסוג "הגדר ושכח" (set and forget). כדאי להשתמש בו רק כאשר שאילתת המשתמש והמסמכים שלכם "מדברים שפות שונות". אתם זקוקים ל-router שיחליט מתי להשתמש בו.
למדתי גם שיעור לגבי מדידה.
ניסיתי להשתמש ב-Ragas לצורך הערכה (evaluation). זה היה איטי מדי. זה בזבז שעות על ניסיונות חוזרים לקריאות שנכשלו. החלטתי לבנות harness אסינכרוני משלי. במקום 11 שעות, ההערכה שלי ארכה 221 שניות.
אל תתייחסו לכלי AI כאל "קופסאות שחורות". אם כלי הוא איטי או נכשל, הסתכלו על המתמטיקה שמאחוריו. אם חייבים, בנו פתרון משלכם.
העבודה היא לא רק הוספת פיצ'רים חדשים. העבודה היא למדוד איזה פיצ'ר באמת ראוי למקום שלו במערכת שלכם.
סיכום של מתי להשתמש בכל אחת:
- Hybrid: השתמשו כאשר השאילתות מסתמכות על פרמטרים מדויקים.
- HyDE: השתמשו כאשר השאילתות מנוסחות בצורה גרועה.
- Reranking: השתמשו כאשר השליפה היא רחבה אך לא מדויקת.
- Contextual: השתמשו כאשר ל-chunks שלכם חסר הקשר (context).
הפסיקו לרדוף אחרי ה-"state of the art". התחילו למדוד את התוצאות שלכם.
Source: https://dev.to/yogesh23012001/advanced-rag-techniques-arent-better-theyre-better-sometimes-4m2o
Optional learning community: https://t.me/GyaanSetuAi
