top of page

בעיית ה Small-to-Big Retrieval והקשר בין צמתים בגרף

  • Writer: shlomoyona
    shlomoyona
  • 7 days ago
  • 5 min read

מהפוסט הזה נדבר על בעיות נפוצות ופתרונות בית ספר בארגונים גדולים שמבצעים מעבר ממערכות אחזור מידע פשוטות לפלטפורמות שמבוססות על סוכנים חכמים. בעוד שמערכות מסורתיות סומכות על חיפוש סמנטי ליניארי מתוך מסדי נתונים וקטוריים מערכות מודרניות צריכות לבצע פעולות חשיבה אוטונומיות לנווט בתוך מאגרי מידע מורכבים ולקבל החלטות על בסיס הקשר רחב במיוחד. מבנים שמשלבים ייצוגי ידע שמבוססים על גרפים מנגנוני הערכה עצמית ותשתיות שמנהלות הרשאות בקפדנות מהווים את עמוד השדרה של מערכות אלו. עד כאן ההקדמה ועכשיו הבעיה הנפוצה של הפעם... קרבה סמנטית אינה מעידה על נכונות עסקית. גרף ידע חרף עוצמתו, עלול להחמיר הזיות אם יסתמך אך ורק על דמיון וקטורי. בפוסט הזה ישנה הנחה שחלוקה לשלישיות של נושא-נשוא-מושא היא הגורם לניתוק מההקשר. בפועל, הבעיה היא לרוב בסְכֵימָה של הגרף ולא בעצם החלוקה. אם הגרף אינו כולל ציר זמן או גרסאות כקשתות, שום אלגוריתם ניווט לא יפתור את זה. אחרי הדיסקליימר הזה, ניגש לבעיה ולפתרון בית הספר שלה.

אובדן ההקשר המבצעי


מפתחים פותרים את אתגר חלוקת הטקסט במערכות סטנדרטיות בעזרת טכניקות אחזור מדורג. בשיטות אלו המערכת שולפת משפט בודד או פיסקה קטנה שמייצגים את המשמעות באופן מדויק ומזינה למודל השפה את המסמך השלם שעוטף אותם. שיטה זו עובדת היטב כאשר אנחנו מסדרים את המידע בצורה ליניארית והיררכית מכיוון שקרבה פיזית של טקסט בתוך מסמך המקור מעידה לרוב על קשר לוגי הדוק.  


כאשר אנחנו מוסיפים רשת ידע שמבוססת על גרפים המבנה הופך לרשתי ורב ממדי ללא גבולות מסמך מוגדרים. בתוך גרף ידע ישות בודדת אינה מסתיימת במסמך יחיד אלא עשויה לקשר עשרות מסמכים שונים וצמתים אחרים שאספנו מכל רחבי הארגון. האתגר המרכזי עולה כאשר הסוכן מעגן עובדות. כאשר הסוכן אוסף מידע כדי לבסס את התשובה שלו הוא מקבל מהגרף אוסף של צמתים מפוזרים שאין להם היררכיה טקסטואלית ברורה. מודל השפה מחלץ קשרים בין הצמתים שמבוססים על דמיון סמנטי בשלב עיבוד הנתונים אך קשרים אלו עלולים להשמיט את ההקשר הזמני או את הסטטוס התפעולי של המידע. לדוגמה סוכן עשוי לשלוף נתונים טכניים על רכיב חומרה מסוים. בגלל מבנה הקשתות בגרף הנתונים קרובים מאוד מבחינה סמנטית לישות שמייצגת את הרכיב אך הסוכן עלול לפספס שהנתונים שייכים לגרסה ישנה של המוצר שהגדרנו כבלתי נתמכת. התוצאה הישירה היא הזיה טכנולוגית מסוכנת שבה המערכת ממליצה למהנדס להשתמש ברכיב ישן אך ורק בגלל קרבה סמנטית מטעה.  


בנוסף לכך כאשר אנחנו מחברים צומת אב מרכזי למאות צמתי בנים ממקורות שונים שליפה נאיבית אל תוך חלון ההקשר של מודל השפה מובילה להצפת זיכרון ואובדן מידע חשוב בגלל המגבלות של מנגנון הקשב של המודל. ארגונים מגלים שטכניקות שמבוססות על חפיפת טקסט מסורתית כושלות לחלוטין מול גרפים צפופים שמכילים קשרים לא ליניאריים ודורשות אלגוריתמי ניווט שמבינים את ההקשר. תהליך שבו אנחנו מחלקים את המסמכים לשלישיות של נושא נשוא מושא מנתק את הטקסט מסביבתו הטבעית. אם איננו שומרים שכבת מטא דאטה מחברת הסוכן מאבד את היכולת להבין את התמונה המלאה.  


פתרון בית הספר לבעיה


התשובה לבעיה זו יושבת ביישום גישה היברידית שמשלבת מנגנוני אחזור היררכיים קלאסיים יחד עם טכניקות מתקדמות של ניווט שמבוסס על קהילות בגרף. כדי לפתור את חוסר ההיררכיה עלינו לבנות את מודל הנתונים כך שיפריד באופן ברור בין שלוש רמות של רכיבים אשר כוללות ישויות שמייצגות את הצמתים המושגיים קשרים שמייצגים את קשתות הגרף במבנה של שלישיות וקטעי טקסט שמקשרים את הצמתים למסמכי המקור שמספקים את ההקשר המלא. הפרדה זו מאפשרת לנו לבצע חיפוש וקטורי ממוקד לכל סוג רכיב בנפרד. כדי למנוע הזיות שנובעות מקרבה סמנטית שגויה אנחנו מיישמים מנגנון סיווג שמבוסס על קהילות. בתהליך העיבוד המקדים אנחנו מפעילים אלגוריתמים לחלוקת גרפים על מבנה הרשת כדי לאתר ולגבש היררכיות של קהילות. כל קהילה מייצגת אשכול של ישויות בעלות קשרים חזקים ביניהן שאנחנו מחשבים בעזרת מדדי צפיפות מרחבית. עבור כל קהילה מודל השפה מייצר סיכום קהילה מובנה שמשמש כצומת על בתוך הגרף.  


כאשר הסוכן ניגש לבצע חיפוש המערכת צריכה להחליט בין מספר אסטרטגיות ניווט בהתאם למהות השאילתה.


האסטרטגיה הראשונה היא חיפוש מקומי שמיועד לשאלות עובדתיות וממוקדות תוך שמירה על חיבור ישיר למסמך המקור כדי למנוע אובדן פרטים. בשיטה זו אנחנו ממירים את השאילתה לווקטור והמערכת מאתרת את הישויות הקרובות ביותר סמנטית תוך הרחבת ההקשר דרך קשתות ישירות לצמתי הטקסט שמקושרים אליהן. לאחר מכן המערכת מבצעת ניווט מוגבל בגרף כדי לבנות את ההקשר תוך שימוש בקשרים הישירים של הישות שאנחנו מדרגים במקום הגבוה ביותר.


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


האסטרטגיה השלישית משלבת ניווט איטרטיבי שמאפשר לסוכן להתחיל מסיכומים קהילתיים ולהעמיק אלכסונית לעבר ישויות יעד כאשר הוא מזהה צורך בכך בתהליך סינון המידע. ניווט הדרגתי זה מייצר מסלול בדיקה שמאפשר לסוכן לאמת את תוקף המידע לאורך נתיב החיפוש ולמנוע סטייה סמנטית. שילוב של סיכומי קהילות בגרף מבטיח שכאשר הסוכן מאחזר מידע על רכיב חומרה הוא נחשף גם להקשר הקהילתי שמציין כי מדובר בגרסה שאינה נתמכת וכך אנחנו מונעים לחלוטין את ההזיה של המלצה על רכיב מיושן.  


כדי ליישם תהליך זה בפועל אנחנו ממליצים להשתמש באינדקס היררכי שבו אנחנו שומרים את וקטורי הישויות והקשרים באוספים נפרדים בתוך מסד הנתונים הווקטורי תוך קישור למזהה רשומה אחיד. חשוב להגדיר סכימת נתונים לגרף כך שכל צומת טקסט שמהווה חלקת מידע קטנה יכיל קשת ייעודית מסוג שייכות אל צומת מסמך האב. כאשר אנחנו מבצעים חיפוש מקומי עלינו להגביל את עומק הסריקה בעזרת טכניקת מעבר בגרף שמאפשרת דילוג בודד בלבד מהישות שמצאנו אל צמתי הטקסט הבנים שלה. טכניקה זו מבטיחה שהסוכן יקבל את ההקשר הטקסטואלי המדויק מבלי להציף את חלון ההקשר בנתונים רעננים אך לא רלוונטיים. לאור זאת עלינו לחשוב כיצד לאזן בין עומק הסריקה בגרף לבין מגבלות חלון ההקשר של המודל כאשר אנחנו מחברים ישות מרכזית למאות מסמכי מקור רלוונטיים במידה שווה וכיצד לתעדף אילו צמתי בנים נזין ראשונים לתהליך ההערכה.  


פתרונות מתחרים ומשלימים

האם פתרון בית הספר נחשב גם כ-best practice? כן. האם משקף את חזית הטכנולוגיה? כן. אבל אין זה אומר שאין לו מתחרים. יש לו מתחרים.


לגבי אחזור גלובלי הפתרון שלנו עוסק בסיכומי קהילות אבל המתחרה הוא Map-Reduce RAG, שליחת צמתים במקביל למודל וסיכום התוצאות. הפתרון שהצענו יעיל יותר מבחינת עלות וזמן ריצה. אבל חשוב לדעת על אלטרנטיבה טובה אחרת.


לגבי דיוק עובדתי הצענו ניווט מקומי מוגבל (מה שנקרא single jump) אבל יש גם אלטרנטיבה בצורת Self-RAG / Corrective RAG שמעריך את איכות השליפה לפני השימוש. הפתרון שלנו הוא מבני בגרף בשעה שהאלטרנטיבות משמשות פתרונות תהליכיים. פה אולי זה יותר פתרונות משלימים מאשר מתחרים. טוב לדעת שיש אותם.


לגבי מניעת הצפה, דיברנו והצענו להגביל את עומק הסריקה וסיכומי הקהילה. יש גם מה שנקרא LongContext Re-Ranking, שימוש במודלים כמו Cohere כדי לדרג מחדש רק את ה Top-k. כיום ה-best practice הוא שילוב: קודם לשלוף מהגרף, ואז לבצע Re-Rank ליחידות הטקסט. לסיום נאמר ש-Hybrid Search עוזר לטפל פספוסים באמצעות שילוב של חיפוש וקטורי (דמיון סמנטי), ניווט בגרף (הקשר רשתי וקהילתי כפי שתיארנו כאן) ו-פילטור מטהדטה (סינון קשיח של גרסאות/תאריכים כדי למנוע בעיית legacy).


בעיית ה Small-to-Big Retrieval והקשר בין צמתים בגרף
בעיית ה Small-to-Big Retrieval והקשר בין צמתים בגרף

צריכים עזרה עם AI/GenAI/AgenticAI/AI Platform ועם מעבר מהוכחת יכולת לעבודה בסקייל מלא באנטרפרייז? 


זקוקים לשותף טכנולוגי עתיר ניסיון שיודע לספק שירותי מחקר ופיתוח Hands-on, מארגוני אנטרפרייז ועד סטארט-אפים, על מנת להוציא חזון אלגוריתמי שלכם מהכוח אל הפועל? 


רוצים מחקר אלגוריתמי יישומי?  


הבה נדבר!


שלמה יונה,

מייסד ומדען ראשי, 

מתמטיקאי מחקר ופיתוח בע"מ

053-7326360


פודקאסט על החברה ועליי, שלמה יונה, ואופן העבודה שלנו ואיתנו:


 
 
 

Comments


  • Facebook Social Icon
  • LinkedIn Social Icon

© 2010-2026 mathematic.ai

bottom of page