In a regulated or high-trust setting, an answer is only as good as its evidence trail. Professional GraphRAG attaches support to each claim, not one citation block bolted onto the end.
{
"answer": "Alice approved the exception under Policy P-12.",
"claims": [
{"text": "Alice approved the exception",
"support": {"graph_edges": ["Alice-approved-Exception42"], "chunks": ["doc://approvals/42#L10-18"]}},
{"text": "Exception42 is governed by P-12",
"support": {"graph_edges": ["Exception42-governedBy-P12"], "chunks": ["doc://policy/p12#L3-11"]}}
]
}
Why per-claim, not per-answer. A single citation block lets one unsupported sentence hide among three supported ones. Per-claim support makes every sentence independently verifiable — and makes the unsupported claim stick out, so a critic node (or a human) can reject exactly it instead of the whole answer.
Store it as structured fields, not markdown. claim_id, source_id, edge_path, timestamp are queryable; a markdown footnote string is not. Structured provenance lets you audit ('show me every answer that cited the now-retracted doc'), prefer the newest valid evidence, and prove compliance.
Pair it with a refusal contract. If a claim has no support, the system must say so or refuse — provenance is what makes 'I don't have evidence for that' a deterministic behaviour rather than a hope.