10M 文档向量,FP32 占 31 GB,turbovec 量化后只要4 GB。更猛的是,ARM 硬件上搜索速度比 FAISS IndexPQFastScan 提升12–20%,本地部署和资源有限团队的痛点直接解决。
- turbovec 基于 Google TurboQuant,无需训练 codebook,量化向量立即可用
- 2-bit 量化压缩比高达 16x,1536 维向量从 6144 bytes 缩至 384 bytes
- Python/Rust 双 API,支持 LangChain、LlamaIndex 和 Haystack 集成,完全本地化存储
TurboQuant 量化解析
TurboQuant 是 Google Research 提出的数据无关量化算法。流程分四步:向量归一化,随机旋转(使每维坐标近似 Beta 分布,高维下收敛 N(0,1/d)),Lloyd-Max 标量量化(2-bit/4-bit 分桶),最后打包成字节。整个流程零训练、零遍历数据,2-bit 压缩比可达 16x,同时保留大部分原始信息。
搜索时查询向量旋转一次,直接对比码本值。评分核在 ARM 上使用 NEON,x86 上 AVX-512BW(AVX2 兼容),nibble-split lookup table 提升吞吐量。TurboQuant 在信息论香农下界内的失真约为 2.7x。
跑分与对比
turbovec 对比 FAISS IndexPQ(LUT256, nbits=8, float32 LUT):
- OpenAI embeddings d=1536/d=3072,R@1 相差0–1 点
- GloVe d=200,R@1 落后 3–6 点,k≈16–32 收敛
- ARM Apple M3 Max,turbovec 全量配置比 FAISS 快12–20%
- x86 Intel Xeon Platinum 8481C,4-bit 单线程快 1–6%,2-bit 单线程差距约 1%,2-bit 多线程在 d=1536/3072 略落后 FAISS
# Python 安装pip install turbovec
from turbovec import TurboQuantIndex
index = TurboQuantIndex(dim=1536, bit_width=4)
index.add(vectors)
scores, indices = index.search(query, k=10)
index.write("my_index.tq")
# Rust安装cargo add turbovec
use turbovec::TurboQuantIndex;
let mut index = TurboQuantIndex::new(1536, 4);

实操拿到方式
Python 一行 pip 安装即可,Rust 通过 cargo add 获取。支持增量添加向量、外部 uint64 ID(O(1) 删除),同时可持久化存储为 .tq 或 .tvim 文件。集成 LangChain、LlamaIndex、Haystack 时直接 drop-in 使用。
GitHub: https://github.com/RyanCodrai/turbovec
留言聊聊
你现在本地部署主力用的是 turbovec 还是 FAISS?哪种量化策略更适合你的大规模向量库?
来源:MarkTechPost|原文:Meet Turbovec: A Rust Vector Index with Python Bin
夜雨聆风