למה RAG שונה מכל שיטה אחרת לתת ל-AI מידע
חברת ביטוח ישראלית עם 50,000 מסמכי פוליסות רצתה chatbot שעונה על שאלות לקוחות. Fine-tuning עלה 200,000 שקל ולקח חודשיים. RAG עלה 15,000 שקל ועבד תוך שבוע, עם דיוק גבוה יותר ועם יכולת לצטט מסמך ספציפי לכל תשובה. RAG הוא הארכיטקטורה שמחברת LLM לידע הפרטי שלך בלי לאמן מחדש.
הרעיון: במקום ללמד את המודל ידע חדש (fine-tuning), מוצאים את המסמכים הרלוונטיים בזמן ריצה ומוסיפים אותם ל-context. Claude 'יודע' על הדאטה שלך, תמיד מעודכן, ניתן לאימות, ובלי hallucination שאין לו מקור.
עדכון חשוב מ-2025: Anthropic עצמה ויתרה על RAG בתוך Claude Code לטובת חיפוש אגנטי (Grep + Glob). Boris Cherny, יוצר Claude Code: 'Early versions of Claude Code used RAG + a local vector db, but we found pretty quickly that agentic search generally works better. It is also simpler.' המשמעות: RAG מתאים למסמכים עסקיים, לקוד, grep עדיף.
ארכיטקטורת RAG, 5 רכיבים שחייבים להבין
כל RAG pipeline מורכב מאותם 5 שלבים. ההחלטות בכל שלב קובעות 80% מהדיוק הסופי:
| שלב | מה קורה | ההחלטה הקריטית |
|---|---|---|
| 1. Document Processing | טעינת PDF, Word, HTML | chunking strategy |
| 2. Embedding | המרת טקסט לוקטורים | בחירת מודל, חייב לתמוך עברית |
| 3. Vector Store | שמירת הוקטורים ל-DB | pgvector vs. Chroma vs. Pinecone |
| 4. Retrieval | שליפת chunks רלוונטיים | similarity threshold, top-k, re-ranking |
| 5. Generation | Claude מייצר תשובה מה-context | system prompt נגד hallucination |
Contextual Retrieval, החידוש של Anthropic שמשנה הכל
בעיית ה-RAG הקלאסי: chunk שמכיל 'הוא קיבל פיצוי על הנזק' לא אומר כלום בלי הקשר, מי הוא? על איזה נזק? Anthropic פתרה זאת עם Contextual Retrieval: לפני embedding, Claude מוסיף 50-100 טוקנים שמסבירים את תפקיד ה-chunk בתוך המסמך הגדול.
התוצאות מדידות:
- Contextual Embeddings בלבד: 35% פחות כשלי שליפה
- Contextual Embeddings + BM25: 49% פחות כשלים
- עם re-ranking: 67% פחות כשלי שליפה
- עלות: כ-$1.02 לכל מיליון טוקנים עם prompt caching
הפרומפט לייצור context אוטומטי לכל chunk:
אתה עוזר תיעוד. המסמך המלא הוא:
{WHOLE_DOCUMENT}
החלק הבא מתוך המסמך:
{CHUNK_CONTENT}
כתב 2-3 משפטים קצרים שמסבירים מה החלק הזה עושה בתוך המסמך,
מה הקשרו, ולמה הוא חשוב. התשובה תשמש כ-context לפני embedding.
Chunking, ההחלטה שאנשים מזלזלים בה ומשלמים מחיר
80% מבעיות RAG נובעות מ-chunking גרוע. שלוש גישות עיקריות:
- Fixed-size (512 tokens + 10% overlap): פשוט לממש. חותך אמצע משפט, גורם ל-context אבוד. נקודת התחלה טובה, לא נקודת סיום.
- Semantic chunking: מפצל לפי גבולות לוגיים (פסקאות, sections, רעיונות). תוצאות טובות יותר, מורכב יותר לממש. מומלץ לרוב המסמכים.
- Hierarchical chunking: שומר metadata של document + section + chunk. הכי מדויק לשאלות מורכבות שצריכות synthesis בין חלקי המסמך.
לסטארטאפ בתל אביב שמנהל בסיס ידע של נהלים ו-SOPs, Semantic chunking עם Contextual Retrieval הוא השילוב האופטימלי.
System Prompt נגד Hallucination, הנוסחה שעובדת
גם עם RAG מושלם, Claude יכול 'להשלים' מידע שאינו בחלקים שנשלפו. הפרומפט הבא מגביל את זה:
אתה עוזר מידע. ענה על השאלה רק בהתבסס על המסמכים הבאים.
אם המידע אינו במסמכים, ענה בדיוק: 'לא נמצא מידע במסמכים הזמינים'.
לכל עובדה שאתה מציין, ציין [שם מסמך, עמוד X].
אל תשלים, אל תנחש, אל תסתמך על ידע כללי.
מסמכים:
{context}
שאלה: {query}
באגף משאבי אנוש של חברה ישראלית שהטמיעה מערכת כזו לנהלים, כמות השאלות ל-HR ירדה ב-60% תוך חודשיים, כי העובדים קיבלו תשובות מהירות עם ציטוט מהנוהל הרשמי.
מתי לא להשתמש ב-RAG
RAG אינו תמיד הפתרון. שני מקרים שכדאי לדעת:
- Knowledge base קטן מ-200,000 טוקנים (~500 עמודים): פשוט תן הכל ב-prompt. עם prompt caching של Claude, זה זול ומהיר מ-RAG.
- חיפוש בקוד: Grep + Glob מנצחים RAG. Claude Code ויתר על RAG לטובת חיפוש אגנטי, שמשיג תוצאות טובות יותר ב-codebase.
טעויות נפוצות ב-RAG
- Embedding model שלא תומך עברית: text-embedding-ada-002 גרוע בעברית. השתמש ב-multilingual-e5-large מ-HuggingFace או cohere-multilingual. זה ההבדל בין 60% recall ל-85% recall.
- ויתור על re-ranking: cosine similarity שולף את המסמכים הכי דומים וקטורית, לא תמיד הכי רלוונטיים תכנית. הוספת cross-encoder re-ranker משפרת דיוק ב-20-30% ללא עלות גבוהה.
- הזנחת הערכה: 'זה נשמע טוב' אינה מדידה. בנה eval set עם שאלות ותשובות ידועות, ומדוד Precision, Recall ו-End-to-End Accuracy. ה-Cookbook של Anthropic מראה כיצד Claude עצמו משמש כ-judge.
סיכום, מה לקחת מהשיעור הזה
- RAG = שליפת מסמכים בזמן ריצה + הוספה ל-context. לא אימון מחדש.
- Contextual Retrieval של Anthropic מוריד כשלי שליפה ב-67%, שווה להטמיע.
- Chunking הוא ההחלטה הכי קריטית. Semantic chunking עדיף על Fixed-size.
- Embedding model חייב לתמוך עברית, multilingual-e5-large או cohere-multilingual.
- Knowledge base קטן מ-200K tokens? שלח הכל ב-prompt עם prompt caching, פשוט יותר מ-RAG.
- Re-ranking מוסיף 20-30% דיוק בלי עלות גבוהה, אל תדלגו עליו.
- תמיד הגדר citation חובה ו-'לא נמצא' ב-system prompt, מונע hallucination בפועל.
