RyanCodrai · 2026-08-18 · major
turbovec 1.0 — Rust vector index fits 10M embeddings in 4 GB
turbovec 1.0 is a Rust vector index built on Google Research's TurboQuant. A 10-million-document corpus that needs 31 GB as float32 fits in 4 GB, and search runs about 3.4x faster than FAISS IndexPQFastScan at 4 bits.
A Rust vector index that fits 10 million embeddings in 4 GB and takes new vectors without a training pass.
Key specs
| GitHub stars | 15.2k |
|---|---|
| Hacker news points | 181 |
Quick facts
| Maker | RyanCodrai (independent open-source project) |
|---|---|
| Version | 1.0.0, published 18 August 2026 |
| License | MIT |
| Language | Rust, with Python bindings |
| Install | pip install turbovec / cargo add turbovec |
| Quantization | 2-bit and 4-bit |
| Based on | Google Research's TurboQuant |
What is it?
turbovec 1.0 packages Google Research's TurboQuant compression into a working vector index, written in Rust with Python bindings. Embeddings are stored at 2 or 4 bits per dimension, so a 10-million-document corpus that takes 31 GB as float32 sits in 4 GB instead. Version 1.0.0 went up on PyPI on 18 August 2026 under the MIT license.
How does it work?
TurboQuant is what the README calls a data-oblivious quantizer: it does not study your data before compressing it, so there is no separate training phase. Vectors go in as they arrive, the index saves incrementally, and search runs on SIMD instructions tuned for both ARM and x86. An optional calibration pass, TurboQuant+, samples roughly 1,024 vectors to push recall higher.
Why does it matter?
Memory is the main cost of vector search, and turbovec cuts a 31 GB corpus down to 4 GB while searching about 3.4x faster than FAISS IndexPQFastScan at 4 bits. Deletes are the sharper difference: turbovec removes by id in 0.44-1.37 microseconds against 0.19-1.02 seconds for FAISS, so indexes that churn constantly stop needing periodic rebuilds.
Who is it for?
RAG and search infrastructure engineers
Frequently asked questions
- How does turbovec compare with FAISS?
- turbovec beats FAISS IndexPQFastScan across the configurations its README measures. Search averages 3.4x faster at 4 bits and 20-23% faster at 2 bits on both ARM and x86. Single-vector inserts run 7.6-13.9x faster, batches of 100 run 4.6-15.1x faster, and remove-by-id is 0.44-1.37 microseconds against 0.19-1.02 seconds.
- Does turbovec need a training step before indexing?
- No. turbovec inherits TurboQuant's data-oblivious design, which the README describes as having near-optimal distortion and no separate training phase, so vectors can be ingested online as they arrive. Calibration exists but is optional: the TurboQuant+ mode uses a representative sample of about 1,024 vectors when you want the best recall.
- How much recall does 2-bit compression cost?
- turbovec reports competitive recall at both widths. Its calibrated TurboQuant+ mode reaches at least 0.997 recall at k of 4 or less on OpenAI embeddings. On GloVe vectors with 200 dimensions it leads FAISS by 1.9 points at R@1 with 4-bit quantization and by 0.8 points at 2-bit.
- What input formats and features does turbovec support?
- turbovec accepts 2-D float32 arrays only, and rejects other dtypes rather than silently converting them. Beyond storage it offers filtered search at query time, incremental saves so an index does not have to be rewritten in full, and fully local operation with no managed service to sign up for.
Try it
pip install turbovec