GraphRAG: Introducing CoordiNode (Alpha)

rust dev.to

Building relationship-aware AI applications today usually means duct-taping three different systems together: Neo4j for the graph, Pinecone for vectors, and Elasticsearch for text.

This infrastructure nightmare leads to:

  1. Writing endless glue code.
  2. Maintaining brittle data sync pipelines.
  3. Zero transactional consistency across your data silos.

After getting completely fed up with this, I spent the last few months building an alternative: CoordiNode.

What is CoordiNode?

CoordiNode is an open-source (AGPL-3.0), graph-native hybrid retrieval engine built entirely in Rust. It unifies graph traversal, vector similarity search, and full-text retrieval into a single transactional engine.

The Elephant in the Room: Why not Neo4j, ArangoDB, or SurrealDB?

Whenever a new database drops, the immediate question is: why reinvent the wheel? Here is exactly why we built this:

  • Why not Neo4j? Neo4j is the king of graphs, but it runs on the JVM. We wanted a lightweight, zero-GC, single-binary engine that delivers predictable performance without JVM tuning overhead.
  • Why not SurrealDB or ArangoDB? Both are fantastic multi-model databases. However, they rely on proprietary query languages (SurrealQL and AQL). We firmly believe OpenCypher is the gold standard for graph traversals. CoordiNode is built to be OpenCypher-compatible from day one.

Core Features

  • One Engine, One Query: Traverse a knowledge graph, filter by vector distance, and rank by text match in a single Cypher query.
  • Predictable Performance: Pure Rust implementation using a native seqno MVCC with a unified oplog (built on a modified Fjall LSM-tree).
  • ACID Transactions: Full Snapshot Isolation across all your graph, text, and vector data simultaneously.

The "Magic Moment" Query

Imagine running this in one transaction:

MATCH(topic:Concept {name: "machine learning"})-[:RELATED_TO*1..3]->(related)
MATCH(related)<-[:ABOUT]-(doc:Document)
WHERE vector_distance(doc.embedding, $question_vector) < 0.4
  AND text_match(doc.body, "transformer attention mechanism")
RETURN doc.title, vector_distance(doc.embedding, $question_vector) AS relevance
Enter fullscreen mode Exit fullscreen mode

The Reality Check (Early Alpha v0.3.x)

I want to be 100% transparent—this is an early alpha. The core is solid, but bugs are expected. Here is our actual roadmap status:

  1. Single-node only: Currently optimized for 100K-1M nodes. Distributed Raft clustering is in active development (v0.4).
  2. No Bolt Protocol (Yet): Use our native gRPC, REST proxy, or HTTP. Neo4j driver compatibility (Bolt) is planned for v1.2.
  3. In-Memory Vectors: HNSW indexes currently reside in RAM (e.g., 1M vectors × 384 dims = ~1.5GB RAM).

Try it out

You can spin it up via Docker in under 5 minutes:

git clone https://github.com/structured-world/coordinode.git
cd coordinode
docker compose up -d
Enter fullscreen mode Exit fullscreen mode

We are a small team building the infrastructure layer for AI-native applications. If you believe graph + vector + text should live in one engine under a genuine open-source license, give it a spin!

We would be incredibly grateful for your feedback or bug reports on GitHub.

👉 GitHub: https://github.com/structured-world/coordinode


If you like what we're building, feel free to drop a ⭐ on GitHub! It helps us keep going.

Source: dev.to

arrow_back Back to Tutorials