
TurboVec
github.com/ryancodrai/turbovec- Category
- AI Tools
- Rank
- No. 761Tools index
Previous survey · No. 746 ·
- Type
- APP
- Builder
- ryancodrai
- GitHub
- 17.2k stars
- Date
About
A fast vector index built on TurboQuant, written in Rust with Python bindings.
What it does
TurboVec compresses embedding vectors to two, three, or four bits per coordinate, then searches those compact representations locally. New vectors become searchable immediately without training or rebuilding. It supports positional entries or stable external identifiers, filtered retrieval, deletion, full snapshots, and incremental persistence.
Why it's ranked here
TurboVec makes a strong case for memory-sensitive local retrieval. Its published benchmarks report lower search latency than comparable FAISS configurations on ARM and x86, while its API covers online ingestion, stable identifiers, filtering, and crash-aware persistence. The evidence is extensive, but it comes from the project’s own benchmark suite.
What's good
Filtering happens inside the SIMD search kernel, so selective allowlists can skip whole blocks instead of scoring everything and discarding unwanted results. Incremental saves write only changes after the previous synchronization. Stable identifiers survive swap-based deletion. Python integrations cover LangChain, LlamaIndex, Haystack, and Agno, with explicit persistence and filtering semantics.
Tradeoffs
Compression discards full-precision vectors, which prevents max-marginal-relevance search and means Haystack cannot return stored embeddings. Inputs must be contiguous two-dimensional float32 arrays in Python, dimensions must be positive multiples of eight, and only two, three, or four bits per coordinate are supported. The core requires a 64-bit target. Some framework features still need adjacent components, including Haystack retrieval wiring and embedding generation.
How to use it well
Use TurboVec for local or air-gapped retrieval where memory, ingestion latency, selective filtering, and incremental persistence matter. It fits dense reranking behind SQL, lexical search, access controls, or time-window filtering. Choose stable identifiers when records may be deleted. Bring your own embedding model, and bring a lexical index when you need keyword or hybrid retrieval because TurboVec does not ship one.
Technical notes+
Cargo.toml defines a Rust workspace with turbovec and turbovec-python; release builds enable LTO, one codegen unit, and optimization level 3. turbovec/src/lib.rs rejects non-64-bit targets, defers rotation, centroid, and SIMD-blocked-layout initialization through OnceLock, and exposes positional and stable-ID indexes. turbovec-python/src/lib.rs uses PyO3 and NumPy bindings, validates array shape and dtype, maps malformed inputs to Python exceptions, and handles NumPy boolean masks through raw bytes to avoid invalid Rust bool representations. turbovec-python/build.rs adds platform-specific Python extension linker arguments, including macOS dynamic lookup support.
Observed
- Primary language
- Rust
- Packaging
- Published for Python installation through PyPI and Rust installation through crates.io
- Interfaces
- Rust library and Python library bindings
- Framework integrations
- Optional Python integrations for LangChain, LlamaIndex, Haystack, and Agno
- Platform support
- Requires a 64-bit target; includes ARM NEON, x86 AVX-512 and AVX2 kernels, plus scalar fallbacks
- Persistence
- Supports whole-file snapshots, in-memory serialization, and incremental saves
- Repository structure
- Cargo workspace contains separate core and Python-binding members
Read from README.md, Cargo.toml, docs/api.md, docs/integrations/agno.md, docs/integrations/haystack.md, docs/integrations/langchain.md, docs/integrations/llama_index.md, turbovec-python/build.rs, turbovec/src/lib.rs, turbovec-python/src/lib.rs.
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.