2026-04-10 23:20:41 -04:00
---
layout: default
title: "מקור החילוץ: מודל תת-גרף"
parent: "Hebrew (Beta)"
---
2026-04-10 12:22:20 -04:00
# מקור החילוץ: מודל תת-גרף
2026-04-10 23:20:41 -04:00
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
2026-04-10 12:22:20 -04:00
## בעיה
מעקב מקורות מידע בזמן החילוץ מייצר כיום מימוש מלא לכל טריפל
2026-04-11 01:08:44 +00:00
< < < < < < < HEAD
2026-04-10 12:22:20 -04:00
שחולץ: `stmt_uri` ייחודי, `activity_uri` ו -מטא-דאטה של PROV-O עבור כל
עובדה ידע בודדת. עיבוד של חלק אחד שמייצר 20 קשרים מייצר כ-220
טריפלי מעקב מקורות מידע בנוסף ל-כ-20 טריפלי ידע - תקורה של בערך 10:1.
2026-04-11 01:08:44 +00:00
=======
שחולץ: `stmt_uri` ייחודי, `activity_uri` ו -מטא-דאטה של PROV-O הקשורים
לכל עובדה בידע. עיבוד של חלק אחד שמניב 20 קשרים מייצר כ-220 טריפלי
מעקב מקורות מידע בנוסף ל-כ-20 טריפלי ידע - תקורה של בערך 10:1.
>>>>>>> 82edf2d (New md files from RunPod)
2026-04-10 12:22:20 -04:00
זה יקר (אחסון, אינדקס, העברה) וגם לא מדויק מבחינה סמנטית. כל חלק
מעובד על ידי קריאה אחת של מודל שפה גדול (LLM) שמייצר את כל
2026-04-11 01:08:44 +00:00
< < < < < < < HEAD
2026-04-10 12:22:20 -04:00
הטריפלים שלו בעסקה אחת. המודל הנוכחי של טריפל בודד מטשטש את זה
על ידי יצירת האשליה של 20 אירועי חילוץ עצמאיים.
בנוסף, לשני מתוך ארבעה מעבדי החילוץ (kg-extract-ontology,
2026-04-11 01:08:44 +00:00
=======
הטריפלים שלו בפעולה אחת. המודל הנוכחי, שמבוסס על טריפל בודד,
מטעה בכך שהוא יוצר את האשליה של 20 אירועי חילוץ עצמאיים.
בנוסף, לשני מתוך ארבעת מעבדי החילוץ (kg-extract-ontology,
>>>>>>> 82edf2d (New md files from RunPod)
2026-04-10 12:22:20 -04:00
kg-extract-agent) אין מעקב מקורות מידע כלל, מה שמשאיר פערים
במסלול הביקורת.
## פתרון
2026-04-11 01:08:44 +00:00
< < < < < < < HEAD
2026-04-10 12:22:20 -04:00
החליפו את הפירוט של כל שלישייה במודל תת-גרף: רשומת מוצא אחת לכל חילוץ, המשותפת לכל השלישיות שנוצרו מחלק זה.
2026-04-11 01:08:44 +00:00
=======
החליפו את הפירוט של כל טריפל במודל תת-גרף: רשומת מוצא אחת לכל חילוץ, המשותפת לכל הטריפלים שנוצרו מחלק זה.
>>>>>>> 82edf2d (New md files from RunPod)
2026-04-10 12:22:20 -04:00
### שינוי מונחים
| ישן | חדש |
|-----|-----|
| `stmt_uri` (`https://trustgraph.ai/stmt/{uuid}` ) | `subgraph_uri` (`https://trustgraph.ai/subgraph/{uuid}` ) |
| `statement_uri()` | `subgraph_uri()` |
| `tg:reifies` (1:1, זהות) | `tg:contains` (1:רבים, הכלה) |
### מבנה מטרה
2026-04-11 01:08:44 +00:00
< < < < < < < HEAD
2026-04-10 12:22:20 -04:00
כל השלישיות של המוצא נכנסות לגרף המקוּם בשם `urn:graph:source` .
2026-04-11 01:08:44 +00:00
=======
כל הטריפלים של המוצא נכנסים לגרף המקוּם `urn:graph:source` .
>>>>>>> 82edf2d (New md files from RunPod)
2026-04-10 12:22:20 -04:00
```
# Subgraph contains each extracted triple (RDF-star quoted triples)
< subgraph > tg:contains < < s1 p1 o1 > > .
< subgraph > tg:contains < < s2 p2 o2 > > .
< subgraph > tg:contains < < s3 p3 o3 > > .
# Derivation from source chunk
< subgraph > prov:wasDerivedFrom < chunk_uri > .
< subgraph > prov:wasGeneratedBy < activity > .
# Activity: one per chunk extraction
< activity > rdf:type prov:Activity .
< activity > rdfs:label "{component_name} extraction" .
< activity > prov:used < chunk_uri > .
< activity > prov:wasAssociatedWith < agent > .
< activity > prov:startedAtTime "2026-03-13T10:00:00Z" .
< activity > tg:componentVersion "0.25.0" .
< activity > tg:llmModel "gpt-4" . # if available
< activity > tg:ontology < ontology_uri > . # if available
# Agent: stable per component
< agent > rdf:type prov:Agent .
< agent > rdfs:label "{component_name}" .
```
### השוואת נפחים
עבור קטע המייצר N משולשים חילוצים:
| | ישן (למשולש) | חדש (תת-גרף) |
|---|---|---|
| `tg:contains` / `tg:reifies` | N | N |
| משולשי פעילות | ~9 x N | ~9 |
| משולשי סוכנים | 2 x N | 2 |
| מטא-נתונים של הצהרה/תת-גרף | 2 x N | 2 |
| **סה"כ משולשי מקור** | ** ~13N** | **N + 13** |
| **דוגמה (N=20)** | ** ~260** | **33** |
## היקף
### מעבדים לעדכון (מקור קיים, לכל משולש)
**kg-extract-definitions**
(`trustgraph-flow/trustgraph/extract/kg/definitions/extract.py` )
כיום קורא ל-`statement_uri()` + `triple_provenance_triples()` בתוך
הלולאה לכל הגדרה.
שינויים:
העברת יצירת `subgraph_uri()` ו -`activity_uri()` לפני הלולאה
איסוף משולשי `tg:contains` בתוך הלולאה
פליטת בלוק פעילות/סוכן/הסקה משותף פעם אחת לאחר הלולאה
**kg-extract-relationships**
(`trustgraph-flow/trustgraph/extract/kg/relationships/extract.py` )
דפוס זהה כמו הגדרות. שינויים זהים.
### מעבדים להוספת מקור (חסרים כרגע)
**kg-extract-ontology**
(`trustgraph-flow/trustgraph/extract/kg/ontology/extract.py` )
כיום פולט משולשים ללא מקור. הוספת מקור תת-גרף
באמצעות הדפוס הזהה: תת-גרף אחד לכל קטע, `tg:contains` עבור כל
משולש חילוץ.
**kg-extract-agent**
(`trustgraph-flow/trustgraph/extract/kg/agent/extract.py` )
כיום פולט משולשים ללא מקור. הוספת מקור תת-גרף
באמצעות הדפוס הזהה.
### שינויים בספריית המקור המשותפת
**`trustgraph-base/trustgraph/provenance/triples.py` **
החלפת `triple_provenance_triples()` עם `subgraph_provenance_triples()`
פונקציה חדשה מקבלת רשימה של משולשים חילוצים במקום משולש בודד
מייצרת `tg:contains` אחד לכל משולש, בלוק פעילות/סוכן משותף
הסרת `triple_provenance_triples()` הישן
**`trustgraph-base/trustgraph/provenance/uris.py` **
החלפת `statement_uri()` עם `subgraph_uri()`
**`trustgraph-base/trustgraph/provenance/namespaces.py` **
החלפת `TG_REIFIES` עם `TG_CONTAINS`
### לא בתחום
**kg-extract-topics**: מעבד מסוג ישן, לא בשימוש כרגע ב
זרימות סטנדרטיות
**kg-extract-rows**: מייצר שורות ולא משולשים, מודל מקור
שונה
**מקור בזמן שאילתה** (`urn:graph:retrieval` ): נושא נפרד,
כבר משתמש בדפוס שונה (שאילתה/חקירה/מיקוד/סינתזה)
2026-04-11 01:08:44 +00:00
< < < < < < < HEAD
2026-04-10 12:22:20 -04:00
**מקור של מסמך/עמוד/קטע** (מקודד PDF, מפצל): כבר משתמש
2026-04-11 01:08:44 +00:00
=======
**מקור של מסמך/עמוד/קטע** (מקודד PDF, חותך): כבר משתמש
>>>>>>> 82edf2d (New md files from RunPod)
2026-04-10 12:22:20 -04:00
ב-`derived_entity_triples()` שהוא לכל ישות, ולא לכל משולש — אין
בעיית יתירות
## הערות יישום
### שינוי מבנה הלולאה של המעבד
לפני (לכל משולש, ביחסים):
```python
for rel in rels:
# ... build relationship_triple ...
stmt_uri = statement_uri()
prov_triples = triple_provenance_triples(
stmt_uri=stmt_uri,
extracted_triple=relationship_triple,
...
)
triples.extend(set_graph(prov_triples, GRAPH_SOURCE))
```
אחרי (תת-גרף):
```python
sg_uri = subgraph_uri()
for rel in rels:
# ... build relationship_triple ...
extracted_triples.append(relationship_triple)
prov_triples = subgraph_provenance_triples(
subgraph_uri=sg_uri,
extracted_triples=extracted_triples,
chunk_uri=chunk_uri,
component_name=default_ident,
component_version=COMPONENT_VERSION,
llm_model=llm_model,
ontology_uri=ontology_uri,
)
triples.extend(set_graph(prov_triples, GRAPH_SOURCE))
```
2026-04-11 01:08:44 +00:00
< < < < < < < HEAD
2026-04-10 12:22:20 -04:00
### חתימה חדשה של עוזר
2026-04-11 01:08:44 +00:00
=======
### חתימה חדשה עבור עוזר
>>>>>>> 82edf2d (New md files from RunPod)
2026-04-10 12:22:20 -04:00
```python
def subgraph_provenance_triples(
subgraph_uri: str,
extracted_triples: List[Triple],
chunk_uri: str,
component_name: str,
component_version: str,
llm_model: Optional[str] = None,
ontology_uri: Optional[str] = None,
timestamp: Optional[str] = None,
) -> List[Triple]:
"""
Build provenance triples for a subgraph of extracted knowledge.
Creates:
- tg:contains link for each extracted triple (RDF-star quoted)
- One prov:wasDerivedFrom link to source chunk
- One activity with agent metadata
"""
```
### שינוי משמעותי
זוהי שינוי משמעותי במודל המקור. המקור טרם פורסם, ולכן אין צורך בביצוע שדרוג. ניתן להסיר את קוד ⟦CODE_0⟧ /
`tg:reifies` הישן לחלוטין.
קוד `statement_uri` ניתן להסרה לחלוטין.