Graph RAG, when relationships are the answer
Vector search finds similar text. Some questions are about connections: which supplier, which contract, what depends on what. That is a graph problem.
“Which of our suppliers are affected if this plant closes?” No single document answers that. The answer is scattered across contracts, orders, and org charts, and what links them is relationships: supplier ships part, part goes into product, product is made in plant. Vector search finds documents that talk about plants closing. It doesn’t follow the chain.
Graph RAG builds the chain first. Entities are extracted from documents and database rows, suppliers, parts, contracts, people, and linked into a graph with typed edges. At query time retrieval runs both ways: vectors find the relevant neighborhood, the graph walks the relationships inside it, and the model answers from the combined evidence, with the path itself as a citation.
The catch is cost. Extraction is imperfect, the graph needs maintenance like any other dataset, and for plain “find me the passage” questions it adds nothing. We reach for it when questions genuinely hop two or three entities deep, and skip it when they don’t.