GraphRAG made graph databases interesting to people who had never drawn an edge in their lives. The pitch is simple: vector search retrieves chunks that look similar; a knowledge graph retrieves facts that are connected — multi-hop relationships, entity disambiguation, the "how is A linked to B" question that top-k similarity can't answer. Once you decide you need a graph backend under your agent's memory or your retrieval layer, you hit the actual question: which engine?
The internet will answer with benchmarks. Ignore most of them. Every vendor publishes a chart on which it wins, run on a graph shape and query mix chosen to make it win. The decisions that will actually follow you for years are two axes nobody puts on the benchmark slide: where your graph lives in the memory hierarchy, and which restrictive license you can live with.
Neo4j: the incumbent, with a copyleft catch
Neo4j is the default for a reason. It invented Cypher (now the basis of the ISO GQL standard), it has the deepest ecosystem — the Graph Data Science library, APOC, mature drivers in every language — and it ships an official GraphRAG package plus a whole GenAI ecosystem of integrations. Its disk-based engine with a tunable page cache is the only one of the three that comfortably holds a graph bigger than your RAM.
The catch is the license. Neo4j Community Edition is GPLv3 — genuinely open source, but copyleft, which means embedding it inside a closed product is a legal conversation, not a pip install. The clustering, security, and backup features you'll want in production live in the commercial Enterprise Edition. And the JVM page-cache model that lets it scale past RAM is also why a cold instance can take the better part of a second to answer its first query.
FalkorDB: a graph as a sparse matrix, built for many tenants
FalkorDB is the most interesting architectural bet of the three. It picked up the abandoned RedisGraph and runs the graph as GraphBLAS sparse adjacency matrices inside a Redis process — which turns multi-hop traversal into linear algebra (matrix multiplication) and gives it genuinely low cold-start latency and fast expansion.
Its real differentiator for agent systems is multi-tenancy. Because each graph is just a key in Redis, FalkorDB is built to hold thousands of small graphs in one instance — one knowledge graph per user, per tenant, or per agent. That is exactly the shape a lot of GraphRAG and agent-memory systems need, and it's awkward in Neo4j's heavier one-database-per-graph model. FalkorDB also ships a GraphRAG-SDK that auto-generates an ontology from unstructured text. The license is SSPLv1 — source-available, fine for internal use, restrictive if you plan to offer it as a service.
Memgraph: in-memory, real-time, Cypher-compatible
Memgraph is the in-memory specialist. Written in C++, Cypher-compatible, with the MAGE algorithm library and first-class streaming (Kafka) ingestion, it's built for real-time workloads where the graph is changing and queries must be fast.
The tradeoff is literal: your working set has to fit in RAM (there's an on-disk mode, but in-memory is the whole point). Memgraph Community is BSL 1.1 — source-available, converting to an open license on a delay. For a streaming, low-latency agent that rebuilds context constantly and whose graph fits in memory, it's the speed play.
The license is the buried lede
Here's the thing the comparison posts skip. Look at what's not on the list: a permissively-licensed, actively-maintained graph engine purpose-built for GraphRAG. There used to be one.
Kuzu was the MIT-licensed embedded graph database — "SQLite for graphs," with vector and full-text search built in. In October 2025 its sponsor archived the repository and walked away. The most permissive option in the category is now a tombstone with a community fork.
That archiving (HN thread) is not gossip — it's a design input. It means every viable choice today is restrictive: GPLv3 (Neo4j), BSL (Memgraph), or SSPL (FalkorDB). And it's a reminder that an embedded graph engine is only as durable as the one company maintaining it, which is a real risk to weigh when the database is load-bearing for your agent's memory.
How to actually choose
- Neo4j when you want the deepest ecosystem and official tooling, and especially when your graph will outgrow RAM. Accept the GPLv3/commercial split.
- FalkorDB when you need many small per-tenant knowledge graphs in one instance and low-latency multi-hop retrieval — the native shape of multi-user GraphRAG. Accept SSPL.
- Memgraph when the graph fits in memory and the job is real-time, streaming, low-latency. Accept BSL.
All three now keep vectors next to the graph, so for most GraphRAG builds you won't need a separate vector store at all. But before you reach for any of them, be honest about whether your retrieval actually needs edges — if top-k over chunks answers your queries, a plain vector database is the simpler tool, and GraphRAG is the wrong default. Pick a graph engine when the relationships are the answer.



