Scope & vantage. Assessed mid-2026 for connected-data and GraphRAG workloads — knowledge graphs, entity resolution, fraud and network analysis, and graph-grounded retrieval for LLMs. Axes are graph-specific and not comparable with any other assessment here. Higher is always better on every axis. The target column is Neo4j because it is the incumbent every selection is measured against.
1. Executive summary
The first question is not "which graph database" — it is "do I need a graph database, or a graph?" For a bounded corpus — a few hundred to a few thousand documents, a fixed knowledge base — the graph fits in memory and rebuilds deterministically from source, and a build-time static graph beats operating a database. I have written that up in detail, and it is the honest default for the small case. The four engines here earn their operational cost when the graph is large, mutable, queried interactively, or all three.
Neo4j is the default I measure the others against, and its scores say why: the deepest graph-algorithm library (GDS), the most mature ecosystem and drivers, the strongest first-party GraphRAG tooling, and enterprise governance. Cypher — now converging on the ISO GQL standard — is the lingua franca of the space, and its native vector index makes it a single store for graph plus embeddings. Its soft spots are horizontal write scale and cost.
Memgraph is the answer when the workload is real-time: in-memory, Cypher-compatible, streaming-first with native Kafka/Pulsar ingestion and dynamic algorithms that update as the graph changes. You buy sub-millisecond reads on the hot set and pay for it by sizing to RAM. FalkorDB takes a different route to speed — it represents the graph as sparse matrices and runs traversals as linear algebra (GraphBLAS), which makes multi-hop reads exceptionally fast and, with an in-graph vector index, makes it a purpose-built GraphRAG engine for teams that already run Redis. TigerGraph is the one built for genuine scale: a distributed, massively-parallel engine for billion-edge deep-link analytics, addressed in GSQL rather than Cypher — more power and a steeper, less transferable skill.
Verdict
Neo4j — Adopt as the default graph database. Richest algorithms, ecosystem, GraphRAG tooling and governance; the standard skill. Watch horizontal write scale and licensing cost.
Memgraph — Adopt for real-time. In-memory and streaming-first — the right pick when the graph changes constantly and reads must be sub-millisecond, sized by RAM rather than disk.
FalkorDB — Trial for latency-critical GraphRAG. GraphBLAS traversal and an in-graph vector index make it fast and compact; a younger ecosystem, strongest where Redis is already in the stack.
TigerGraph — Narrow Use. The answer at genuine billion-edge analytical scale where distribution is required — at the cost of GSQL and the heaviest operations here.
Main risk: standing up a graph database for a bounded, rebuildable corpus that a static build-time graph would serve — or choosing on a benchmark headline rather than the workload the engine is actually shaped for.
2. Positioning
These four are usually lined up as "Neo4j and the alternatives," which hides the fact that three of them are shaped for a specific workload the incumbent is merely good at.
| Dimension | Neo4j | Memgraph | FalkorDB | TigerGraph |
|---|---|---|---|---|
| Built for | General-purpose graph | Real-time / streaming | Low-latency GraphRAG | Billion-edge analytics |
| Engine | Native graph, disk + page cache | In-memory (C++) | Sparse matrices / GraphBLAS (Redis) | Distributed MPP |
| Query language | Cypher / GQL | Cypher-compatible | Cypher (OpenCypher) | GSQL (proprietary) |
| Scale model | Vertical + clustering | RAM-bound, single primary | Redis cluster; many small graphs | Horizontal, sharded |
| GraphRAG story | First-party package + vector index | Vector index + GraphRAG flow | In-graph vector, sub-5ms retrieval | CoPilot + vector, less mature |
| You operate | A well-trodden system | A RAM-sized instance | A Redis module | A distributed cluster |
The pattern is that Neo4j is the generalist and each of the other three is a specialist that beats it on one axis and trails it on ecosystem. Memgraph wins real-time, FalkorDB wins traversal latency and compactness, TigerGraph wins scale — and all three ask you to give up some of Neo4j's tooling maturity, its algorithm breadth, or, in TigerGraph's case, the transferable skill of Cypher.
What these scores are not is a throughput leaderboard. Vendor benchmarks on this page each show their sponsor winning, and the neutral open benchmarks move with workload shape. What decides a real graph selection is query-language skill on the team, how the graph is written and updated, whether it needs to be distributed, and how much of the algorithm and GraphRAG ecosystem you would otherwise rebuild. Those are the axes below.
3. Radar criteria — the reasoning
Query language & ergonomics
Neo4j 4.6 — Cypher is the de facto standard and is converging on ISO GQL, so the skill transfers and the tooling assumes it. Memgraph 4.4 and FalkorDB 4.2 are Cypher-compatible, which is most of that benefit with minor dialect gaps. TigerGraph 3.4 — GSQL is powerful (accumulators, genuine procedural control) but proprietary and a scarcer, less portable skill; it is the axis where the scale winner pays.
Traversal performance
FalkorDB 4.7 — running traversals as sparse-matrix multiplication (GraphBLAS) makes multi-hop reads its headline strength; vendor and independent runs put it ahead on 2- and 3-hop queries. Memgraph 4.6, in-memory with sub-millisecond hot-set reads. TigerGraph 4.3, fast at scale through parallelism. Neo4j 4.0 — perfectly good, and the one most likely to need index and query tuning on deep traversals.
Write & ingestion
Memgraph 4.4 — in-memory writes and first-class streaming ingestion. TigerGraph 4.2, strong bulk loading built for large initial loads. FalkorDB 4.0. Neo4j 3.9 — solid, with heavy write bursts and large transactions the thing to size and test.
Scale & distribution
TigerGraph 4.7 — the reason to choose it: distributed and sharded from the start, built to hold and traverse billion-edge graphs that do not fit one machine. Neo4j 3.4 and FalkorDB 3.4 scale through clustering and Redis respectively but are happiest when the working set fits a node. Memgraph 3.2 — the honest floor, bounded by RAM on a single primary.
Graph analytics & algorithms
Neo4j 4.7 — the Graph Data Science library is the broadest, best-documented algorithm suite anywhere (centrality, community, pathfinding, embeddings, ML pipelines). TigerGraph 4.4, deep-link analytics and a strong algorithm library. Memgraph 4.0 (MAGE, plus dynamic algorithms that react to change). FalkorDB 3.6 — fast primitives, a narrower algorithm catalogue than GDS.
Real-time / streaming
Memgraph 4.7 — this is its whole design: native Kafka/Pulsar/RedPanda consumers and dynamic algorithms that update incrementally as edges arrive, rather than a full recompute. FalkorDB 4.2, low-latency and Redis-native. Neo4j 3.6 and TigerGraph 3.6 — both ingest streams, neither is streaming-first, and TigerGraph leans batch-analytical.
GraphRAG / GenAI fit
Neo4j 4.6 — the most complete story: a native vector index alongside the graph and a maintained first-party GraphRAG package with entity extraction and hybrid retrievers. FalkorDB 4.5 — built for this: an in-graph vector index and sub-5ms structural retrieval, positioned squarely at AI agents. Memgraph 4.0, a single-store vector index and a GraphRAG flow in 3.x. TigerGraph 3.6 — vector and CoPilot exist, less mature than the others.
Operations & ecosystem
Neo4j 4.6 — the most mature by a distance: Aura managed service, Bloom and Browser, drivers in every language, the largest community and hiring pool. Memgraph 3.6 and FalkorDB 3.6 — capable tooling, smaller ecosystems (FalkorDB benefits when Redis is already operated). TigerGraph 3.2 — the heaviest to run, a distributed system with the operational surface that implies.
Governance & security
Neo4j 4.5 — fine-grained RBAC, role and property-level security, SSO, audit; the enterprise story is mature. TigerGraph 4.2, enterprise RBAC and multi-graph isolation. Memgraph 3.6 and FalkorDB 3.4 — real access control, less of the fine-grained enterprise depth (FalkorDB inherits Redis ACLs).
TCO / cost & licensing
FalkorDB 4.2 — compact (matrix representation), efficient, open-source, cheap where Redis is already running. Memgraph 3.8, open-core, with RAM as the real cost lever. TigerGraph 3.4, commercial with heavy infrastructure. Neo4j 3.2 — the lowest here: GPL Community with meaningful limits, Enterprise licensing that scales with the deployment, and a page-cache appetite for memory. Cost is the axis the incumbent loses.
4. Radar scorecard
How these scores are arrived at — the rings, the 0–5 scale, and the evidence rules — is written up in the radar methodology. This table and the chart below are generated from one file, scorecards.json: the source of truth, machine-readable, and kept separate so two copies of the same numbers cannot drift apart between editions. Neo4j is the primary column as the incumbent every selection is measured against. Last reviewed 2026-Q3.
| Criterion | Neo4j | Evidence | Risk → mitigation |
|---|---|---|---|
| Query Language & Ergonomics | 4.6 | Cypher is the standard, converging on ISO GQL; skill transfers | — |
| Traversal Performance | 4.0 | Good; deep traversals most likely to need tuning | Hot deep paths → index + query tuning, or an in-memory engine |
| Write & Ingestion | 3.9 | Solid; heavy write bursts want sizing | Bursty writes → test large-transaction throughput first |
| Scale & Distribution | 3.4 | Vertical + clustering; happiest when the set fits a node | Billion-edge scale → TigerGraph, or partition the graph |
| Graph Analytics & Algorithms | 4.7 | GDS is the broadest algorithm library anywhere | — |
| Real-Time / Streaming | 3.6 | Ingests streams; not streaming-first | Constantly-changing graph → Memgraph |
| GraphRAG / GenAI Fit | 4.6 | Native vector index + first-party GraphRAG package | — |
| Operations & Ecosystem | 4.6 | Aura, Bloom, drivers everywhere, largest hiring pool | — |
| Governance & Security | 4.5 | Fine-grained RBAC, SSO, audit; mature enterprise story | — |
| TCO / Cost & Licensing | 3.2 | GPL Community limits; Enterprise cost; memory-hungry | Cost pressure → FalkorDB / Memgraph, or a static graph |
Comparator scores (same axis order — Query, Traversal, Writes, Scale, Analytics, Real-Time, GraphRAG, Ops/Eco, Governance, Cost). Memgraph: 4.4 / 4.6 / 4.4 / 3.2 / 4 / 4.7 / 4 / 3.6 / 3.6 / 3.8. FalkorDB: 4.2 / 4.7 / 4 / 3.4 / 3.6 / 4.2 / 4.5 / 3.6 / 3.4 / 4.2. TigerGraph: 3.4 / 4.3 / 4.2 / 4.7 / 4.4 / 3.6 / 3.6 / 3.2 / 4.2 / 3.4.
5. The radar
Ten graph axes; higher is better on all. The shapes are the argument. Neo4j is the roundest — strong nearly everywhere, dipping only on scale and cost. Memgraph and FalkorDB are spikes: Memgraph peaks on real-time and traversal, FalkorDB on traversal and GraphRAG, both short on ecosystem and governance. TigerGraph is the outlier, tall on scale and collapsed on query ergonomics and ops. Click any name in the legend to toggle it — comparing two shapes at a time is far more legible than four at once.
6. Workload-specific analysis
| Situation | Best fit | Notes |
|---|---|---|
| Bounded, rebuildable corpus (hundreds–few thousand docs) | Static graph | No database. Build it at CI time and ship a file — see the build-time approach. |
| General knowledge graph / connected-data app | Neo4j | The safe default — algorithms, ecosystem, GraphRAG, governance. |
| Constantly-changing graph, sub-ms reads | Memgraph | In-memory and streaming-first; size to RAM. |
| Latency-critical GraphRAG for agents | FalkorDB | GraphBLAS traversal + in-graph vector; best where Redis already runs. |
| Billion-edge deep-link analytics | TigerGraph | Distributed MPP. Budget for GSQL skill and ops weight. |
| Rich graph algorithms / graph data science | Neo4j | GDS is the widest library, and it is not close. |
| Choosing on a single vendor benchmark | Stop | Every vendor's benchmark shows the vendor winning. Test your workload. |
The trap: reaching for a graph database when the shape of your problem is a bounded graph. A graph database is a stateful system — backups, upgrades, a query surface, on-call. That is worth it when the graph is large, mutable, or interactively queried. For a fixed knowledge base of a few thousand documents, the graph fits in memory and rebuilds deterministically from source, and a build-time static file gives you the traversals with none of the operations. The mirror trap is choosing among the four on a throughput benchmark: each vendor's numbers show that vendor ahead, and the axis that actually decides your selection — query-language skill, write pattern, distribution, ecosystem — is not the one the benchmark measured.
7. Decision tree & reference architecture
The selection collapses to a few branching questions. Answer them in order and the choice is usually made before you reach a benchmark.
graph TD
A["Need graph traversals"] --> B{"Bounded, rebuildable
corpus?"}
B -->|"Yes — hundreds to
a few thousand docs"| S["Build-time static graph
(no database)"]
B -->|"No — large / mutable /
interactive"| C{"Billion-edge, must be
distributed?"}
C -->|"Yes"| TG["TigerGraph"]
C -->|"No"| D{"Graph changes constantly,
need sub-ms reads?"}
D -->|"Yes — streaming"| MG["Memgraph"]
D -->|"No"| E{"Latency-critical GraphRAG,
Redis already in stack?"}
E -->|"Yes"| FK["FalkorDB"]
E -->|"No — default"| N4["Neo4j"]
Most selections end at Neo4j or, one branch earlier, at "you did not need a database." The three specialists are the answer to a specific yes — distribution, streaming, or Redis-native low-latency GraphRAG — not a general upgrade over the default.
Where a graph database does earn its place, the pattern I would build keeps it behind the same swappable retriever interface as a vector store, so graph and vector retrieval compose rather than compete:
graph LR
SRC[("Source data")] --> ETL["Extract entities + relations"]
ETL --> GDB[("Graph database
Neo4j / Memgraph / FalkorDB")]
EMB["Embeddings"] --> GDB
Q["Query"] --> RET["Retriever interface"]
RET -->|"graph traversal"| GDB
RET -->|"vector search"| VEC[("Vector index")]
GDB --> CTX["Grounded context + citations"]
VEC --> CTX
CTX --> LLM["LLM answer"]
GraphRAG is graph traversal and vector search feeding one context, not one replacing the other. Engines with an in-graph vector index (Neo4j, FalkorDB, Memgraph) collapse the two boxes into one store; keeping the retriever interface in front means that is an optimisation, not a lock-in.
The same 2-hop retrieval reads almost identically across the Cypher engines — the portability that GSQL gives up:
// Cypher (Neo4j / Memgraph / FalkorDB): entities two hops from a seed,
// ranked by a precomputed centrality score. Parameters are bound ($seed),
// never string-concatenated — query input is model-controlled in GraphRAG.
MATCH (s:Entity {id: $seed})-[*1..2]-(n:Entity)
WHERE n.score IS NOT NULL
RETURN DISTINCT n.name, n.score
ORDER BY n.score DESC
LIMIT 10;
8. POC plan (4 weeks)
- Week 1 — try to avoid a database. If the corpus is bounded and rebuildable, build the graph as a static file and see whether the traversals you actually need are already served. If they are, stop — you have saved yourself a stateful system.
- Week 2 — write your real graph, your real way. Load your real data at real size with your real update pattern (bulk once, or streaming continuously). This is where in-memory and streaming-first engines separate from disk-based ones, and where TigerGraph's bulk loader earns its place.
- Week 3 — run the traversals and algorithms that matter, then operate the failure. Benchmark your deepest real query, not a vendor's; run the graph-data-science algorithm you actually need (and check it exists); then restart a node, restore a backup, and roll an upgrade. The ecosystem gap between Neo4j and the specialists shows up here.
- Week 4 — price it and write the ADR. Model licensing and infrastructure at 12-month scale — Neo4j Enterprise, TigerGraph's cluster, or the RAM bill for an in-memory engine — and record which engine, at which threshold, and why.
9. Final recommendation
Ask whether you need a database before you pick one; then default to Neo4j and move to a specialist only when a specific axis forces it — TigerGraph for distributed scale, Memgraph for real-time, FalkorDB for latency-critical GraphRAG.
For a bounded, rebuildable corpus, a build-time static graph is the honest answer and none of these four is needed — the graph fits in memory and regenerates from source, and you skip the backups, upgrades and on-call a database brings. When the graph is genuinely large, mutable or interactively queried, Neo4j is the low-regret default: it scores highest here on algorithms, ecosystem, GraphRAG tooling and governance, and Cypher is the transferable skill. Its weak axes are horizontal write scale and cost, and those are exactly the signals to look at a specialist.
Choose TigerGraph when the graph is genuinely billion-edge and must be distributed, and budget for GSQL and the operational weight of a cluster. Choose Memgraph when the graph changes constantly and reads must be sub-millisecond, sizing to RAM. Trial FalkorDB when GraphRAG latency is the constraint and Redis is already operated — its GraphBLAS traversal and in-graph vector index are purpose-built for it, against a younger ecosystem. And keep the graph behind a retriever interface so graph and vector retrieval compose.
I would re-assess when Neo4j's horizontal write scaling closes the gap to TigerGraph, and when the specialists' ecosystems mature — either would move where the graduation thresholds sit.
References
Vendor benchmarks in this space each favour their sponsor; I have leaned on primary docs and treated any single throughput number as directional.
Primary sources
- Neo4j — vector indexes and the neo4j-graphrag-python package. The GraphRAG and single-store-vector evidence behind Neo4j's scores.
- Neo4j Graph Data Science — algorithms. The breadth behind the 4.7 analytics score.
- Memgraph. In-memory C++ engine, streaming ingestion, dynamic algorithms, and the 3.x GraphRAG flow.
- FalkorDB and its open benchmark harness. GraphBLAS sparse-matrix traversal and the in-graph vector index behind its traversal and GraphRAG scores.
- TigerGraph documentation. Distributed MPP architecture and GSQL — the scale and query-language evidence.
Background
- Cypher & the GQL standard. Why the Cypher engines share a transferable skill and GSQL does not.
Deeper reading (blog)
The graph and retrieval engineering behind the scores:
- Build-Time Knowledge Graphs — the case for shipping the graph as a file, and when a database is overkill.
- Knowledge Graphs & the Semantic Web — the modelling that precedes the engine choice.
- Radar: Vector Databases — the other half of GraphRAG retrieval, on its own axes.
- Fine-tuning vs RAG vs Prompting — when graph-grounded retrieval is the right tool at all.
Scores are my own architect-level judgment for the stated use case, calibrated to mid-2026 — not a vendor ranking, and not a throughput benchmark. Graph-workload axes, higher is better. NOT comparable with any other assessment here. Re-score against your own POC numbers before you commit.