Embeddable graph database built in pure Rust. Dual data models (LPG + RDF), five query languages, HNSW vector search, MVCC transactions. Zero external dependencies.
- 5 query languages: GQL (ISO), Cypher, Gremlin, GraphQL, SPARQL. Use what you know.
- LPG + RDF in one engine: Property graphs and triples with optimized storage for each.
- Vector search: HNSW indexes with scalar, binary, and product quantization. SIMD-accelerated.
- Embeddable: Link as a library (Rust, Python, Node.js, WASM) or run as a server. No external processes.
- Fast(est): Push-based vectorized execution, morsel-driven parallelism, columnar storage with zone maps. Benchmarked with ann-benchmarks and graph-bench.
import grafeo
db = grafeo.GrafeoDB()
# Build a graph
db.execute("INSERT (:Person {name: 'Alice', age: 30})-[:KNOWS {since: 2020}]->(:Person {name: 'Bob', age: 25})")
db.execute("INSERT (:Person {name: 'Bob'})-[:KNOWS]->(:Person {name: 'Carol', age: 28})")
# Traverse it
for row in db.execute("""
MATCH (p:Person)-[:KNOWS]->(friend)-[:KNOWS]->(fof)
WHERE fof <> p
RETURN p.name, fof.name AS friend_of_friend
"""):
print(row)
| Project |
Description |
Install |
| grafeo |
Embeddable graph database engine |
uv add grafeo / cargo add grafeo / npm install @grafeo-db/js |
| grafeo-server |
HTTP server & web UI: REST API, transactions, ~20MB Docker image |
docker pull grafeodb/grafeo-server |
| grafeo-web |
Browser-based Grafeo via WebAssembly with IndexedDB persistence |
Coming soon |
| Project |
Description |
Install |
| anywidget-graph |
Interactive graph visualization for notebooks (Marimo, Jupyter, VS Code, Colab) |
uv add anywidget-graph |
| anywidget-vector |
3D vector/embedding visualization with 6D encoding |
uv add anywidget-vector |
| Project |
Description |
| graph-bench |
Custom benchmark suite using LDBC benchmarks, 25 tests across 8 graph database engines |
| ann-benchmarks |
Fork of ann-benchmarks extended with a Grafeo HNSW adapter for vector search benchmarking |