כיסוי אחזור מידע מודד אם מערכת RAG מביאה את כל המידע הרלוונטי הדרוש לתשובה. למדו איך למדוד ולשפר אותו.

כיסוי אחזור מידע הוא המידה שבה מערכת אחזור לוכדת את כל המידע הרלוונטי שקיים עבור שאילתה, ולא רק חלק ממנו. בצינור עבודה של retrieval augmented generation, הוא עונה על שאלה בסיסית: מתוך כל הקטעים במאגר הידע שלכם שיכולים לסייע במענה על השאלה, כמה מהם מנגנון האחזור אכן שלף? כיסוי הוא תנאי מוקדם לכל מה שקורה בהמשך, כי מודל יכול לנמק רק על סמך מה שניתן לו.
לעניין הזה יש חשיבות כי תשובת AI שלמה רק כמו הראיות שעומדות מאחוריה. אם האחזור מפספס מקור מרכזי, המודל לעולם לא רואה אותו, והתשובה חלקית או שגויה, לא משנה עד כמה המודל מוכשר. עבור כל מי שעובד על מערכות RAG או מנסה להיות מצוטט על ידן, כיסוי אחזור מידע הוא המקום שבו איכות התשובה מתחילה.
כיסוי אחזור מידע מתאר עד כמה ביסודיות מנגנון אחזור אוסף את החומר הרלוונטי עבור שאילתה. הוא בסיסי הן ל-Recall והן ל-Precision: בלי כיסוי, אף אחד מהם לא יכול להצליח, כי אין דבר רלוונטי לדרג. במערכת retrieval augmented generation, הכיסוי קובע אם ליוצר (generator) יש את הידע החיוני הדרוש לו כדי להפיק תשובה מדויקת.
המושג אינטואיטיבי. דמיינו מאגר ידע שמכיל עשרה קטעים הנוגעים לשאלה מסוימת. מנגנון אחזור עם כיסוי חזק מעלה את רובם או את כולם, בעוד מנגנון עם כיסוי חלש מחזיר רק שניים או שלושה ומשאיר את השאר מאחור. המודל אז כותב מנקודת מבט חלקית, וכך נוצרות תשובות בטוחות אך חסרות, גם כאשר המידע הנכון היה קיים במאגר הנתונים.
הדרך העיקרית לכמת כיסוי היא Recall. לפי AutoRAG, Recall הוא היחס בין המסמכים הרלוונטיים שאוחזרו לבין מספרם הכולל של המסמכים הרלוונטיים במערך הנתונים, ומודד את יכולת המערכת למצוא את כל המסמכים הרלוונטיים. ציון Recall של 0.5 משמעו שמנגנון האחזור לוכד רק מחצית מהחומר הרלוונטי הזמין, מה שמעיד על אובדן מידע ממשי.
בפועל, זה נמדד כ-Recall at k, היחס של המסמכים הרלוונטיים שמופיעים בין k התוצאות המובילות. Redis נותנת דוגמה נקייה: אם קיימים עשרה מסמכים רלוונטיים ושבעה מהם מופיעים בעשר התוצאות המובילות, אז Recall at 10 הוא 0.7, כלומר 70 אחוז. Recall גבוה משמעו סיכוי נמוך יותר לפספס הקשר חשוב עבור המודל, וזה בדיוק מה שכיסוי אמור להשיג.
כיסוי ו-Precision מושכים לכיוונים שונים. Precision הוא החלק מבין המסמכים שאוחזרו שהם אכן רלוונטיים, בעוד Recall, מדד הכיסוי, הוא החלק מבין כל המסמכים הרלוונטיים שהצלחתם לאחזר. AutoRAG מגדירה את Precision כמדד הדיוק של מה שהוחזר ואת Recall כמדד השלמות של מה שנמצא, ולרוב שני המדדים מסוכמים יחד באמצעות ציון F1, הממוצע ההרמוני שלהם.
המתח הזה אמיתי ומעשי. Redis מציינת שגודל ה-chunk כופה פשרה בין Precision ל-Recall: chunks קטנים יותר מפחיתים רעש אך עלולים לפצל מידע על פני תוצאות רבות, מה שמקשה על כיסוי מלא, בעוד chunks גדולים יותר שומרים על יותר הקשר. דחיפה לכיסוי מקסימלי עלולה להציף את המודל בקטעים שוליים, כך שהמטרה היא כיסוי מספיק כדי להיות שלם בלי לטשטש את האות. איזון זה נמצא בליבה של הערכת אחזור מידע.
ל-Recall הפשוט יש נקודה עיוורת. מכיוון שרלוונטיות נשפטת בדרך כלל מסמך אחד בכל פעם, שני קטעים יכולים להיות מסומנים כרלוונטיים גם אם הם אומרים בדיוק את אותו הדבר, כך ש-Recall גבוה לא מבטיח שכל זווית ייחודית של שאלה מכוסה. זו הסיבה שלעיתים כיסוי נמדד ברמת הרעיונות ולא ברמת המסמכים.
Subtopic Recall מטפל בכך על ידי מדידת החלק מתת-הנושאים הייחודיים המכוסים על ידי k המסמכים המובילים שאוחזרו, נקודת מבט מדויקת יותר מספירת מסמכים רלוונטיים בלבד. עבור שאלה רחבה, כיסוי אמיתי משמעו העלאת כל היבט משמעותי, לא עשרה קטעים כמעט זהים על היבט אחד. תכנון תוכן ואחזור סביב תת-נושאים ייחודיים, בדומה לבניית topic cluster חזק, משפר את הצורה העמוקה יותר הזו של כיסוי.
מספר בחירות בצינור העבודה מעצבות את הכיסוי. Chunking הוא הראשון: אם הגבולות מפצלים רעיון קוהרנטי לחלקים, מנגנון האחזור עלול לתפוס קטע אחד ולפספס את השאר, כך שחלוקת תוכן ל-chunks מחושבת משפיעה ישירות על מידת השלמות שבה ניתן למצוא מידע. גם מודל ה-embedding חשוב, שכן embeddings חלשים ממקמים קטעים קשורים רחוק זה מזה במרחב הווקטורי ומורידים את ה-Recall.
שיטת האחזור היא המנוף הגדול השני. חיפוש וקטורי טהור עלול לפספס התאמות מדויקות של מונחים, ולכן גישות היברידיות המשלבות חיפוש מילות מפתח וחיפוש סמנטי משפרות כיסוי. Redis מדווחת שחיפוש היברידי מספק שיפור Recall של 15 עד 30 אחוז לעומת שיטות בודדות. העלאת k גם מעלה את הכיסוי, אם כי במחיר של זמן תגובה ו-Precision, ולכן יש לכוונן אותו ולא למקסם אותו.
מנועי תשובה מבוססי AI מרכיבים תשובות מתוך הקטעים שהם מאחזרים, כך שכיסוי הוא השער שהתוכן שלכם חייב לעבור דרכו כדי להיראות. אם קבוצת האחזור של המנוע אף פעם לא כוללת את העמוד שלכם, לא תוכלו להיות מצוטטים, מסוכמים או מומלצים, לא משנה עד כמה התוכן שלכם סמכותי. כיסוי חזק בצד המנוע הוא ההזדמנות של התוכן שלכם להיות בין המקורות שנאספים.
זה ממסגר מחדש את האופטימיזציה סביב היכולת להיות ניתן לאחזור עבור מלוא טווח השאילתות ותת-הנושאים הרלוונטיים. תוכן שמטפל בנושא בצורה מקיפה, בקטעים ברורים ועצמאיים, סביר יותר שיהיה ה-chunk שממלא פער כיסוי. זהו generative engine optimization בפועל, ושילובו עם מחקר מילות מפתח ותכנון תוכן ממושמעים עוזר לכם למפות את תת-הנושאים שמנוע צריך לכסות.
בצד המערכת, התחילו עם Chunking ו-Embeddings, ולאחר מכן הוסיפו אחזור היברידי כדי לתפוס התאמות שחיפוש וקטורי לבדו היה מפספס. כווננו את k כלפי מעלה עד שהכיסוי מספיק, ושקלו הרחבת שאילתות (query expansion) כך ששאלה בודדת של משתמש תתאים למספר ניסוחים שהקטעים הרלוונטיים שלכם עשויים להשתמש בהם. מדידת Recall at k מול קבוצה מתויגת מגלה לכם אם השינויים הללו אכן סוגרים פערים.
בצד התוכן, כתבו כך שהעמודים שלכם יהיו קלים לאחזור מלא. כסו תת-נושאים ייחודיים באופן מפורש, שמרו על כל קטע ממוקד ועצמאי, והימנעו מלקבור עובדות מרכזיות בתוך קטעים ארוכים ומעורבים שמתחלקים ל-chunks בצורה גרועה. חיזוק ביסוס AI בדרך הזו משמעו שכאשר מנוע מחפש ראיות, התוכן שלכם בנוי כך שניתן למצוא אותו.
קשה למדוד כיסוי בלי Ground Truth. Recall דורש ידיעה של קבוצת המסמכים הרלוונטיים המלאה, שיקרה לתייג ולרוב סובייקטיבית, כך שציוני כיסוי תלויים באיכות קבוצת ההערכה. מספר Recall מחמיא מול קבוצת בדיקה דלה עלול להסתיר פערים אמיתיים בייצור.
גם ב-Precision אין ארוחת חינם. רדיפה אחר כיסוי מקסימלי נוטה למשוך קטעים שוליים שמוסיפים רעש ועלות, ו-Redis מציינת שאחזור יכול להוות כמעט מחצית מזמן ההשהיה עד ה-token הראשון (time-to-first-token), כאשר חמישה קטעים רלוונטיים מאוד לרוב עדיפים על פני עשרים קטעים שוליים. המטרה המעשית היא כיסוי מספק של כל תת-נושא חשוב, מאוזן מול ה-Precision והמהירות שהאפליקציה זקוקה להם.
כיסוי אחזור מידע מודד אם מנגנון אחזור מוצא את כל המידע הרלוונטי שהשאילתה צריכה, מכומת בעיקר באמצעות Recall, ובאופן עדין יותר, באמצעות כיסוי תת-נושאים. זהו הבסיס לאיכות RAG, כי מודל יכול לענות רק על סמך מה שניתן לו, וזה מעוצב על ידי Chunking, Embeddings, שיטת האחזור ו-k.
כדי להעמיק, כדאי לחבר את הנושא הזה עם הערכת אחזור מידע ועם ארכיטקטורת retrieval augmented generation הרחבה יותר, ולהשתמש בכלי המחקר ותכנון התוכן של Sorank כדי לכסות את תת-הנושאים שמנועים מאחזרים. מקורות התייחסות: Redis, Meilisearch, וכן AutoRAG.
כיסוי, הנמדד באמצעות Recall, בודק אם מצאתם את כל המידע הרלוונטי הקיים. Precision בודק אם מה שמצאתם רלוונטי בפועל. למערכת יכול להיות Precision גבוה אך כיסוי נמוך אם היא מחזירה כמה תוצאות נקיות אך מפספסת קטעים חיוניים אחרים. RAG טוב זקוק לכיסוי מספיק כדי לתת למודל את התמונה המלאה, מאוזן מול Precision כדי שלא יטבע ברעש.
המדד הסטנדרטי הוא Recall, לרוב Recall at k, שהוא מספר המסמכים הרלוונטיים שאוחזרו בין k התוצאות המובילות, מחולק במספר הכולל של המסמכים הרלוונטיים. אם קיימים עשרה מסמכים רלוונטיים והמערכת מאחזרת שבעה מהם בעשר התוצאות המובילות, Recall at 10 הוא 0.7. Subtopic Recall מרחיב את זה ובודק כמה תת-נושאים ייחודיים קבוצת האחזור מכסה, נקודת מבט מדויקת יותר על כיסוי.
מנועי תשובה מבוססי AI מרכיבים תשובות מתוך ה-chunks שהם מאחזרים, כך שאם התוכן שלכם אף פעם לא נמצא בקבוצת האחזור הזו, לא ניתן לצטט אותו. כיסוי חזק בצד המנוע משמעו שהוא אוסף את מלוא טווח המקורות הרלוונטיים, וזו ההזדמנות שלכם להיות אחד מהם. כתיבת תוכן ברור, שלם ומובנה היטב שמטפל בתת-נושאים ייחודיים מעלה את הסיכויים שלכם להיות מאוחזרים.