sqlitegraph 2.0.4

Embedded graph database with full ACID transactions, HNSW vector search, dual backend support, and comprehensive graph algorithms library
Documentation

SQLiteGraph

crates.io Documentation

Embedded graph database with dual backend architecture.

Positioning: Single-binary embedded database (no server). Persistent storage with atomic batch commits. Graph algorithms + HNSW vector search in one engine. SQLite backend: best for point lookups. Native V3: 10-20× faster for traversals.

What's New in v2.0.0

Native V3 Backend - Production-ready high-performance backend

  • B+Tree-based storage with unlimited node capacity (no 2048 limit)
  • 10-20× faster traversals compared to SQLite backend
  • Full feature parity: graph algorithms, HNSW vectors, Pub/Sub, KV store
  • WAL integration for durability and crash recovery

SQLite Backend Pub/Sub - Now fully supported

  • In-process event notification for graph changes
  • Multiple subscriber support with filtered events
  • Works across all backends

HNSW Vector Storage for V3 - Vector search with V3 backend

  • V3VectorStorage - stores vectors in V3's KV store
  • Same HNSW algorithm, different persistence layer
  • Unified API across backends

Reshaped CLI (sqlitegraph-cli crate)

  • Read-only by default (--write flag for modifications)
  • Cypher-like query support: MATCH (n:User) RETURN n.name
  • Dual backend support (--backend sqlite|v3)

Backends

Feature SQLite Native V3
Status Stable Production
Storage .db file .graph file
Max nodes Unlimited Unlimited
Graph algorithms 35+ 35+
HNSW vectors Yes Yes
Pub/Sub Yes Yes
KV Store Yes Yes (lazy init)

Quick Start

[dependencies]
# SQLite backend (default)
sqlitegraph = "2.0"

# OR Native V3 backend (faster traversals)
sqlitegraph = { version = "2.0", features = ["native-v3"] }
use sqlitegraph::backend::{GraphBackend, NodeSpec};
use sqlitegraph::backend::sqlite::SqliteGraphBackend;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let backend = SqliteGraphBackend::in_memory()?;
    
    let node_id = backend.insert_node(NodeSpec {
        kind: "User".to_string(),
        name: "Alice".to_string(),
        file_path: None,
        data: serde_json::json!({"age": 30}),
    })?;
    
    println!("Created node: {}", node_id);
    Ok(())
}

Features

  • Dual Backend Architecture: SQLite (stable, debuggable) or Native V3 (high performance)
  • Graph Algorithms: 35+ algorithms including BFS, DFS, PageRank, community detection
  • HNSW Vector Search: Approximate nearest neighbor search with multiple distance metrics
  • ACID Transactions: Full durability with WAL support
  • Pub/Sub Events: Real-time notifications for graph changes
  • KV Store: Key-value storage with TTL and MVCC

Ecosystem

Tool Purpose Repository crates.io
Magellan Code graph indexing github.com/oldnordic/magellan crates.io/crates/magellan
llmgrep Semantic code search github.com/oldnordic/llmgrep crates.io/crates/llmgrep
Mirage CFG analysis github.com/oldnordic/mirage crates.io/crates/mirage-analyzer
splice Precision code editing github.com/oldnordic/splice crates.io/crates/splice

Documentation

License

GPL-3.0-or-later