卖点是那道内存账

turbovec 开篇就抛出一个具体的主张,而这正是该领头的那个:一个 1000 万文档的语料,以 float32 存要 31 GB 内存,用 turbovec 装进 4 GB,而且搜索比 FAISS 快。这一行就是全部卖点。它是一个带 Python 绑定的 Rust 向量索引,建在 Google Research 的 TurboQuant 上,那是一个数据无关的量化器,在失真上逼近香农下界,无需码本训练、无需单独的训练阶段。

「无训练」这个性质,是改变你怎么用它的部分。多数量化索引要你收集代表性向量、跑一遍训练,再随语料漂移重建。turbovec 在线摄取:你加向量、它们就被索引,无训练步、无参数调优、随语料增长也无需重建。对一个不断累积文档的 RAG 存储,这去掉了一桩反复出现的运维杂活。

它擅长什么

  • 来自手写 SIMD 的速度。 ARM 上的 NEON 核和 x86 上的 AVX-512BW,据 README 的基准在 ARM 上比 FAISS IndexPQFastScan 快 12 到 20%、在 x86 上打平或更快。
  • 不带召回惩罚的过滤。search() 传一个 id 允许列表或 slot 位掩码,核直接遵守它,从允许集里返回至多 k 个结果、不过取,而这正是许多索引在选择性过滤上悄悄丢召回的地方。
  • 完全本地。 没有托管服务、数据不离开你的机器或 VPC,所以你能配一个开源嵌入模型搭一个气隙 RAG 栈。
  • 稳定 id。 IdMapIndex 让你的外部 uint64 id 跨删除保持稳定。

安装

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.tv")
loaded = TurboQuantIndex.load("my_index.tv")

如果你需要跨删除存活的 id,用 IdMapIndexadd_with_ids 和你自己的 uint64 id。

该带着知道的取舍

量化按定义是有损的,而 turbovec 对损在哪儿很诚实。一个被讨论的 issue 记录:LUT 评分核在低维 4-bit 配置上,相比精确计算最多丢 1.4 个百分点的 recall@1。这很小、也在预料之中,但它正是该拿你自己数据去测的东西:在很低的位宽和很低的维度上,这个近似在内存上更紧、在召回上更松。如果你的应用在低维下对召回敏感,就测位宽、别假设默认值免费。项目年轻,截至 2026-06 有 8 个 open issue、还没有打过 tag 的发布,所以把 API 当成仍在沉淀。

turbovec 与其它向量索引的对比

turbovecFAISSUSearch
Stars10,56540,2504,152
核心Rust、TurboQuantC++、多种索引类型C++、HNSW
训练步无,在线摄取PQ 索引需要
许可MITMITApache-2.0

计数取自 GitHub,截至 2026 年 6 月。FAISS 是老牌,索引类型广得多、久经考验,但它的乘积量化索引需要一遍训练,且是个更重的依赖。USearch 是个精简的、基于 HNSW 的引擎,也免训练,优化速度-内存曲线上的另一个点。turbovec 具体的押注是极致内存压缩、无训练步、加上和 FAISS 拼速度的 SIMD 搜索,这是一个窄但有价值的生态位,适合内存受限的本地 RAG。

内存的赢何时是决定性的

那个 31 GB 到 4 GB 的数字不只是一次基准炫耀,它改变了什么能在哪儿跑。一个装进几个 GB 的索引能在一台笔记本、一个小 VM 上、或和别的服务挤在一台机器上跑,而不必要一台专门的大内存机器。配上在线摄取和无需重建,这让 turbovec 适合嵌入式和端上 RAG,在那里你既无法搬运一个 31 GB 的工作集、也无法调用一个托管的向量服务。这就是它占据的生态位:本地、内存受限、隐私受限的检索,且快到压缩不让你赔上延迟。

相关

turbovec 天然适合配一个由 Ollama 托管的本地嵌入模型搭全本地 RAG 栈,也适合配一个像 headroom 这样的压缩层把检索到的块保持得小。想看还有什么在往上爬,见 LLM 工具每日速报周报

FAQ

turbovec 需要训练步吗? 不需要。它在线摄取向量、边加边索引,无训练阶段、无调优,随语料增长也无需重建。

它省多少内存? README 举的例子是一个 1000 万文档语料从 float32 的 31 GB 降到 4 GB,同时搜索比 FAISS 快。

有什么代价? 量化要花一些召回。一个有记录的 issue 显示在低维 4-bit 设置下最多丢 1.4 个百分点的 recall@1,所以拿位宽对着你的精度需求测。

它本地吗? 是。没有托管服务、数据不离开你的机器,适合配开源嵌入模型做气隙 RAG。