Skip to content
Tech News
← Back to articles

Turbovec – Google's TurboQuant for vector search in Rust

read original more articles
Why This Matters

Turbovec is a high-performance, memory-efficient vector search library built in Rust, leveraging Google's TurboQuant algorithm. It offers fast, online indexing and search capabilities with minimal resource usage, outperforming popular solutions like FAISS. Its design ensures data privacy, crash safety, and ease of use for large-scale vector search applications.

Key Takeaways

A 10 million document corpus takes 31 GB of RAM as float32. turbovec fits it in 4 GB - and searches it faster than FAISS.

turbovec is a Rust vector index with Python bindings, built on Google Research's TurboQuant algorithm — a data-oblivious quantizer with near-optimal distortion and no separate training phase.

Online ingest. Add vectors, they're indexed — no train step, no parameter tuning, no rebuilds as the corpus grows.

Add vectors, they're indexed — no train step, no parameter tuning, no rebuilds as the corpus grows. Fast SIMD search. Hand-written kernels — NEON SDOT/SMMLA on ARM, AVX-512 VNNI and vpermb on x86, with AVX2 and scalar fallbacks — beat FAISS IndexPQFastScan in every measured config, averaging 3.4× at 4-bit and 23% at 2-bit across the eight cells of each width, on both architectures.

Hand-written kernels — NEON SDOT/SMMLA on ARM, AVX-512 VNNI and on x86, with AVX2 and scalar fallbacks — beat FAISS IndexPQFastScan in every measured config, averaging 3.4× at 4-bit and 23% at 2-bit across the eight cells of each width, on both architectures. Incremental saves. sync(path) persists just what changed since the last sync — one fsync per call, crash-safe at any byte, and a removal or a small append costs milliseconds however large the index. write / load stay for whole-file snapshots.

persists just what changed since the last sync — one fsync per call, crash-safe at any byte, and a removal or a small append costs milliseconds however large the index. / stay for whole-file snapshots. Filter at search time. Pass an id allowlist (or a slot bitmask) to search() and the kernel honours it directly. You always get up to k results from the allowed set — no over-fetching, no recall hit on selective filters.

Pass an id allowlist (or a slot bitmask) to and the kernel honours it directly. You always get up to results from the allowed set — no over-fetching, no recall hit on selective filters. Pure local. No managed service, no data leaving your machine or VPC. Pair with any open-source embedding model for a fully air-gapped RAG stack.

Building RAG where privacy, memory, or latency matters? You're in the right place.

Python

pip install turbovec

... continue reading