mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 08:26:21 +02:00
Provenance triples are now included directly in explain messages from GraphRAG, DocumentRAG, and Agent services, eliminating the need for follow-up knowledge graph queries to retrieve explainability details. Each explain message in the response stream now carries: - explain_id: root URI for this provenance step (unchanged) - explain_graph: named graph where triples are stored (unchanged) - explain_triples: the actual provenance triples for this step (new) Changes across the stack: - Schema: added explain_triples field to GraphRagResponse, DocumentRagResponse, and AgentResponse - Services: all explain message call sites pass triples through (graph_rag, document_rag, agent react, agent orchestrator) - Translators: encode explain_triples via TripleTranslator for gateway wire format - Python SDK: ProvenanceEvent now includes parsed ExplainEntity and raw triples; expanded event_type detection - CLI: invoke_graph_rag, invoke_agent, invoke_document_rag use inline entity when available, fall back to graph query - Tech specs updated Additional explainability test
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from dataclasses import dataclass, field
|
|
from ..core.primitives import Error, Term, Triple
|
|
|
|
############################################################################
|
|
|
|
# Graph RAG text retrieval
|
|
|
|
@dataclass
|
|
class GraphRagQuery:
|
|
query: str = ""
|
|
user: str = ""
|
|
collection: str = ""
|
|
entity_limit: int = 0
|
|
triple_limit: int = 0
|
|
max_subgraph_size: int = 0
|
|
max_path_length: int = 0
|
|
edge_score_limit: int = 0
|
|
edge_limit: int = 0
|
|
streaming: bool = False
|
|
parent_uri: str = ""
|
|
|
|
@dataclass
|
|
class GraphRagResponse:
|
|
error: Error | None = None
|
|
response: str = ""
|
|
end_of_stream: bool = False # LLM response stream complete
|
|
explain_id: str | None = None # Root URI for this explain step
|
|
explain_graph: str | None = None # Named graph (e.g., urn:graph:retrieval)
|
|
explain_triples: list[Triple] = field(default_factory=list) # Provenance triples for this step
|
|
message_type: str = "" # "chunk" or "explain"
|
|
end_of_session: bool = False # Entire session complete
|
|
|
|
############################################################################
|
|
|
|
# Document RAG text retrieval
|
|
|
|
@dataclass
|
|
class DocumentRagQuery:
|
|
query: str = ""
|
|
user: str = ""
|
|
collection: str = ""
|
|
doc_limit: int = 0
|
|
streaming: bool = False
|
|
|
|
@dataclass
|
|
class DocumentRagResponse:
|
|
error: Error | None = None
|
|
response: str | None = ""
|
|
end_of_stream: bool = False # LLM response stream complete
|
|
explain_id: str | None = None # Root URI for this explain step
|
|
explain_graph: str | None = None # Named graph (e.g., urn:graph:retrieval)
|
|
explain_triples: list[Triple] = field(default_factory=list) # Provenance triples for this step
|
|
message_type: str = "" # "chunk" or "explain"
|
|
end_of_session: bool = False # Entire session complete
|