# Graph RAG

> Retrieval-augmented generation over knowledge graphs — extracting entities and relations from documents and querying the graph alongside vectors.

Graph RAG tools turn documents into a knowledge graph and use that graph to answer questions. Usually an LLM extracts entities and relationships from each chunk. The tools here range from GraphRAG and its compact clones to multi-service platforms, a passage ranker based on Personalized PageRank, and a code-graph tool for coding agents.

Four design choices separate them. First, whether the tool builds communities and summaries at index time, or does all synthesis at query time through traversal or PageRank. Second, where the graph lives: Parquet files, a pickle or GraphML file, Neo4j, TiDB or Milvus. Third, whether you can add and delete documents without a rebuild. Fourth, how duplicate entity names are merged, which ranges from exact string match to fuzzy matching and LLM-judged merges.

When choosing, estimate LLM calls per chunk and per query, check which backends you already run, and test the tool on your own document types.


## Projects

- [Graphify-Labs/graphify](https://llms-technical-reviews.com/p/graphify/) — Coding-assistant skill and CLI that turns a repo into a tree-sitter code graph plus LLM-extracted doc nodes, queried over MCP by traversal. (★124327, Python)
- [HKUDS/LightRAG](https://llms-technical-reviews.com/p/lightrag/) — Python graph RAG engine that merges LLM-extracted entities into one graph and retrieves by keyword-matched entities, relations and chunks. (★39998, Python)
- [microsoft/graphrag](https://llms-technical-reviews.com/p/graphrag/) — Python pipeline that turns text into an LLM-extracted entity graph with Leiden community reports, queried by local, global and DRIFT search. (★36237, Python)
- [semantica-agi/semantica](https://llms-technical-reviews.com/p/semantica/) — Large Python knowledge-graph toolkit with spaCy/LLM extraction, pluggable graph stores, and GraphRAG-style community and global search. (★13673, Python)
- [neo4j-labs/llm-graph-builder](https://llms-technical-reviews.com/p/llm-graph-builder/) — FastAPI and React app that turns files, URLs and transcripts into a Neo4j knowledge graph via LLMGraphTransformer, plus GraphRAG chat. (★5274, Jupyter Notebook)
- [OSU-NLP-Group/HippoRAG](https://llms-technical-reviews.com/p/hipporag/) — Research RAG library that links OpenIE triples, entities and passages in one igraph and ranks passages with Personalized PageRank. (★4042, Python)
- [gusye1234/nano-graphrag](https://llms-technical-reviews.com/p/nano-graphrag/) — A small, readable Python reimplementation of Microsoft GraphRAG with local, global and naive query modes over a NetworkX graph. (★3991, Python)
- [pingcap/autoflow](https://llms-technical-reviews.com/p/autoflow/) — Self-hosted Graph RAG chat app on TiDB that extracts a DSPy knowledge graph per chunk and fuses it with vector search. (★2978, TypeScript)
- [trustgraph-ai/trustgraph](https://llms-technical-reviews.com/p/trustgraph/) — Microservice Graph RAG platform that extracts RDF triples onto a message bus and answers by cross-encoder-filtered graph hops. (★2778, Python)
- [zilliztech/vector-graph-rag](https://llms-technical-reviews.com/p/vector-graph-rag/) — Python Graph RAG library that stores entities, relations and passages as three Milvus collections and walks the graph by ID lookups. (★254, Python)


## Comparison questions

- [How is the knowledge graph extracted from documents?](https://llms-technical-reviews.com/graph-rag/q/graph-construction/) — Chunking; entity and relation extraction prompts or models; entity resolution / deduplication; schema or ontology.
- [Where and how is the graph stored?](https://llms-technical-reviews.com/graph-rag/q/graph-storage/) — Graph database vs files vs in-memory; node/edge schema; how embeddings sit next to the graph.
- [Are communities, summaries or hierarchies built over the graph?](https://llms-technical-reviews.com/graph-rag/q/communities/) — Community detection (e.g. Leiden); hierarchical summaries; when they are computed; if not done, say so.
- [How does query-time retrieval use the graph?](https://llms-technical-reviews.com/graph-rag/q/query/) — Local / global / hybrid modes; traversal; combining graph and vector hits; how context is assembled for the LLM.
- [How are updates and incremental indexing handled?](https://llms-technical-reviews.com/graph-rag/q/incremental/) — Adding or changing documents without a full rebuild; deletion; caching of extraction results.
- [How are LLM cost and latency controlled during indexing and query?](https://llms-technical-reviews.com/graph-rag/q/cost/) — Caching; batching; model choice per stage; token budgets; small-model or non-LLM shortcuts.

Full comparison: https://llms-technical-reviews.com/compare/graph-rag/