project
turbovec - 谷歌开源的向量索引新算法
turbovec 是 Google Research TurboQuant 算法的开源实现,由 Rust 编写并附带 Python 绑定,是面向 RAG 场景的高性能向量索引库。工具采用数据无关的量化策...
turbovec是什么
turbovec 是 Google Research TurboQuant 算法的开源实现,由 Rust 编写并附带 Python 绑定,是面向 RAG 场景的高性能向量索引库。工具采用数据无关的量化策略,无需训练阶段可将 1000 万条 float32 向量从 31GB 压缩至约 4GB,在 ARM 和 x86 平台上通过手写 SIMD 内核实现比 FAISS 更快的搜索速度,支持搜索时过滤、持久化和主流框架的即插即用替换。
turbovec的主要功能
-
在线摄入索引:添加向量即自动完成索引,无需训练步骤、参数调优或语料库增长时重建。
-
快速 SIMD 搜索:手写 NEON(ARM)和 AVX-512BW(x86)内核,搜索速度比 FAISS IndexPQFastScan 更快。
-
搜索时过滤:支持传入 ID 白名单或槽位位掩码,过滤逻辑在 SIMD 内核内直接短路,无需过度抓取。
-
稳定外部 ID 与删除:通过
IdMapIndex支持自定义 uint64 外部 ID 及 O(1) 时间复杂度的按 ID 删除。 -
索引持久化:支持
write保存到磁盘和load快速恢复,无需重新编码。 -
框架即插即用:提供 LangChain、LlamaIndex、Haystack、Agno 的官方集成,改几行 import 即可替换原有向量存储。
-
纯本地运行:无需托管服务,数据不离开本地机器或 VPC,可构建完全离线的 RAG 栈。
turbovec的技术原理
-
归一化:将每个向量的长度(范数)剥离并单独存储,使剩余部分成为单位超球面上的方向向量。
-
随机正交旋转:用同一个随机正交矩阵旋转所有向量,使每个坐标独立服从可预测的 Beta 分布,且与原始数据内容无关。
-
TQ+ 自适应校准:首次添加向量时,对每个坐标按 5%/95% 分位数进行缩放与平移校准,将经验分布映射到标准 Beta 边缘分布;后续向量复用该校准参数,无需重新训练。
-
Lloyd-Max 标量量化:基于已知分布预计算最优量化桶边界与质心,失真度接近信息论下界的 2.7 倍。
-
位打包:将每个坐标压缩为小整数并紧密打包,1536 维向量从 6144 字节降至 384 字节,实现 16 倍压缩。
-
长度重归一化评分:编码时额外计算一个尺度因子,搜索时乘回以消除量化导致的系统性内积低估,将估计器从有偏修正为无偏,召回率进一步提升。
微信关注回复 “开源”,加入AI开源项目交流群
如何使用turbovec
-
安装库:执行
pip install turbovec获取 Python 绑定。 -
创建索引:实例化
TurboQuantIndex(dim=1536, bit_width=4),指定维度与量化位数。 -
添加向量:调用
index.add(vectors)将数据批量入库,系统自动完成旋转、校准与量化。 -
执行搜索:调用
index.search(query, k=10)获取 Top-K 相似度分数与索引。 -
持久化存储:使用
index.write("my_index.tv")保存索引,通过TurboQuantIndex.load恢复。 -
外部 ID 管理:改用
IdMapIndex实现add_with_ids和 O(1) 删除。 -
混合检索:先用 SQL/BM25 等系统筛选候选 ID,再传入
allowlist做稠密精排。
turbovec的项目地址
- 项目官网:https://pypi.org/project/turbovec/
- GitHub仓库:https://github.com/RyanCodrai/turbovec
turbovec的同类竞品对比
| 维度 | turbovec | FAISS (IndexPQFastScan) |
|---|---|---|
| 量化训练 | 无需训练,在线摄入 | 需 k-means 训练码本 |
| 压缩率 | 16x(2-bit)/ 8x(4-bit) | 类似,依赖训练质量 |
| ARM 搜索速度 | 比 FastScan 快 10–19% | 基准 |
| x86 搜索速度 | 4-bit 胜出,2-bit 接近 | 基准,2-bit VBMI 有优势 |
| 搜索时过滤 | SIMD 内核内短路,零召回损失 | 先算后滤,存在过度抓取 |
| 部署形态 | 纯本地嵌入式库 | 纯本地嵌入式库 |
| 框架集成 | 官方支持 LangChain 等 4 个框架 | 社区支持广泛 |
| 低维召回 | TQ+ 校准后持平或领先 | 基准 |
turbovec的应用场景
-
内存敏感型 RAG:中小团队或本地部署,需在有限内存中索引千万级文档,1000 万向量从 31GB 压至 4GB。
-
低延迟在线服务:对向量检索延迟要求苛刻的线上 RAG、推荐或搜索系统,依赖 SIMD 加速。
-
隐私优先架构:数据不能上传至第三方或离境的政企、金融场景,纯本地运行无需托管服务。
-
边缘与移动端:ARM 优化强劲,适合在手机、IoT 设备或嵌入式硬件上运行向量检索。
-
混合检索系统:先用 SQL / BM25 / 权限系统粗筛候选 ID,再传入
allowlist做稠密向量精排。