שלשות הן טענות, לא עובדות תמונה: נוצרה על ידי AI

שתיקתה של Wikidata


ב-Wikidata יש שלשה כזו:

(tomato, instance_of, vegetable) — rank: preferred
(tomato, instance_of, fruit)     — rank: normal

מי החליט preferred? למה preferred? באיזה הקשר preferred?

Wikidata שותקת בשאלות אלה. עורך מחליט, המערכת שומרת את ההחלטה. לא יותר.

אבל האם עגבנייה היא ירק או פרי — זו לא קבוע פיזיקלי. שאלו שף — זה ירק. שאלו בוטנאי — זה פרי. שאלו את בית המשפט העליון של ארה"ב — זה ירק (1893, Nix v. Hedden). שלוש תשובות לאותה שאלה, ואף אחת מהן אינה שגויה.

שלשות בגרף ידע אינן עובדות. הן טענות.


טענות דורשות טיעון

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

אלמנטתפקידדוגמת העגבנייה
Claimטענה“עגבנייה היא ירק”
Groundראייה ישירה“מסווגת כירק בטקסונומיה הקולינרית”
Backingמקור/סמכות“Le Guide Culinaire (1903)”
Qualifierהיקף“בהקשר קולינרי” (confidence 0.8)
Rebuttalתנאי הפרכה“בהקשר בוטני, זה פרי — מבנה השחלה”
Warrantלוגיקה מקשרת“סיווג מסורתי של מרכיבים מבוסס על שימוש קולינרי”

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

הרעיון עצמו אינו חדש. באקדמיה, מסגרות הטיעון המופשטות של Dung (1995),‏ ASPIC+ (2010), ו-nanopublication התמודדו עם טיעון על גבי גרפי ידע. ההבדל הוא דבר אחד — אנחנו מספקים את זה כקוד בר-הרצה, לא כמאמרים. התקינו עם go install, כתבו כללים כפונקציות Go, הריצו עכשיו.


ההקשר קובע אמת

אחסון הוא מבנה טיעון. שיפוט הוא זמן ריצה.

ctx.Set("domain", "cooking")
results, _ := g.Evaluate(ctx)
// verdict: +0.8 → vegetable

ctx.Set("domain", "botany")
results, _ = g.Evaluate(ctx)
// verdict: -0.9 → not a vegetable (fruit)

אותו גרף, אותו מבנה טיעון, אותו קוד. רק ההקשר השתנה. שאילתה בהקשר קולינרי: +0.8 (ירק). שאילתה בהקשר בוטני: -0.9 (פרי). ה-verdict עוקב אחרי ההקשר.

זהו ההבדל המכריע מה-rank הסטטי של Wikidata. לא עורך מחליט preferred — ההקשר של השואל הוא שמייצר את השיפוט.


האם פלוטו הוא כוכב לכת?

Triple: (Pluto, instance_of, planet)

Claim:
  Ground: "Solar orbit, spherical, sufficient mass"
  Backing: IAU 1930 classification resolution

Rebuttal:
  Ground: "Orbit-clearing criterion not met"
  Backing: IAU 2006 Resolution 5A

Exception to rebuttal:
  Ground: "Still taught as a planet in education curricula"
  Backing: NASA Education Resources 2024
ctx.Set("domain", "astronomy_formal")
// verdict: -0.8 (not a planet)

ctx.Set("domain", "education")
// verdict: +0.3 (can be treated as planet in context)

למי שלמד בבית ספר יסודי לפני 2006, פלוטו הוא כוכב לכת. עבור ה-IAU, פלוטו הוא כוכב לכת ננסי. לשניהם יש ראיות, לשניהם יש מקורות. תפקיד המערכת אינו לבחור אחד — אלא לאחסן את שניהם ולשפוט לפי ההקשר.


כאשר מקורות מותקפים

בדיון אקדמי, המקורות עצמם מותקפים לעתים קרובות.

// Claim: Drug X is effective
claim := g.Rule(drugXEffective).
    With(&TripleSpec{
        Ground:  "Significant effect in Phase 3 clinical trial",
        Backing: "Smith et al. (2020), NEJM",
    })

// Rebuttal: Independent replication failed
counter := g.Counter(replicationFailed).
    With(&TripleSpec{
        Ground:  "Effect not confirmed in independent replication",
        Backing: "Jones et al. (2022), Lancet",
    })
counter.Attacks(claim)

// Undercutter: conflict of interest
undercutter := g.Counter(conflictOfInterest).
    With(&TripleSpec{
        Ground:  "Smith's funding came from the pharmaceutical company",
        Backing: "Retraction Watch (2023)",
    })
undercutter.Attacks(claim)

המאמר של Smith פורסם ב-NEJM. מקור סמכותי. אבל כאשר מקור המימון נחשף, כל הטענה המבוססת על המאמר הזה נחלשת. ה-counter מפריך ישירות את הטענה; ה-undercutter מחליש את בסיס הראיות של הטענה. שניהם תוקפים את הטענה, אבל בדרכים שונות. ה-h-Categoriser מסנתז את עוצמת ההתקפות הללו כדי לחשב את ה-verdict הסופי.

האמת נעלמת במהירות האור; רק טענות נשארות. המערכת מנהלת טענות, לא מכריזה אמת.


האם כל שלשה צריכה טיעון?

לא.

(water, chemical_formula, H2O)   — Settled. No argumentation needed.
(tomato, instance_of, ?)         — Contested. Attach argumentation.
(Pluto, instance_of, ?)          — Contested. Attach argumentation.
(Jerusalem, capital_of, ?)       — Contested. Attach argumentation.

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

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


מנוע השיפוט: h-Categoriser

גרף הטיעון נשפט על ידי h-Categoriser של Amgoud. הוא מחשב ציון קבילות בסולם [-1, +1] לכל צומת — ככל שקבילות התוקף גבוהה יותר, כך ציון הצומת המותקף יורד יותר. איטרציה רקורסיבית עד להתכנסות.

ביצועים: גם עם 100,000 שלשות שנויות במחלוקת שכל אחת נושאת את גרף הטיעון שלה, שאילתה מעריכה רק את הגרף של אותה שלשה. ללא תלות בגודל הכולל של גרף הידע.

Triple lookup:        milliseconds (existing index)
Argumentation eval:   milliseconds (h-Categoriser)
Verdict trace:        milliseconds (graph traversal)

אל תסקלו את המודל. סקלו את הטיעון.


מיפוי ל-ranks של Wikidata

Wikidataהרחבת toulmin
preferred rankverdict > +0.5 (בהקשר הנוכחי)
normal rank0 < verdict ≤ +0.5
deprecated rankverdict ≤ 0
referenceBacking
qualifierQualifier + תנאי פונקציית הקשר

ההבדל: ה-rank של Wikidata הוא סטטי — עורכים מחליטים. ה-verdict של Toulmin הוא דינמי — ההקשר ומבנה הטיעון מחליטים.


התמונה הגדולה

מערכת זו אינה ייחודית לתחום.

AI Prefrontal Cortex (feature selection):
  triple = (feature, should_include_in, app_type)
  context = current project's app tags
  verdict = should this feature be included?

Knowledge graph general:
  triple = (subject, predicate, object)
  context = querier's domain/perspective
  verdict = is this triple true in current context?

אותו מנוע. אותו מבנה. תחום שונה. כללים הם פונקציות Go, חריגים הם גרפי defeats, שיפוט הוא h-Categoriser. ללא DSL.


למה זה חשוב

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

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

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

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


קישורים קשורים

  • toulmin — Go Rule Engine — מנוע כללים מבוסס מודל הטיעון של Toulmin. מנוע השיפוט מאחורי מאמר זה.
  • Ratchet Pattern — אימות דטרמיניסטי ונעילת ratchet.

קוד: github.com/park-jun-woo/toulmin

go install github.com/park-jun-woo/toulmin@latest

דוגמאות הקוד במאמר זה מייצגות חזון עיצובי המבוסס על ה-API הנוכחי של ספריית toulmin. הרחבת גרף הידע (TripleSpec, הערכה מבוססת הקשר) נמצאת בפיתוח פעיל. מנוע השיפוט המרכזי (h-Categoriser, גרף defeats,‏ Rule/Counter) עובד היום.


References

  • Toulmin, S. (1958). The Uses of Argument. Cambridge University Press.
  • Dung, P.M. (1995). “On the Acceptability of Arguments and its Fundamental Role in Nonmonotonic Reasoning, Logic Programming and n-Person Games.” Artificial Intelligence, 77(2), 321–357.
  • Amgoud, L. & Ben-Naim, J. (2013). “Ranking-based semantics for argumentation frameworks.” SUM 2013, LNCS 8078, 134–147.
  • Modgil, S. & Prakken, H. (2014). “The ASPIC+ framework for structured argumentation: a tutorial.” Argument & Computation, 5(1), 31–62.
  • Groth, P. et al. (2010). “Anatomy of a Nanopublication.” Information Services & Use, 30(1-2), 51–56.
  • Nix v. Hedden, 149 U.S. 304 (1893). United States Supreme Court.