Skip to content

CausalGraphRAG

Methodology → causal retrieval

Stop retrieving paragraphs. Start retrieving mechanisms.

Classic RAG retrieves text chunks and asks the model to stitch them into an explanation. CausalGraphRAG retrieves paths in a causal graph — then produces a trace you can audit.

Why this matters

A path is constrained

Edges can be typed, validated, and governed. The system can reject paths that violate rules.

A paragraph is not

Text can contain contradictions, missing assumptions, and policy violations while still sounding coherent.

Mechanism > relevance

Similarity finds “about the topic”. Causal traversal targets “explains the outcome”.

Unknown is an output

If no valid path exists, the correct behavior is abstention with a falsification plan.

Minimal flow

flowchart LR;
  Q["Question"] --> S["Start node(s)"];
  S --> P["Path search (with constraints)"];
  P --> T["Trace + evidence"];
  T --> A["Answer or abstain"];

Diagram: why this beats chunk retrieval

flowchart LR;
  RAG["RAG retrieves chunks"] --> TXT["Text synthesis"];
  CG["Causal graph retrieves paths"] --> PATH["Mechanism chain"];
  PATH --> TRACE["Trace object"];
  TRACE --> AUDIT["Auditable decision"];

Diagram: validity gates (how abstention becomes deterministic)

flowchart TB;
  P["Candidate path"] --> V1["Edge/type validity"];
  V1 --> V2["Provenance requirements"];
  V2 --> V3["Policy constraints"];
  V3 -->|"Pass"| T["Emit trace"];
  V3 -->|"Fail"| X["Abstain + explain"];

What you get (operationally)

  • A mechanistic chain (A → B → C), not a narrative collage
  • A trace object you can store, diff, audit, and replay
  • A crisp “unknown” when the graph has no valid path