RyanCodrai/turbovec
A vector index built on TurboQuant, written in Rust with Python bindings
解决的问题
向量数据库通常需要大量的 RAM 来存储高维嵌入(例如,存储 1000 万个文档需要 31 GB)。Turbovec 通过使用先进的量化技术来压缩这些向量,在保持高搜索速度和召回率的同时,将内存占用降低高达 16 倍,从而解决了这一问题。
工作原理
该引擎使用 Rust 构建并带有 Python 绑定,利用 TurboQuant 算法在无需单独训练阶段的情况下压缩向量。其工作步骤如下:
- Normalization: 去除向量长度并单独存储。
- Random Rotation: 应用随机正交矩阵,使坐标遵循可预测的分布。
- Calibration (TQ+): 使标量符合数据的经验分布,从而实现无需重新训练即可量化。
- Lloyd-Max Quantization: 使用预计算的最佳桶,将坐标压缩为 2 位或 4 位整数。
- SIMD Search: 使用手写的 SIMD 内核(x86 的 AVX-512/AVX2 和 ARM 的 NEON)直接对压缩后的向量进行评分,无需完全解压。
适用对象
专为构建检索增强生成 (RAG) 应用的开发人员设计,在这些应用中,内存效率、低延迟和数据隐私(本地/离线执行)至关重要。
亮点
- 极致压缩:使用 2 位量化将 1536 维向量从 6,144 字节减少到 384 字节。
- 无需训练:支持在线摄取,向量可以立即建立索引,无需单独的训练或重建步骤。
- 高性能:在 ARM 上优于 FAISS,并在 x86 的各种配置下达到或超过 FAISS 的性能。
- 框架就绪:为 LangChain、LlamaIndex、Haystack 和 Agno 提供即插即用的替代方案。