向量检索太吃内存?turbovec 可能是你在找的东西
背景 最近在搞 RAG 相关的东西,向量数据库这块一直用的 FAISS。用着没啥大毛病,但有个痛点:内存占用太大。 1000万条 1536 维的向量,float32 存储直接干到 31GB。服务器内存吃不住,量化方案又得单独跑 train 阶段,数据量小了码本质量还拉胯。 然后在 arXiv 上刷到一篇 Google Research 的论文——TurboQuant(ICLR 2026),顺着论文找到了它的 Rust 实现:turbovec。 试了一下,真香。 turbovec 是什么 一句话:基于 TurboQuant 算法的向量索引库,Rust 写的,有 Python 绑定。 核心卖点: 1000万 1536 维向量,31GB → 4GB 没有 train 阶段,add() 直接索引 比 FAISS IndexPQFastScan 快 12-20%(ARM)/ 持平或略快(x86) 纯本地,数据不出机器 GitHub: RyanCodrai/turbovec(9K+ stars) 技术原理(简化版) TurboQuant 的核心思路挺巧妙的: 归一化:把向量长度去掉,变成超球面上的单位方向 随机正交旋转:旋转之后,每个坐标独立服从已知的 Beta 分布。关键点——这个分布跟输入数据无关,是数学上能推导出来的 Lloyd-Max 量化:既然分布已知,最优的桶边界可以直接算出来,不需要从数据里学 Bit-pack:1536维向量从 6144 字节压到 384 字节,16 倍压缩 省掉了 train 阶段,意味着: 数据量小也能用 在线添加新向量不需要重建索引 没有超参数调优的烦恼 实际用法 pip install turbovec 基础用法真的很简单: ...