Graph Databases
The project has moved away from protocol lock-in (Bolt/Neo4j) toward a repository-pattern abstraction. This page records the comparison that led to Memgraph as the primary semantic-graph backend.
Compared Systems
| Database | Model | Protocol | HA | Native Vector | License |
|---|---|---|---|---|---|
| Neo4j | Labeled property graph | Bolt | Causal cluster (Enterprise) | No | Commercial/SSPL |
| Memgraph | Labeled property graph | Bolt | Async replication (Community); Raft HA in the orchgraph fork | No (Community) | BSL |
| TigerGraph | Native parallel graph | GSQL / REST | Enterprise | Yes | Commercial |
| NebulaGraph | Distributed property graph | nGQL / HTTP | Yes (open source) | No | Apache 2.0 |
| Kuzu | Embedded graph | Cypher | N/A | No | MIT |
| Apache AGE | PostgreSQL extension | SQL/Cypher | Via Postgres | Via Postgres | Apache 2.0 |
Decision
Use Memgraph Community as the primary semantic graph backend because:
- Cypher-compatible with Neo4j (easier migration).
- Source available under BSL for personal fork and feature additions.
- Performance characteristics fit RAG/GraphRAG query patterns.
- HA was initially achieved with a custom HTTP HA controller (autofailback over async replication); since 2026-07-10 the live deployment is the orchgraph fork of Memgraph 3.11 with native Raft HA (3 coordinators + 2 data instances) — no external controller.
Decision funnel: from compared candidates to the chosen backend
Bolt Priority
Bolt was originally important because Neo4j uses it. With the repository pattern, Bolt is an implementation detail. The abstraction can be retargeted to HTTP/gRPC/nGQL later if needed.