RAG — איך LLM לומד מהמסמכים שלך בלי לאמן אותו מחדש
מ-2020 (Lewis et al., Meta) ועד התשתית של 2026: vector DBs, hybrid search, reranking ו-agentic RAG
RAG — איך LLM לומד מהמסמכים שלך בלי לאמן אותו מחדש
מודלי שפה גדולים (LLMs) שינו את האופן שבו אנו מתקשרים עם מידע, אך הם סובלים משלוש בעיות יסוד קשות: יש להם תאריך עדכון ידע קבוע וסופי (training data freeze date), הם נוטים להזות עובדות בביטחון עצמי מופרז (hallucinations), וחלון ההקשר שלהם (context window) מוגבל — אפילו חלונות של מיליון טוקנים הם עדיין סופיים. בנוסף, תהליך של כוונון עדין (fine-tuning) הוא יקר, איטי ואינו מאפשר להטמיע מסמכים חדשים המשתנים על בסיס יומי.
בשנת 2020 נולדה תובנה פשוטה אך פורצת דרך: במקום לבקש מהמודל "לדעת" הכל בתוך הפרמטרים שלו, עדיף לספק לו את המסמך הרלוונטי ביותר בזמן השאילתה (query time). הרעיון מבוסס על תהליך דו-שלבי: ראשית, שליפת פיסות מידע (chunks) רלוונטיות מתוך מאגר מידע גדול (corpus), ושנית, יצירת תשובה המבוססת על אותן פיסות מידע שנשלפו. לטכנולוגיה הזו קוראים Retrieval-Augmented Generation, או בקיצור: RAG.
היסטוריה של פריצת דרך: מ-DrQA ועד למאמר המכונן
הרעיון של שילוב שליפת מידע עם מודלים גנרטיביים לא נולד יש מאין. כבר בשנת 2017 הציגו Chen ועמיתיו מאוניברסיטת Stanford את מערכת DrQA במאמר "Reading Wikipedia to Answer Open-Domain Questions", אשר שילבה את אלגוריתם BM25 עם קורא עצבי (neural reader). בשנת 2019 הציגו Karpukhin ועמיתיו מ-Facebook את ה-Dense Passage Retrieval (DPR) — הרטריבר העצבי הראשון שהצליח להביס את BM25 באופן נרחב. בשנת 2020 הציגו Guu ועמיתיו מ-Google את REALM, מודל שפה מבוסס שליפה שעבר אימון מקדים (pre-trained retrieval-augmented LM).
אולם, נקודת המפנה ההיסטורית התרחשה במאי 2020, כאשר פורסם ב-arXiv המאמר המכונן "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" (ולאחר מכן הוצג ב-NeurIPS 2020). כותבי המאמר, ובהם Patrick Lewis ועמיתיו מ-Facebook AI Research (לימים Meta), בשיתוף עם UCL ו-NYU, טבעו לראשונה את המונח "RAG". המערכת שהציגו שילבה את Dense Passage Retrieval (DPR) כרכיב השליפה, יחד עם BART כמודל הגנרטיבי. המחקר הציג שיפורים דרמטיים במשימות עתירות ידע כמו NaturalQuestions, TriviaQA ו-FEVER.
הארכיטקטורה המודרנית: כך נראה ה-Stack הטכנולוגי כיום
מאז 2020, ובמיוחד בשנים 2024–2026, הטכנולוגיה התפתחה לשרשרת שלבים מורכבת ומדויקת:
- פירוק לטקסטים (Chunking): חלוקת המסמכים לפיסות מידע קטנות של כ-256 עד 1000 טוקנים. האסטרטגיות כוללות חלוקה לפי גודל קבוע (fixed-size), חלוקה סמנטית לפי גבולות משפטים (semantic), חלוקה היררכית, או שימוש ב-"RAPTOR" (עצי סיכומים). זהו שלב קריטי — פירוק גרוע יוביל לשליפה גרועה.
- ייצוג וקטורי (Embedding): המרת הטקסט לוקטורים (לרוב במימדים של 768 עד 3072). המובילים בשנת 2024 כוללים את BGE-M3 של BAAI, את Voyage AI, את Cohere embed-v3 ואת text-embedding-3-large של OpenAI. עבור עברית ומערכות רב-לשוניות, הבחירות המובילות הן BGE-M3, mE5 ו-jina-embeddings-v3.
- בסיסי נתונים וקטוריים (Vector DB): שמירת הוקטורים והמטא-דאטה וביצוע חיפוש שכנים קרובים מקורב (ANN). הנוף הטכנולוגי כולל את Pinecone (מנוהל), Qdrant (קוד פתוח), Weaviate, ChromaDB הפופולרי לפיתוח, pgvector (הרחבה ל-PostgreSQL) ו-Cloudflare Vectorize הזול.
- חיפוש היברידי (Hybrid Search): שילוב של חיפוש סמנטי (וקטורי) יחד עם חיפוש מילות מפתח מסורתי (BM25). זוהי פרקטיקה מומלצת כיום, שכן חיפוש וקטורי טהור נוטה לפספס שאילתות של התאמה מדויקת (כמו קודי מוצרים או שמות ספציפיים). האלגוריתם הסטנדרטי למיזוג התוצאות הוא Reciprocal Rank Fusion (RRF).
- דירוג מחדש (Reranking): לאחר שליפת 50 התוצאות הראשונות, משתמשים ב-cross-encoder כדי לדרג אותן מחדש ולבחור את ה-5 הטובות ביותר. כלים כמו Cohere Rerank, BGE reranker ו-mxbai-rerank מציעים שיפור איכותי עצום בעלות נמוכה.
- יצירת התשובה (Generation): הזנת פיסות המידע שנשלפו לתוך הפרומפט של מודל השפה. תבנית טיפוסית תיראה כך: "Use the following context to answer: <chunks>. Question: <query>". בשלב זה נהוג להוסיף ציטוטים מובנים (כמו "[1]", "[2]") המפנים ישירות לכתובות המקור.
דפוסים מתקדמים ופריצות דרך אחרונות
האבולוציה של RAG הביאה לפיתוחן של טכניקות מתקדמות המגשרות על פערי הבנה מורכבים. בשנת 2022 הוצג קונספט ה-HyDE (Hypothetical Document Embeddings): המערכת מייצרת תחילה תשובה היפותטית לשאילתה, ומבצעת את חיפוש הוקטורים על בסיס התשובה הזו ולא על בסיס השאילתה המקורית. למרות שזה נשמע מנוגד לאינטואיציה, השיטה משפרת משמעותית את דיוק השליפה.
דפוסים נוספים כוללים את ה-Multi-query / fusion (יצירת 5 וריאציות שונות לשאילתה, ביצוע שליפה עבור כל אחת ומיזוג התוצאות), וכן את Self-RAG (Asai et al., 2023), שבו המודל מחליט בעצמו מתי עליו לבצע שליפה ומתי לא. ב-Agentic RAG, סוכן תבוני (agent) יכול לקרוא לפונקציית השליפה ככלי עזר מרובה פעמים בתוך תהליך של שרשרת מחשבה (chain-of-thought). פריצת דרך משמעותית נוספת הוצגה על ידי Anthropic בספטמבר 2024 תחת השם Contextual Retrieval: הוספת סיכום קצר של כ-50 טוקנים לכל פיסת מידע לפני הפיכתה לוקטור, מה שהוביל להפחתה של 35% עד 49% בשגיאות השליפה.
האקוסיסטם ויישומי העולם האמיתי
האקוסיסטם סביב RAG צמח במהירות עצומה. פלטפורמות כמו LangChain (שנוסדה על ידי Harrison Chase ב-2022) הפכו את דפוסי ה-RAG לפופולריים באמצעות קוד פשוט להרכבה. LlamaIndex (שנוסדה על ידי Jerry Liu ב-2022) התמקדה ספציפית בפתרונות RAG עם מחברים עשירים למקורות מידע. חברת Pinecone (שהוקמה על ידי Edo Liberty ב-2019) הגדירה מחדש את הקטגוריה של בסיסי נתונים וקטוריים, בעוד שחברת Cohere (בהובלת Aidan Gomez) דחפה קדימה את השימוש בייצוגים וקטוריים ובדירוג מחדש (rerankers) כשירותי API בתשלום.
כיום, RAG מניע את היישומים המובילים בעולם: Notion AI Q&A מאפשר לבצע RAG על פני מרחב העבודה האישי; Perplexity AI מבצע RAG על גבי רשת האינטרנט בזמן אמת; GitHub Copilot Chat מיישם RAG על קוד המקור של המשתמש; AWS Q עושה זאת על מסמכים וקוד ארגוני; וחברת Klarna משתמשת ב-RAG בשירות הלקוחות שלה כדי לגשת לפוליסות ולקטלוג המוצרים של החברה.
מתי RAG הוא לא הפתרון המתאים?
למרות יתרונותיו, RAG אינו פתרון קסם לכל בעיה. כניסתם של מודלים בעלי חלון הקשר ענק (כמו Claude עם 200K טוקנים או Gemini עם 1M-2M טוקנים) מאפשרת להזין מסמכים שלמים ישירות לתוך הזיכרון ללא צורך בשלב שליפה מקדים. בנוסף, עבור מאגרי ידע קטנים וסטטיים, לעיתים פשוט וזול יותר להכניס את המידע ישירות לתוך ה-system prompt. לבסוף, כאשר נדרשת "חשיבה והסקת מסקנות מורכבות על גבי הידע" (reasoning over knowledge) ולא רק "איתור עובדות" (looking up facts) — תהליך של כוונון עדין (fine-tuning) עשוי להביס את ה-RAG ולהציג תוצאות טובות יותר.
מקורות
— סוף הכתבה —
חזרה לארכיון ↗