כשהאינדקס חורג מהחלון, פרדיגמת החיפוש עצמה פוגעת במגבלה.
החיפוש הצליח
דנו במגבלות RAG. חוסר הדיוק של דמיון embedding, השרירותיות של פיצול קטעים, חוסר האפשרות של שיפוט איכות.
אבל הדיון הזה עסק באיכות החיפוש. “איך צריך לחפש בצורה מדויקת יותר?”
עכשיו צריך לשאול שאלה אחרת. נניח שהחיפוש מושלם. נניח שהוא מחזיר רק מידע רלוונטי במדויק לשאילתה.
עדיין יש מקרים שבהם זה לא עובד.
בעיית קנה המידה
בסיס ידע פנימי מכיל 1,000 הצהרות. יש אינדקס. מכניסים את האינדקס להקשר. שולחים שאילתה. מאחזרים תוצאות. זה עובד.
הצהרות גדלות ל-100,000. האינדקס גדל. הוא עדיין נכנס לחלון. זה עובד.
הצהרות גדלות ל-10 מיליון. האינדקס עצמו חורג מהחלון.
זו לא בעיה של איכות חיפוש. לא משנה כמה החיפוש מדויק, אם האינדקס שצריך להיוועץ בו כדי לחפש לא נכנס לחלון, החיפוש לא יכול אפילו להתחיל.
וידע גדל. מסמכים ארגוניים מתרבים כל יום. מה שסוכן למד ממשיך להצטבר. הידע בעולם לא מצטמצם.
האם חלון גדול יותר פותר את זה? אם 128K הופך ל-1M הופך ל-10M? אם הידע מגיע ל-100M, אותה בעיה חוזרת. החלון תמיד סופי, והידע תמיד גדל. חוסר האיזון הזה הוא קבוע.
ההבדל בין חיפוש לחקירה
חיפוש משיג תוצאות בשאילתה אחת.
שאילתה: “רווח תפעולי Samsung Electronics רבעון 3 2024” -> תוצאה: 9.18 טריליון וון.
יריה אחת. סיום.
חקירה מגיעה לתוצאות דרך מספר שלבים.
שלב 1: צפה במפת הידע העליונה. “תאגידים,” “תעשיות,” “מקרו-כלכלה,” “טכנולוגיה”… -> בחר “תאגידים.”
שלב 2: צפה במפת התאגידים. “Samsung Electronics,” “SK Hynix,” “Hyundai Motor”… -> בחר “Samsung Electronics.”
שלב 3: צפה במפת Samsung Electronics. “פיננסים,” “משאבי אנוש,” “טכנולוגיה,” “משפטי”… -> בחר “פיננסים.”
שלב 4: צפה במפת הפיננסים. “תוצאות רבעוניות,” “תוצאות שנתיות,” “תוכניות השקעה”… -> בחר “תוצאות רבעוניות.”
שלב 5: אחזר “רבעון 3 2024” מהתוצאות הרבעוניות. -> רווח תפעולי: 9.18 טריליון וון.
התוצאה זהה. התהליך שונה.
חיפוש שואל “יש לך את זה?” חקירה עוקבת “איפה זה עשוי להיות?”
חיפוש דורש שהאינדקס יהיה גלוי לשואל. כל האינדקס חייב להיות נגיש. חקירה צריכה לראות רק את השכבה הנוכחית של המפה. בכל שלב, רק שכבה אחת נכנסת לחלון.
אנלוגיית הספרייה
אתה מבקר בספרייה שכונתית. יש בה 3,000 ספרים. אתה שואל את הספרנית: “יש לכם ביוגרפיה של יי סון-שין?” הספרנית זוכרת: “זה בסוף מדף 3.” חיפוש. עובד.
אתה מבקר בספרייה הלאומית. היא מכילה 10 מיליון כרכים. אתה שואל את הספרנית: “יש לכם ביוגרפיה של יי סון-שין?” הספרנית גם לא יודעת. אף אחד לא שומר בזיכרון 10 מיליון כרכים.
במקום זאת, יש מערכת סיווג.
בודקים את מדריך הקומה הראשונה. -> מדור “היסטוריה” בקומה 3. עולים לקומה 3. -> “היסטוריה קוריאנית” באגף המזרחי. הולכים לאגף המזרחי. -> “שושלת ג’וסון” בשורה D. הולכים לשורה D. -> “דמויות” בסקציה 3 של שורה D. מחפשים בסקציה 3. -> יש ביוגרפיה של יי סון-שין.
קיבולת הזיכרון של הספרנית לא השתנתה. קנה המידה של הספרייה השתנה. השיטה עברה משאילת הספרנית (חיפוש) להליכה במערכת הסיווג (חקירה).
הנה המפתח. בכל שלב, גודל מה שצריך לצפות בו נכנס בקיבולת הזיכרון של הספרנית. מדריך הקומה הראשונה. מפת אזורי הקומה השלישית. רשימת השורות באגף המזרחי. רשימת הסקציות בשורה D. הכל נכנס במבט אחד.
הקטלוג המלא של כל האוסף לא נכנס במבט אחד. אבל המפה של כל קומה כן.
ככה חקירה שונה מחיפוש. לא צריך לראות את הכל בבת אחת. צריך רק לשפוט את הכיוון הבא מהמקום שעומדים בו.
מפות של מפות
במונחים טכניים, זהו מבנה היררכי של מפות.
מפת רמה 1: הסיווג העליון של כל הידע. “בסיס הידע הזה מכיל מידע על תאגידים, תעשיות, מקרו-כלכלה וטכנולוגיה.” עשרות פריטים. נכנס לחלון.
מפת רמה 2: תת-הקטגוריות של כל סיווג עליון. “קטגוריית התאגידים מכילה את Samsung Electronics, SK Hynix, Hyundai Motor…” עשרות עד מאות פריטים. נכנס לחלון.
מפת רמה 3: הקטגוריות המפורטות של כל תת-קטגוריה. “Samsung Electronics מכיל פיננסים, משאבי אנוש, טכנולוגיה, משפטי…” עשרות פריטים. נכנס לחלון.
הצהרות בפועל: המידע הקונקרטי שהמפה ברמה הנמוכה ביותר מצביעה עליו. “הרווח התפעולי של Samsung Electronics ברבעון 3 של 2024 היה 9.18 טריליון וון.”
אם גודל כל שכבה נכנס בחלון, חקירה אפשרית ללא תלות בקנה המידה הכולל של הידע.
גם עם 10 מיליון הצהרות, אם בכל שכבה יש 100 פריטים, מגיעים ליעד ב-5 שלבי חקירה. 100 -> 100 -> 100 -> 100 -> 100 = כיסוי עד 10 מיליארד. בכל שלב, רק 100 פריטים נכנסים לחלון.
זו אותה דרך שבה B-tree מוצא נתונים בדיסק. הוא לא טוען את כל הנתונים לזיכרון. הוא קורא רק את הצומת הנוכחי של העץ ועובר לבא. נתונים בכל קנה מידה ניתנים לחקירה ללא תלות בגודל הזיכרון.
חלון ההקשר הוא הזיכרון. בסיס הידע הוא הדיסק. המפה היא צומת B-tree.
הסוכן צועד
בחקירה רב-שלבית, מי בוחר את הכיוון בכל שלב?
הסוכן.
מכניסים את מפת רמה 1 להקשר. הסוכן קורא אותה, משווה אותה לשאילתה, ובוחר את כיוון “תאגידים.”
מבקשים את מפת רמה 2. מפת תת-הקטגוריות של תאגידים נכנסת להקשר. הסוכן קורא ובוחר את כיוון “Samsung Electronics.”
מבקשים את מפת רמה 3. הסוכן בוחר “פיננסים.”
זה שימוש בכלי של הסוכן. קריאת מפה היא קריאת כלי. בחירת כיוון היא שיפוט. בקשת המפה הבאה היא קריאת הכלי הבאה.
בחיפוש, הסוכן שולח שאילתה אחת ומקבל תוצאה. פסיבי. בחקירה, הסוכן מבצע שיפוטים מרובים ובוחר כיוונים. אקטיבי.
כאן הנדסת הקשר פוגשת עיצוב סוכנים. מה נכנס להקשר נקבע שלב אחר שלב דרך שיפוט הסוכן. בניית ההקשר עוברת מהרכבה סטטית לחקירה דינמית.
הבעיה הזו בקושי נדונה היום
אם מסתכלים על דיונים בקהילת RAG, רוב האנרגיה מרוכזת באיכות החיפוש.
מודלי embedding טובים יותר. אסטרטגיות חלוקה טובות יותר. ארכיטקטורות reranker. חיפוש היברידי. Graph RAG.
הכל חשוב. הכל על “איך להשיג תוצאות טובות יותר מחיפוש יחיד.”
“מה אם חיפוש יחיד לא מספיק?” בקושי נדון.
הנקודה שבה האינדקס חורג מהחלון. הנקודה שבה התוצאות רבות מכדי להיכנס. הנקודה שבה קנה המידה של הידע שובר את הנחת היסוד של פרדיגמת החיפוש עצמה.
הנקודה הזו מתקרבת. ידע גדל והחלון סופי.
רוב הפתרונות הנוכחיים הם התחמקות. אחזר רק את k העליונים. זרוק את השאר. הגדל את החלון. העלויות עולות. חלק את הידע. מאגרי וקטורים נפרדים לכל תחום.
כולם נתקלים באותה בעיה שוב כשקנה המידה גדל עוד.
תנאים מוקדמים לחקירה
כדי שחקירה תעבוד, הידע חייב להיות במבנה שניתן לחקירה.
היררכיה חייבת להתקיים. אם הידע מונח בצורה שטוחה, חקירה בלתי אפשרית. מאגר וקטורי embedding הוא שטוח. כל הקטעים באותה רמה. אין היררכיה, ולכן המושג “לרדת עמוק יותר” לא קיים.
כל שכבה חייבת להיכנס לחלון. אם מפה אחת חורגת מהחלון, החקירה נכשלת. מספר האפשרויות בכל רמת היררכיה חייב להיות בגודל מתאים. זו בעיית עיצוב סיווג.
מסלולים חייבים להיות מגוונים. חייב להיות אפשרי להגיע לאותו מידע דרך מסלולים מרובים. דרך “Samsung Electronics -> פיננסים -> רווח תפעולי” או דרך “תעשיית מוליכים למחצה -> חברות מרכזיות -> Samsung Electronics -> תוצאות.” כי המסלול הטבעי משתנה בהתאם לשאלה. אם קריטריון הסיווג קבוע לאחד, הוא מתאים לחלק מהשאלות ולא לאחרות.
למבנה תיקיות יש היררכיה אבל רק מסלול אחד. קובץ שייך רק לתיקייה אחת. רק המסלול “Samsung Electronics/פיננסים/רווח תפעולי” קיים. כששאלה על “תעשיית מוליכים למחצה” מגיעה, חקירה טבעית דרך מבנה התיקיות בלתי אפשרית.
לגרף יש גם היררכיה וגם מסלולים מגוונים. צומת אחד יכול להיות מחובר למספר צמתים-הורים. צומת Samsung Electronics נגיש דרך מסלול “תאגידים,” מסלול “תעשיית מוליכים למחצה,” או מסלול “חברות רשומות ב-KOSPI.” ללא תלות בהקשר שממנו מגיעה שאלה, מסלול טבעי קיים.
זו בעיה לא פתורה
יש משהו שצריך לומר בכנות.
הצורך בחקירה רב-שלבית ברור. אבל עדיין אין מערכת סטנדרטית שמיישמת את זה ביעילות.
איך יוצרים אוטומטית את ההיררכיה של מפות? איך קובעים את הגודל המתאים של כל שכבה? מה קורה כשהסוכן בוחר כיוון שגוי? מה קורה לזמן התגובה ככל שעומק החקירה גדל?
אלו שאלות פתוחות.
אבל העובדה שבעיה אינה פתורה לא אומרת שהבעיה לא קיימת.
ידע גדל. החלון סופי. הנקודה שבה חיפוש לבדו לא מספיק מתקרבת.
חקירה חייבת להיות מוכנה כתשובה לנקודה הזו. אם היא לא מוכנה, האפשרויות היחידות שנותרות הן להגדיל את החלון או לזרוק ידע.
סיכום
חיפוש מחזיר תוצאות בשאילתה אחת. כשקנה המידה של הידע גדל מספיק, זה לא מספיק. כי האינדקס עצמו חורג מהחלון.
חקירה עוקבת אחר מפות היררכיות, בוחרת כיוונים תוך כדי ירידה. מה שצריך לצפות בו בכל שלב נכנס בחלון. כל שלב סופי ללא תלות בקנה המידה הכולל. בדיוק כמו ש-B-tree מוצא נתונים בלי לטעון את כל הדיסק לזיכרון.
הסוכן שופט את הכיוון בכל שלב. בניית ההקשר עוברת מהרכבה סטטית לחקירה דינמית. כאן הנדסת הקשר פוגשת עיצוב סוכנים.
כדי שחקירה תעבוד, הידע חייב להיות היררכי, כל שכבה חייבת להיות סופית, ומסלולים חייבים להיות מגוונים. למבנה תיקיות יש רק מסלול אחד. לגרף יש מסלולים מגוונים.
זו עדיין בעיה לא פתורה ללא פתרון סטנדרטי. אבל כל עוד ידע גדל והחלון סופי, זו בעיה שצריך לפתור.