git-vdb
A Git-native embedded vector database.
git-vdb stores vectors, payloads, metadata, and search indexes as immutable
Git objects. Equivalent data produces the same root tree, while ordinary Git
commits and refs provide optional naming, history, transport, and atomic writes.
Install
The project also provides a pinned Nix development and build environment:
Rust quick start
use ;
#
See the API documentation for named collections, immutable snapshots, filtering, approximate search, validation, history, and materialization.
CLI quick start
Inputs and outputs are JSON or JSON Lines. Run git-vdb --help or
git-vdb <command> --help for the complete command reference.
Model
tree = deterministic database state
commit = history describing a state transition
ref = mutable name for the current state
Use SnapshotEngine when another system owns naming and persistence. Use
Database, Collection, or the CLI when you want named collections backed by
commits and compare-and-swap refs. Both layers produce the same canonical roots.
Core capabilities include:
- typed string and unsigned-integer IDs, dense
f32vectors, and JSON payloads; - exact cosine search and deterministic IVF-flat approximate search;
- Boolean payload filters, retrieval, counts, upserts, and deletion;
- immutable historical reads, diffs, validation, and portable snapshots;
- bare or non-bare Git repositories with no server or hidden external state.
Approximate search is explicitly bounded and may omit globally better points; query results report the selected mode and work statistics.
Documentation
- Rust API documentation
- Canonical format version 2
- Legacy format version 1
- Snapshot lifecycle and portability
- Current limitations and findings
- Contributing and validation
- Release process
- Security policy
Persisted format versions and the crate's Semantic Version are separate compatibility boundaries. New roots use version 2; version-1 roots remain readable and mutable.
Development
Licensed under the Apache License 2.0.