Retrieval & RAGPatternEmerging

GraphRAG

Also called: graph retrieval, knowledge graph RAG

GraphRAG retrieves over a graph of entities and relationships rather than a flat pile of chunks, so the model can follow connections between facts. It answers questions that need several hops, which similarity search cannot reach.

James Phoenix
Understanding Data Updated July 26, 2026

Ordinary RAG retrieves chunks that look like the query. That works when the answer sits in one passage. It fails when the answer has to be assembled from several, connected by relationships nobody wrote down in a single place.

"Which services did the engineer who owns the checkout queue also touch during last month's incidents?" has no chunk that resembles it. The answer is three hops through the relationships between people, services, and incidents.

Graph instead of pile

GraphRAG builds a graph first, extracting entities and the relationships between them, then retrieves by traversal:

Text
(Engineer:Rae) -[OWNS]->        (Service:checkout-queue)
(Engineer:Rae) -[COMMITTED_TO]-> (Service:billing)
(Incident:4821) -[AFFECTED]->    (Service:billing)

Retrieval becomes: find the node, walk the edges, return the subgraph. The model receives a small set of connected facts rather than ten chunks that each mention one of them.

What it buys and what it costs

Buys: multi-hop questions, aggregation across many documents ("what themes recur across every postmortem this quarter"), and provenance, since every returned fact has an explicit path you can show.

Costs: a build step that extracts entities and relationships, usually with an LLM, which is slow, expensive, and lossy. Your graph is only as good as that extraction, and schema drift over time is real. This is materially more machinery than a vector database.

When to reach for it

Reach for it when the questions are genuinely relational and your corpus has real structure to exploit: incidents, ownership, org charts, dependency trees, case histories. If your corpus is prose and your questions are answerable from a single passage, GraphRAG adds a large build pipeline for no gain.

Tip
There is a cheaper middle ground. If your documents already carry structured frontmatter or a directory hierarchy, you have a usable graph without extracting one. Letting a model navigate that existing structure gets much of the benefit and skips the extraction step entirely.

Related terms

Engineering context for real systems?

Getting the right information into the window at the right time is most of the job. If you want that thinking applied to your product, that is what I do.

See how I can help