mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 16:36:21 +02:00
272 lines
14 KiB
Markdown
272 lines
14 KiB
Markdown
|
|
---
|
||
|
|
layout: default
|
||
|
|
title: "क्वेरी-टाइम एक्सप्लेनेबिलिटी (Query-Time Explainability)"
|
||
|
|
parent: "Hindi (Beta)"
|
||
|
|
---
|
||
|
|
|
||
|
|
# क्वेरी-टाइम एक्सप्लेनेबिलिटी (Query-Time Explainability)
|
||
|
|
|
||
|
|
> **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.
|
||
|
|
|
||
|
|
## स्थिति (Status)
|
||
|
|
|
||
|
|
कार्यान्वित (Implemented)
|
||
|
|
|
||
|
|
## अवलोकन (Overview)
|
||
|
|
|
||
|
|
यह विनिर्देश बताता है कि GraphRAG क्वेरी निष्पादन के दौरान एक्सप्लेनेबिलिटी डेटा को कैसे रिकॉर्ड और संचारित करता है। इसका लक्ष्य पूर्ण पता लगाने की क्षमता है: अंतिम उत्तर से लेकर चयनित किनारों तक और फिर स्रोत दस्तावेजों तक।
|
||
|
|
|
||
|
|
क्वेरी-टाइम एक्सप्लेनेबिलिटी यह कैप्चर करती है कि GraphRAG पाइपलाइन तर्क के दौरान क्या करती है। यह निष्कर्षण-समय के प्रमाण से जुड़ा है, जो रिकॉर्ड करता है कि ज्ञान ग्राफ तथ्यों की उत्पत्ति कहाँ से हुई।
|
||
|
|
|
||
|
|
## शब्दावली (Terminology)
|
||
|
|
|
||
|
|
| शब्द | परिभाषा |
|
||
|
|
|------|------------|
|
||
|
|
| **एक्सप्लेनेबिलिटी (Explainability)** | यह रिकॉर्ड है कि एक परिणाम कैसे प्राप्त किया गया |
|
||
|
|
| **सेशन (Session)** | एक एकल GraphRAG क्वेरी निष्पादन |
|
||
|
|
| **एज सिलेक्शन (Edge Selection)** | तर्क के साथ प्रासंगिक किनारों का LLM-संचालित चयन |
|
||
|
|
| **प्रूवेनेंस चेन (Provenance Chain)** | किनारे → चंक → पृष्ठ → दस्तावेज़ से पथ |
|
||
|
|
|
||
|
|
## आर्किटेक्चर (Architecture)
|
||
|
|
|
||
|
|
### एक्सप्लेनेबिलिटी फ्लो (Explainability Flow)
|
||
|
|
|
||
|
|
```
|
||
|
|
GraphRAG Query
|
||
|
|
│
|
||
|
|
├─► Session Activity
|
||
|
|
│ └─► Query text, timestamp
|
||
|
|
│
|
||
|
|
├─► Retrieval Entity
|
||
|
|
│ └─► All edges retrieved from subgraph
|
||
|
|
│
|
||
|
|
├─► Selection Entity
|
||
|
|
│ └─► Selected edges with LLM reasoning
|
||
|
|
│ └─► Each edge links to extraction provenance
|
||
|
|
│
|
||
|
|
└─► Answer Entity
|
||
|
|
└─► Reference to synthesized response (in librarian)
|
||
|
|
```
|
||
|
|
|
||
|
|
### दो-चरणीय ग्राफआरएजी पाइपलाइन
|
||
|
|
|
||
|
|
1. **एज चयन**: एलएलएम सबग्राफ से प्रासंगिक किनारों का चयन करता है, प्रत्येक के लिए तर्क प्रदान करता है।
|
||
|
|
2. **संश्लेषण**: एलएलएम केवल चयनित किनारों से उत्तर उत्पन्न करता है।
|
||
|
|
|
||
|
|
यह अलगाव व्याख्यात्मकता को सक्षम बनाता है - हमें ठीक से पता है कि किन किनारों ने योगदान दिया।
|
||
|
|
|
||
|
|
### भंडारण
|
||
|
|
|
||
|
|
व्याख्यात्मकता ट्रिपल कॉन्फ़िगर करने योग्य संग्रह में संग्रहीत हैं (डिफ़ॉल्ट: `explainability`)।
|
||
|
|
यह स्रोत संबंधों के लिए प्रोवी-ओ ऑन्टोलॉजी का उपयोग करता है।
|
||
|
|
किनारे संदर्भों के लिए आरडीएफ-स्टार रीफिकेशन।
|
||
|
|
उत्तर सामग्री लाइब्रेरियन सेवा में संग्रहीत है (इनलाइन नहीं - बहुत बड़ा)।
|
||
|
|
|
||
|
|
### वास्तविक समय स्ट्रीमिंग
|
||
|
|
|
||
|
|
व्याख्यात्मकता घटनाएँ क्लाइंट को क्वेरी निष्पादित होने के दौरान स्ट्रीम की जाती हैं:
|
||
|
|
|
||
|
|
1. सत्र बनाया गया → घटना उत्सर्जित।
|
||
|
|
2. किनारे पुनर्प्राप्त किए गए → घटना उत्सर्जित।
|
||
|
|
3. तर्क के साथ किनारे चुने गए → घटना उत्सर्जित।
|
||
|
|
4. उत्तर संश्लेषित → घटना उत्सर्जित।
|
||
|
|
|
||
|
|
क्लाइंट को `explain_id` और `explain_collection` प्राप्त होते हैं ताकि पूर्ण विवरण प्राप्त किए जा सकें।
|
||
|
|
|
||
|
|
## यूआरआई संरचना
|
||
|
|
|
||
|
|
सभी यूआरआई `urn:trustgraph:` नेमस्पेस का उपयोग करते हैं जिसमें यूयूआईडी शामिल हैं:
|
||
|
|
|
||
|
|
| इकाई | यूआरआई पैटर्न |
|
||
|
|
|--------|-------------|
|
||
|
|
| सत्र | `urn:trustgraph:session:{uuid}` |
|
||
|
|
| पुनर्प्राप्ति | `urn:trustgraph:prov:retrieval:{uuid}` |
|
||
|
|
| चयन | `urn:trustgraph:prov:selection:{uuid}` |
|
||
|
|
| उत्तर | `urn:trustgraph:prov:answer:{uuid}` |
|
||
|
|
| किनारे का चयन | `urn:trustgraph:prov:edge:{uuid}:{index}` |
|
||
|
|
|
||
|
|
## आरडीएफ मॉडल (प्रोवी-ओ)
|
||
|
|
|
||
|
|
### सत्र गतिविधि
|
||
|
|
|
||
|
|
```turtle
|
||
|
|
<session-uri> a prov:Activity ;
|
||
|
|
rdfs:label "GraphRAG query session" ;
|
||
|
|
prov:startedAtTime "2024-01-15T10:30:00Z" ;
|
||
|
|
tg:query "What was the War on Terror?" .
|
||
|
|
```
|
||
|
|
|
||
|
|
### पुनर्प्राप्ति इकाई
|
||
|
|
|
||
|
|
```turtle
|
||
|
|
<retrieval-uri> a prov:Entity ;
|
||
|
|
rdfs:label "Retrieved edges" ;
|
||
|
|
prov:wasGeneratedBy <session-uri> ;
|
||
|
|
tg:edgeCount 50 .
|
||
|
|
```
|
||
|
|
|
||
|
|
### चयन इकाई
|
||
|
|
|
||
|
|
```turtle
|
||
|
|
<selection-uri> a prov:Entity ;
|
||
|
|
rdfs:label "Selected edges" ;
|
||
|
|
prov:wasDerivedFrom <retrieval-uri> ;
|
||
|
|
tg:selectedEdge <edge-sel-0> ;
|
||
|
|
tg:selectedEdge <edge-sel-1> .
|
||
|
|
|
||
|
|
<edge-sel-0> tg:edge << <s> <p> <o> >> ;
|
||
|
|
tg:reasoning "This edge establishes the key relationship..." .
|
||
|
|
```
|
||
|
|
|
||
|
|
### उत्तर इकाई
|
||
|
|
|
||
|
|
```turtle
|
||
|
|
<answer-uri> a prov:Entity ;
|
||
|
|
rdfs:label "GraphRAG answer" ;
|
||
|
|
prov:wasDerivedFrom <selection-uri> ;
|
||
|
|
tg:document <urn:trustgraph:answer:{uuid}> .
|
||
|
|
```
|
||
|
|
|
||
|
|
`tg:document` संदर्भ लाइब्रेरियन सेवा में संग्रहीत उत्तर को दर्शाता है।
|
||
|
|
|
||
|
|
## नेमस्पेस स्थिरांक
|
||
|
|
|
||
|
|
`trustgraph-base/trustgraph/provenance/namespaces.py` में परिभाषित:
|
||
|
|
|
||
|
|
| स्थिरांक | यूआरआई |
|
||
|
|
|----------|-----|
|
||
|
|
| `TG_QUERY` | `https://trustgraph.ai/ns/query` |
|
||
|
|
| `TG_EDGE_COUNT` | `https://trustgraph.ai/ns/edgeCount` |
|
||
|
|
| `TG_SELECTED_EDGE` | `https://trustgraph.ai/ns/selectedEdge` |
|
||
|
|
| `TG_EDGE` | `https://trustgraph.ai/ns/edge` |
|
||
|
|
| `TG_REASONING` | `https://trustgraph.ai/ns/reasoning` |
|
||
|
|
| `TG_CONTENT` | `https://trustgraph.ai/ns/content` |
|
||
|
|
| `TG_DOCUMENT` | `https://trustgraph.ai/ns/document` |
|
||
|
|
|
||
|
|
## GraphRagResponse स्कीमा
|
||
|
|
|
||
|
|
```python
|
||
|
|
@dataclass
|
||
|
|
class GraphRagResponse:
|
||
|
|
error: Error | None = None
|
||
|
|
response: str = ""
|
||
|
|
end_of_stream: bool = False
|
||
|
|
explain_id: str | None = None
|
||
|
|
explain_collection: str | None = None
|
||
|
|
message_type: str = "" # "chunk" or "explain"
|
||
|
|
end_of_session: bool = False
|
||
|
|
```
|
||
|
|
|
||
|
|
### संदेश प्रकार
|
||
|
|
|
||
|
|
| संदेश_प्रकार | उद्देश्य |
|
||
|
|
|--------------|---------|
|
||
|
|
| `chunk` | प्रतिक्रिया पाठ (स्ट्रीमिंग या अंतिम) |
|
||
|
|
| `explain` | आईआरआई संदर्भ के साथ व्याख्यात्मक घटना |
|
||
|
|
|
||
|
|
### सत्र जीवनचक्र
|
||
|
|
|
||
|
|
1. कई `explain` संदेश (सत्र, पुनर्प्राप्ति, चयन, उत्तर)
|
||
|
|
2. कई `chunk` संदेश (स्ट्रीमिंग प्रतिक्रिया)
|
||
|
|
3. `end_of_session=True` के साथ अंतिम `chunk`
|
||
|
|
|
||
|
|
## एज चयन प्रारूप
|
||
|
|
|
||
|
|
एलएलएम चयनित किनारों के साथ JSONL लौटाता है:
|
||
|
|
|
||
|
|
```jsonl
|
||
|
|
{"id": "edge-hash-1", "reasoning": "This edge shows the key relationship..."}
|
||
|
|
{"id": "edge-hash-2", "reasoning": "Provides supporting evidence..."}
|
||
|
|
```
|
||
|
|
|
||
|
|
`id`, `(labeled_s, labeled_p, labeled_o)` का एक हैश है, जिसकी गणना `edge_id()` द्वारा की जाती है।
|
||
|
|
|
||
|
|
## यूआरआई का संरक्षण
|
||
|
|
|
||
|
|
### समस्या
|
||
|
|
|
||
|
|
GraphRAG, एलएलएम को समझने योग्य लेबल प्रदर्शित करता है, लेकिन स्पष्टीकरण के लिए मूल यूआरआई की आवश्यकता होती है ताकि स्रोत का पता लगाया जा सके।
|
||
|
|
|
||
|
|
### समाधान
|
||
|
|
|
||
|
|
`get_labelgraph()` दोनों लौटाता है:
|
||
|
|
`labeled_edges`: एलएलएम के लिए `(label_s, label_p, label_o)` की सूची
|
||
|
|
`uri_map`: एक डिक्शनरी जो `edge_id(labels)` को `(uri_s, uri_p, uri_o)` से जोड़ती है।
|
||
|
|
|
||
|
|
जब व्याख्यात्मक डेटा संग्रहीत किया जाता है, तो `uri_map` से यूआरआई का उपयोग किया जाता है।
|
||
|
|
|
||
|
|
## उत्पत्ति अनुरेखण
|
||
|
|
|
||
|
|
### किनारे से स्रोत तक
|
||
|
|
|
||
|
|
चयनित किनारों को मूल दस्तावेजों तक वापस ट्रेस किया जा सकता है:
|
||
|
|
|
||
|
|
1. समाहित उपग्राफ के लिए क्वेरी करें: `?subgraph tg:contains <<s p o>>`
|
||
|
|
2. मूल दस्तावेज़ तक `prov:wasDerivedFrom` श्रृंखला का पालन करें
|
||
|
|
3. श्रृंखला में प्रत्येक चरण: खंड → पृष्ठ → दस्तावेज़
|
||
|
|
|
||
|
|
### कैसेंड्रा उद्धृत त्रिक समर्थन
|
||
|
|
|
||
|
|
कैसेंड्रा क्वेरी सेवा उद्धृत त्रिकों के मिलान का समर्थन करती है:
|
||
|
|
|
||
|
|
```python
|
||
|
|
# In get_term_value():
|
||
|
|
elif term.type == TRIPLE:
|
||
|
|
return serialize_triple(term.triple)
|
||
|
|
```
|
||
|
|
|
||
|
|
यह इस तरह के प्रश्नों को सक्षम करता है:
|
||
|
|
```
|
||
|
|
?subgraph tg:contains <<http://example.org/s http://example.org/p "value">>
|
||
|
|
```
|
||
|
|
|
||
|
|
## कमांड लाइन इंटरफेस (CLI) का उपयोग
|
||
|
|
|
||
|
|
```bash
|
||
|
|
tg-invoke-graph-rag --explainable -q "What was the War on Terror?"
|
||
|
|
```
|
||
|
|
|
||
|
|
### आउटपुट प्रारूप
|
||
|
|
|
||
|
|
```
|
||
|
|
[session] urn:trustgraph:session:abc123
|
||
|
|
|
||
|
|
[retrieval] urn:trustgraph:prov:retrieval:abc123
|
||
|
|
|
||
|
|
[selection] urn:trustgraph:prov:selection:abc123
|
||
|
|
Selected 12 edge(s)
|
||
|
|
Edge: (Guantanamo, definition, A detention facility...)
|
||
|
|
Reason: Directly connects Guantanamo to the War on Terror
|
||
|
|
Source: Chunk 1 → Page 2 → Beyond the Vigilant State
|
||
|
|
|
||
|
|
[answer] urn:trustgraph:prov:answer:abc123
|
||
|
|
|
||
|
|
Based on the provided knowledge statements...
|
||
|
|
```
|
||
|
|
|
||
|
|
### विशेषताएं
|
||
|
|
|
||
|
|
क्वेरी के दौरान वास्तविक समय में व्याख्यात्मक घटनाएं।
|
||
|
|
`rdfs:label` के माध्यम से एज घटकों के लिए लेबल समाधान।
|
||
|
|
`prov:wasDerivedFrom` के माध्यम से स्रोत श्रृंखला का पता लगाना।
|
||
|
|
बार-बार क्वेरी से बचने के लिए लेबल कैशिंग।
|
||
|
|
|
||
|
|
## कार्यान्वित फाइलें
|
||
|
|
|
||
|
|
| फ़ाइल | उद्देश्य |
|
||
|
|
|------|---------|
|
||
|
|
| `trustgraph-base/trustgraph/provenance/uris.py` | यूआरआई जनरेटर |
|
||
|
|
| `trustgraph-base/trustgraph/provenance/namespaces.py` | आरडीएफ नेमस्पेस स्थिरांक |
|
||
|
|
| `trustgraph-base/trustgraph/provenance/triples.py` | ट्रिपल बिल्डर |
|
||
|
|
| `trustgraph-base/trustgraph/schema/services/retrieval.py` | GraphRagResponse स्कीमा |
|
||
|
|
| `trustgraph-flow/trustgraph/retrieval/graph_rag/graph_rag.py` | यूआरआई संरक्षण के साथ मुख्य GraphRAG |
|
||
|
|
| `trustgraph-flow/trustgraph/retrieval/graph_rag/rag.py` | लाइब्रेरियन एकीकरण के साथ सेवा |
|
||
|
|
| `trustgraph-flow/trustgraph/query/triples/cassandra/service.py` | उद्धृत ट्रिपल क्वेरी समर्थन |
|
||
|
|
| `trustgraph-cli/trustgraph/cli/invoke_graph_rag.py` | व्याख्यात्मक प्रदर्शन के साथ सीएलआई |
|
||
|
|
|
||
|
|
## संदर्भ
|
||
|
|
|
||
|
|
PROV-O (डब्ल्यू3सी प्रोवेनेंस ऑन्टोलॉजी): https://www.w3.org/TR/prov-o/
|
||
|
|
RDF-star: https://w3c.github.io/rdf-star/
|
||
|
|
निष्कर्षण-समय प्रोवेनेंस: `docs/tech-specs/extraction-time-provenance.md`
|