GraphRAG vs Vector RAG: When to Use a Knowledge Graph Instead
A decision framework for choosing graph-structured retrieval over standard vector RAG: which query types GraphRAG actually wins, what building a knowledge graph costs, named implementations, and hybrid vector-plus-graph patterns.
- Vector RAG retrieves passages by embedding similarity while GraphRAG retrieves relationships between entities, so GraphRAG wins specifically on multi-hop questions and whole-corpus summarization that co-located prose cannot answer directly.
- Building a knowledge graph for GraphRAG costs one or more LLM calls per document chunk for entity and relationship extraction alone, a build expense that standard vector RAG's single embedding pass does not carry.
- Microsoft's GraphRAG reference implementation (arXiv:2404.16130) separates local search, which enters through specific entities, from global search, which broadcasts a query across pre-generated community summaries for corpus-wide sensemaking.
- HippoRAG reports up to 20% improvement on multi-hop question answering versus standard RAG while running with lower latency than iterative multi-hop retrieval, per its arXiv:2405.14831 paper.
- Hybrid vector-plus-graph retrieval, available through LlamaIndex's PropertyGraphIndex or Neo4j's neo4j-graphrag-python package, lets one system answer both "which chunks are relevant" and "how are these entities connected" without picking a single architecture exclusively.
The pillar guide's decision tree gives graph-structured retrieval one line: reach for it when a query's answer lives in how entities connect rather than in what any single passage states. This article turns that single line into an actual decision — what "connected" means in practice, what building a graph index costs beyond a vector index, which named implementations exist as of August 2026, and a checklist for picking one without guessing.
When does GraphRAG actually beat vector RAG?
GraphRAG wins on three query classes that standard vector retrieval structurally cannot answer well, per knowledge graphs and GraphRAG for agents. The first is multi-hop or relational questions — "how is entity A connected to entity C through B?" — which require traversing a path that cosine similarity between a query and a chunk cannot reconstruct, because the connecting fact may live in a document neither entity's chunk mentions. The second is global summarization — "what are the main themes across this whole corpus?" — which requires aggregating over an entire document set rather than retrieving a handful of top-k chunks, no matter how well those chunks are ranked. The third is cross-document entity linking, where the same person, organization or concept appears under different surface forms across sources; a graph merges those mentions into one node, while a vector index treats each surface form as a separate, unlinked embedding.
Standard vector RAG remains the better tool for everything else. RAG and retrieval for agents frames its whole pipeline — chunk, embed, index, retrieve, rerank — around single-hop, fact-lookup questions like "what does X say about Y?", and that pipeline is faster to build, cheaper to run, and just as accurate as a graph for that query shape. The decision is not "which technique is better" in the abstract; it is which query shape dominates your actual traffic.
How does GraphRAG build its index?
GraphRAG's index is a property graph of entities and typed relationships, built by having an LLM read each chunk and extract both. A document like "Acme hired Priya as CTO" becomes a node for Acme, a node for Priya, and a typed edge such as Priya –WORKS_AT→ Acme — structure a vector embedding never represents explicitly. This construction step is the graph's defining expense: it costs one or more LLM calls per chunk, against vector RAG's one embedding call per chunk, and that multiplier compounds across a corpus of any real size.
Two further stages sit on top of the raw graph:
- Community detection. Clustering algorithms such as Leiden group densely connected entities into communities. Microsoft's GraphRAG system (arXiv:2404.16130) then pre-generates a hierarchical LLM summary for each community — the backbone that makes global search possible without re-reading the whole corpus at query time.
- Local vs. global search. Local search embeds the query to find nearest-neighbor entities, then traverses outward through relationships and community context — best for targeted, entity-specific questions. Global search instead broadcasts the query across every pre-computed community summary, collects partial answers in a MAP step, and aggregates them in a REDUCE step — best for whole-corpus sensemaking.
Which GraphRAG implementation should you use?
As of August 2026 three named, publicly documented implementations dominate, each with a different cost-versus-capability tradeoff:
| Implementation | Distinguishing mechanic | Source |
|---|---|---|
Microsoft GraphRAG (microsoft/graphrag) |
Full Leiden-community hierarchy with pre-generated summaries; also ships DRIFT search (combines global and local), a Basic Search baseline, and Question Generation | arXiv:2404.16130 |
LightRAG (HKUDS/LightRAG) |
Dual-layer graph (entities + higher-level concepts) alongside vector embeddings; five query modes including a pure-vector "naive" fallback; incremental updates avoid full re-indexing | arXiv:2410.05779, EMNLP 2025 |
HippoRAG (OSU-NLP-Group/HippoRAG) |
Combines the graph with Personalized PageRank, modeled on hippocampal indexing theory; reports up to 20% multi-hop QA improvement over standard RAG with lower latency than iterative retrieval | arXiv:2405.14831, NeurIPS 2024 |
Microsoft GraphRAG is explicitly not an officially supported Microsoft product, and its own documentation notes graph construction is intentionally expensive — a caution worth taking literally before committing a production budget to it. HippoRAG 2 (arXiv:2502.14802, ICML 2025) extends the original toward continual learning, for corpora that keep growing after the initial build. LightRAG's incremental-update path is the most direct answer to the freshness problem graphs create, discussed next.
What does GraphRAG cost compared to vector RAG?
GraphRAG costs more to build and more to keep fresh, in exchange for capability vector RAG cannot reach at all. The tradeoffs the corpus reference documents map cleanly onto operational reality:
- Build cost. Vector RAG embeds each chunk once. GraphRAG runs an LLM extraction pass per chunk to produce entities and relationships — a multi-call, multi-dollar step before any query is ever served.
- Update path. A changed source document means re-embedding the affected chunks in vector RAG. In GraphRAG it means re-extracting the affected subgraph and, if community boundaries shift, re-running detection and re-summarizing — a heavier and less incremental operation unless the implementation supports partial updates.
- Operational complexity. A vector index is one moving part. A GraphRAG deployment adds a graph database, an extraction pipeline, and — for global search — a community-summary layer that itself needs to stay synchronized with the underlying graph.
None of this argues against GraphRAG where multi-hop or global-summarization queries genuinely dominate traffic. It argues against adopting it as a default the way hybrid retrieval has become a vector-RAG default — the fixed costs are real and should be measured against actual query logs, not assumed.
Is hybrid vector-plus-graph retrieval worth building?
Hybrid retrieval is worth building when a corpus genuinely needs both fast chunk lookup and relational traversal, and two named tools support it as a first-class pattern rather than a workaround. LlamaIndex's PropertyGraphIndex constructs a property graph from documents via LLM extraction, stores it in a pluggable backend such as Neo4j, and exposes multiple retriever types including keyword-entity lookup alongside vector-based graph node retrieval. Neo4j's own neo4j-graphrag-python package builds RAG pipelines directly over a Neo4j graph, including a Knowledge Graph Builder pipeline that extracts entities from unstructured text.
The production logic behind both tools is the same: a vector index answers "what chunks are relevant?" cheaply and at scale, while a graph answers "how are these entities connected?" for the smaller share of queries that actually need it. A graph can also be exposed to an agent as a callable tool — issuing Cypher or SPARQL queries as discrete, inspectable steps — which folds naturally into the agentic retrieval patterns already used for tool-based vector search, rather than requiring a separate agent architecture.
A decision checklist: vector RAG, GraphRAG, or hybrid?
Work through these in order; stop at the first one that resolves your case.
- Does the query need one fact from one place? Single-hop, fact-lookup traffic is vector RAG's home turf — build a graph and you have paid extraction cost for capability the query never uses.
- Does the answer depend on a chain of connected facts? "Who founded the company that acquired X?" needs traversal a vector index cannot reconstruct from similarity alone — this is GraphRAG's strongest case, via local search.
- Does the question ask about the whole corpus, not one document? "What are the major themes across everything we have?" needs the aggregated community summaries global search was built for — plain retrieval has no equivalent.
- Does the same entity appear under many names across sources? A graph's node-merging behavior resolves this; a vector index leaves each surface form as a separate, disconnected match.
- Do you need both fact lookup and relational traversal in one system? Reach for a hybrid pattern —
PropertyGraphIndexorneo4j-graphrag-python— rather than running two disconnected retrieval stacks side by side. - Is the corpus small or changing fast, and is the extraction budget tight? Stay on vector RAG. Re-extracting a subgraph on every update costs more than re-embedding a chunk, and a fast-moving corpus pays that cost repeatedly.
Most production systems answer step 1 correctly for the majority of their traffic and only need steps 2 through 5 for a narrow slice of queries — which is exactly the case hybrid retrieval was built to serve, rather than a reason to run the whole corpus through graph extraction.
Frequently asked questions
- Is GraphRAG better than vector RAG?
- GraphRAG is not universally better than vector RAG — it wins on multi-hop, relational and whole-corpus summarization queries, while vector RAG stays cheaper, faster to build, and equally accurate for single-hop fact lookup and semantic search. The right choice depends on query shape, not on which technique is newer.
- How expensive is it to build a knowledge graph for GraphRAG?
- Graph construction costs one or more LLM calls per document chunk just to extract entities and relationships, making the build phase substantially more expensive than standard vector RAG's single embedding pass over the same chunks, as documented in the graphrag-for-agents reference.
- Can I combine vector RAG and GraphRAG in the same system?
- Yes — LlamaIndex's PropertyGraphIndex and Neo4j's neo4j-graphrag-python package both support hybrid retrieval natively, pairing a vector store for fast chunk lookup with a graph store for relational traversal in a single production pipeline.
- What is the difference between local and global search in GraphRAG?
- Local search enters through specific named entities and expands outward via graph traversal, best for targeted entity-specific questions, while global search broadcasts a query across pre-computed community summaries and aggregates the partial answers, best for whole-corpus thematic questions.
This guide is free and stays free. The reference corpus behind it — machine-readable contracts, verified primary sources, continuously refreshed — is the paid product: a €5 starter key unlocks every premium reference for one agent via API; a €25 corpus license delivers the full corpus as RAG / fine-tuning data with an explicit AI-use grant; the €150 enterprise license adds commercial redistribution rights.