RAG מתקדם
— מ"בערך" למדויק
RAG בסיסי (embed → חפש → הדבק) עובד בהדגמה ונכשל בפרודקשן: מחזיר קטעים לא רלוונטיים, מפספס תשובות קיימות, וגורם להזיות. במדריך: chunking חכם, hybrid search, reranking, metadata filtering ו-GraphRAG — הטכניקות שהופכות אחזור "בערך" למערכת מדויקת שאפשר לסמוך עליה.
למה RAG בסיסי נכשל בפרודקשן
אם קראת את מדריך ה-RAG הבסיסי, אתה מכיר את הזרימה: מפצלים מסמכים ל-chunks, ממירים ל-embeddings, שומרים ב-vector DB, ובזמן שאלה מחפשים את ה-chunks הדומים ומדביקים לפרומפט. זה עובד — עד שזה לא.
שלוש בעיות שוברות RAG בסיסי ברגע שהדאטה אמיתי:
- חיפוש סמנטי לבד מפספס מונחים מדויקים — embeddings מבינים משמעות אבל לא תמיד תופסים מספר קטלוגי, שם קובץ או מונח נדיר. השאלה "שגיאה E-4032" עלולה להחזיר תוצאות "כלליות" על שגיאות.
- ה-chunk הנכון קיים אבל לא בטופ — לפעמים התשובה נמצאת ב-chunk שדורג במקום ה-15, וה-LLM רואה רק את ה-5 הראשונים.
- Chunking גרוע קורע את ההקשר — פיצול נאיבי חותך משפט באמצע או מפריד טבלה מהכותרת שלה, וה-chunk הופך חסר משמעות.
כל טכניקה במדריך הזה מטפלת ישירות באחת מהבעיות. נעבור לפי סדר הזרימה.
Chunking חכם — הבסיס שקובע הכל
איכות ה-chunking קובעת את תקרת האיכות של כל המערכת. chunk טוב הוא יחידת מידע קוהרנטית שאפשר להבין בפני עצמה. אסטרטגיות מעבר לפיצול-לפי-אורך הנאיבי:
- פיצול לפי מבנה — חתוך לפי כותרות, פסקאות וסעיפים, לא לפי ספירת תווים עיוורת. שמור טבלאות ורשימות שלמות.
- חפיפה (overlap) — תן ל-chunks לחפוף במעט (כמה משפטים), כדי שהקשר על הגבול לא יאבד.
- העשרת metadata — צרף לכל chunk מקור, כותרת סעיף, תאריך, סוג מסמך. זה מה שיאפשר סינון מדויק בהמשך.
- Contextual retrieval — טכניקה חזקה: לפני ה-embedding, הוסף לכל chunk משפט הקשר קצר שמסביר מאיפה הוא (למשל "מתוך דוח Q3 2026, סעיף הכנסות"). משפר דרמטית את הדיוק.
Hybrid Search — הכי משתלם ליחידת מאמץ
זה השדרוג עם ההחזר הכי טוב, והוא פשוט יחסית. Hybrid search משלב שני סוגי חיפוש ומאחד את התוצאות:
משלבים את שניהם ומאחדים את הדירוגים (בד"כ בשיטה כמו RRF — Reciprocal Rank Fusion). התוצאה תופסת גם משמעות וגם מונחים מדויקים — כיסוי שאף שיטה לבדה לא נותנת. רוב ה-vector DBs המודרניים תומכים ב-hybrid search מובנה.
Reranking — שלב הדיוק
אחזור מהיר (וקטורי/BM25) הוא "רשת רחבה" — הוא מביא מהר הרבה מועמדים, אבל הדירוג שלו גס. Reranker הוא מודל ייעודי (cross-encoder) שקורא את השאלה ואת כל מועמד ביחד ונותן ציון רלוונטיות מדויק בהרבה.
הדפוס המנצח הוא שני שלבים:
כשה-5 chunks שמגיעים ל-LLM באמת רלוונטיים, אפשר לשלוח פחות הקשר — פחות טוקנים, תשובה טובה יותר. reranking משפר איכות ומוריד עלות באותו זמן.
GraphRAG ו-metadata filtering
Metadata filtering
זכור את ה-metadata שצירפנו ב-chunking? עכשיו הוא משתלם. במקום לחפש בכל המאגר, סנן קודם: "רק מסמכים מ-2026", "רק מהמחלקה הזו", "רק מדריכי מוצר". זה מקטין את מרחב החיפוש, מעלה דיוק, ומונע החזרת מידע מיושן או לא-רלוונטי.
GraphRAG
חיפוש רגיל מוצא chunks בודדים ומבודדים. GraphRAG בונה גרף ידע — ישויות (אנשים, מוצרים, מושגים) והקשרים ביניהן — ומאפשר לענות על שאלות ש"מחברות נקודות" בין מסמכים. שאלה כמו "אילו לקוחות מושפעים מהשינוי במדיניות X?" דורשת לחבר מידע ממקורות שונים — משהו שחיפוש דמיון בודד לא עושה טוב. GraphRAG יקר יותר לבנות, אז שמור אותו למקרים שבאמת דורשים חשיבה על קשרים.
הפייפליין המלא — איך הכל מתחבר
בנה סט הערכה (שאלות + תשובות נכונות) והוסף טכניקה אחת בכל פעם, מדוד את השיפור. בלי evals אתה מוסיף מורכבות בלי לדעת אם היא עוזרת. התחל מ-hybrid + reranking — הם נותנים את רוב השיפור.