turbovec: 它是什么,解决了什么问题,以及为什么它正受到关注
turbovec: 它是什么,解决了什么问题,以及为什么它正受到关注
它解决了什么问题
turbovec 是一个高性能向量索引,旨在减少大规模向量搜索对海量 RAM 的需求。它允许用户在极小的内存占用下容纳数百万个文档(例如,在 4 GB 内存中容纳 1000 万个文档,而不是 31 GB),同时保持高搜索速度和召回率,使其成为离线环境或内存受限的 RAG 栈的理想选择。
工作原理
该项目基于 Google Research 的 TurboQuant 算法构建,使用了一种无需单独训练阶段的数据无关量化器。其过程包括:
- 归一化与旋转:向量被归一化为单位方向,并乘以一个随机正交矩阵,以使其坐标分布变得可预测。
- 校准 (TQ+):在首次摄取数据时,对每个坐标进行平移和缩放拟合,将经验数据映射到标准 Beta 分布。
- Lloyd-Max 量化:使用预计算的最佳边界将坐标分桶到 2-bit 或 4-bit 整数中。
- 长度重归一化:每个向量存储一个标量,以纠正由量化引起的内积系统性低估,从而确保评分的无偏性。
- SIMD 搜索:使用手写的 NEON (ARM) 和 AVX-512BW (x86) 内核进行搜索,直接针对码本值进行评分,而无需进行完全解压缩。
适用人群
对于构建检索增强生成 (RAG) 应用的开发者,在这些应用中隐私、低延迟和内存效率至关重要,特别是那些使用本地或离线环境的用户。
亮点
- 在线摄取:随着语料库的增长,不需要训练步骤、参数调整或索引重建。
- 极高压缩率:高达 16 倍的压缩(例如,从 FP32 到 2-bit),且召回率损失极小。
- 高性能:在 ARM 架构上优于 FAISS IndexPQFastScan 10–19%,并在 x86 上保持竞争力。
- 过滤搜索:支持通过白名单进行搜索时过滤,该功能直接集成到 SIMD 内核中以避免不必要的计算。
- 框架集成:可作为 LangChain、LlamaIndex、Haystack 和 Agno 中内存向量存储的即插即用替代方案。
- 纯本地:无需托管服务;数据保留在本地机器或 VPC 中。
Sources
- undefinedRyanCodrai/turbovec