מידע שנכון בנפרד יכול להיות שגוי יחד.


האימות עבר. הסינון עבר.

אימות מכני סינן שגיאות פורמט. סינון בחר על בסיס רלוונטיות, אמינות ועדכניות.

נותרו 30 פיסות מידע. כולן תקינות, כולן רלוונטיות, כולן אמינות, כולן עדכניות.

מכניסים את 30 אלה להקשר?

לא. צריך לבדוק עוד דבר אחד. האם 30 אלה סותרים זה את זה?


סתירה אינה תכונה של מידע בודד

בואו נתבונן בשתי הצהרות.

  • מקור: גילוי IR של Samsung Electronics, אוקטובר 2024. “מנכ"ל Samsung Electronics: ג’ון יאנג-היון.”
  • מקור: גילוי IR של Samsung Electronics, מרץ 2024. “מנכ"ל Samsung Electronics: קיונג קייה-היון.”

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

אבל כששתיהן נכנסות לאותו הקשר, יש בעיה. האם מנכ"ל Samsung Electronics הוא ג’ון יאנג-היון או קיונג קייה-היון?

אף אחת מההצהרות אינה שגויה. במרץ, קיונג קייה-היון היה נכון. באוקטובר, ג’ון יאנג-היון נכון. כל אחת בנפרד צודקת. אבל כשהן מתקיימות יחד בהקשר, ה-LLM מתבלבל.

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


סוגי סתירות

סתירות בהקשר נופלות לכמה סוגים.

סתירה זמנית

הנפוצה ביותר.

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

“מנכ"ל Tesla: אילון מאסק” ו- “מחיר מניית Tesla: $194” נמצאים באותו הקשר, אבל מידע המנכ"ל הוא נכון ל-2024 ומחיר המניה הוא מיוני 2023. ה-LLM עלול להתייחס אליהם כמידע מאותה נקודת זמן.

מקרים עדינים יותר גם מתרחשים. “ריבית בסיס בדרום קוריאה: 3.50%” הוא נכון לינואר 2024, ו- “אינפלציית מחירי הצרכן בדרום קוריאה: 2.0%” הוא נכון לאוקטובר 2024. שניהם תקינים ושניהם קשורים לכלכלה הקוריאנית, אבל יש פער של 9 חודשים. אם הפער הזה משפיע על ההסקה תלוי בהקשר.

סתירה בין מקורות

מקורות שונים מציגים ערכים שונים לאותה עובדה.

  • מקור A: “גודל שוק AI עולמי ב-2024: 184 מיליארד דולר.”
  • מקור B: “גודל שוק AI עולמי ב-2024: 214 מיליארד דולר.”

אי אפשר להכריז על אף אחד מהם כ-“שגוי” באופן חד-משמעי. הגדרת היקף השוק עשויה להיות שונה. שיטות המדידה עשויות להיות שונות. אבל אם שניהם נמצאים בהקשר, ה-LLM חייב לבחור אחד, למזג שניהם, או להתבלבל.

סתירה הסקתית

לא ערכים שסותרים ישירות, אלא לוגית בלתי תואמים כשממוקמים יחד.

“נתח שוק של חברה A: 60%.” “נתח שוק של חברה B: 55%.”

כל אחד תקין. אבל הם מסתכמים ב-115%. הוספת המתחרים הנותרים תעלה מעל 100%. אחד מהם הוא מזמן אחר, משתמש בהגדרת שוק אחרת, או שגוי.

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


LLM לא מתמודדים טוב עם סתירות

בתיאוריה, ה-LLM אמור להיות מסוגל לזהות ולפתור סתירות. “שני פיסות המידע האלה שונות בזמן, ולכן אענה על בסיס העדכנית יותר.”

בפועל, זה לא מה שקורה.

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

זיהוי סתירות דורש הסקה. לדעת ש-“מנכ"ל: ג’ון יאנג-היון” ו-“מנכ"ל: קיונג קייה-היון” סותרים זה את זה דורש את הידע הקודם שיש רק מנכ"ל אחד בנקודת זמן נתונה. בדיקה אם סכום נתחי השוק חורג מ-100% דורשת חשבון. זה תלוי ביכולת ההסקה של ה-LLM.

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

לסיכום, טיפול בסתירות אחרי שנכנסות להקשר הוא יקר והתוצאה אינה ודאית. סתירות חייבות להיפתר לפני הכניסה להקשר.


למה בדיקת עקביות קשה בשפה טבעית

נניח שבודקים את העקביות של 30 קטעי שפה טבעית.

קודם כל, צריך לקבוע אם הם עוסקים באותו נושא. האם “Samsung Electronics,” “סמסונג אלקטרוניקס” ו-“סמסונג” מתייחסים לאותה ישות. בשפה טבעית, זה לא ודאי. האם “סמסונג” מתכוון ל-Samsung Electronics, Samsung C&T, או Samsung Life דורש קריאת ההקשר.

אחר כך, צריך לקבוע אם הם מתארים את אותו מאפיין. האם “הכנסות,” “revenue,” “הכנסות כוללות” ו-“הכנסות ברוטו” הם אותו דבר. האם “רווח תפעולי,” “operating profit” ו-“שולי רווח תפעולי” הם אותו דבר או שונים.

אחר כך, צריך לחלץ את ייחוסי הזמן. מתי זה “הרבעון האחרון”? מתי זה “לאחרונה”? מתי זה “השנה”?

רק אחרי כל זה אפשר סוף סוף להשוות אם שתי הצהרות סותרות זו את זו.

עם 30 הצהרות, יש 435 זוגות השוואה. כל זוג חייב לעבור את התהליך שלמעלה. הכל הסקה של LLM. הכל יקר. הכל הסתברותי.


בדיקת עקביות בייצוגים מובנים

בייצוג מובנה, המצב שונה.

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

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

זמן הוא שדה. יש ערך כמו “2024-Q3.” אין צורך לפרש “הרבעון האחרון.” אם שתי הצהרות חולקות את אותו זמן – זו השוואת ערך אחת.

כששלושת הדברים האלה דטרמיניסטיים, תבניות זיהוי סתירות הופכות למכניזבלות.

אותה ישות + אותו מאפיין + אותו זמן + ערך שונה = סתירה. אותה ישות + אותו מאפיין + זמן שונה + ערך שונה = שינוי. לא סתירה. ישות שונה + אותו מאפיין + אותו זמן + סכום ערכים > 100% = סתירה הסקתית.

אין צורך ב-LLM לזה. השוואת שדות וחשבון.

לא כל הסתירות ניתנות לתפיסה. אם “שוק ה-AI צומח” ו-“השקעות AI יורדות” סותרים זה את זה עדיין דורש שיפוט סמנטי. אבל אם סתירות שניתנות לזיהוי מכני נתפסות קודם, נשארים רק מקרים שדורשים שיפוט סמנטי. שוב, הזול קודם.


אסטרטגיות פתרון לבדיקות עקביות

אחרי זיהוי סתירה, צריך לפתור אותה.

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

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

האמין ביותר קודם. בחר את זה עם ודאות גבוהה יותר. או אם מוגדר דירוג מקורות, בחר את המקור בדרגה הגבוהה יותר. מקור ראשוני > מקור משני > מקור בלתי רשמי.

הצג שניהם. אל תפתור את הסתירה. הכנס שניהם להקשר, אבל סמן את הסתירה במפורש. “מקור A אומר 184 מיליארד דולר; מקור B אומר 214 מיליארד דולר. ככל הנראה בשל הבדלי הגדרה.” תן ל-LLM להסיק עם מודעות לסתירה.

הוצא שניהם. אם הסתירה לא ניתנת לפתרון, הוצא את שני הצדדים. שום מידע עדיף על מידע שגוי.

בצינור שפה טבעית, אסטרטגיות אלה נכתבות בשפה טבעית בפרומפט. “אנא תעדף את המידע העדכני ביותר.” אם ה-LLM ממלא את זה באופן עקבי – שוב, שאלה של הסתברות.

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


מיקום בצינור

בדיקת עקביות באה אחרי סינון.

אימות -> סינון -> עקביות.

למה הסדר הזה?

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

בדיקת עקביות משווה זוגות. ל-n הצהרות, יש n(n-1)/2 זוגות. 1,000 מניב בערך 500,000 זוגות. 30 מניב 435.

אם אימות וסינון מצמצמים 1,000 ל-30, עלות בדיקת העקביות יורדת מ-500,000 ל-435 – אחד מאלף.

סדר חשוב.


סיכום

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

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

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

בשפה טבעית, בדיקת עקביות היא הסקת LLM לכל אורך הדרך. זהות ישות, זהות מאפיין, חילוץ זמן, השוואת ערכים – הכל הסתברותי ויקר.

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

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