【turbovec】千万级向量内存从31GB压到4GB,搜索还能快过FAISS?
turbovec 是一款基于 Rust 构建、提供 Python 绑定的向量索引库。它借助 Google Research 提出的 TurboQuant 量化算法,在完全取消“训练”环节的前提下,将海量向量数据的内存占用降低数倍,同时实现了比主流工具 FAISS 更快的检索速度,为需要兼顾成本、性能与隐私的向量检索场景提供了新的解决方案。
主要特性
- 极致压缩,开箱即用:无需训练步骤、无需参数调优,向量随加随索引。官方数据显示,1000 万份文档的 float32 向量占用可从 31 GB 压缩至约 4 GB,实现高达 16 倍的压缩比。
- 搜索速度超越 FAISS:针对 ARM 与 x86 平台手写 SIMD 内核(NEON 与 AVX-512BW),在 ARM 上比 FAISS IndexPQFastScan 快 12%–20%,x86 平台也能做到持平或更优。
- 搜索时原生过滤:支持传入 ID 白名单或位掩码,过滤逻辑直接在 SIMD 内核中完成,避免过度读取,且对召回率无额外损伤。
- 纯本地化部署:无需任何托管服务,数据不出本地或 VPC,可配合开源嵌入模型构建完全离线的 RAG 系统。
- 稳定的外部 ID 与 O(1) 删除:通过
IdMapIndex支持自定义 uint64 ID,并能在增量写入的同时实现毫秒级按 ID 删除。 - 主流框架即插即用:提供 LangChain、LlamaIndex、Haystack、Agno 等流行框架的 drop-in 替代方案。
快速上手
Python 用户可直接通过 pip 安装:
pip install turbovec
基础用法十分简洁,创建索引、添加向量、执行搜索只需几行代码:
from turbovec import TurboQuantIndex
index = TurboQuantIndex(dim=1536, bit_width=4)
index.add(vectors)
index.add(more_vectors)
scores, indices = index.search(query, k=10)
index.write("my_index.tq")
loaded = TurboQuantIndex.load("my_index.tq")
如果需要稳定的外部 ID 并支持删除,可改用 IdMapIndex:
import numpy as np
from turbovec import IdMapIndex
index = IdMapIndex(dim=1536, bit_width=4)
index.add_with_ids(vectors, np.array([1001, 1002, 1003], dtype=np.uint64))
scores, ids = index.search(query, k=10)
index.remove(1002)
在混合检索场景下,你也可以先通过外部系统(如 SQL、BM25)圈选候选集,再做向量精排:
import numpy as np
from turbovec import IdMapIndex
idx = IdMapIndex(dim=1536, bit_width=4)
idx.add_with_ids(vectors, ids)
allowed = np.array(db.execute("SELECT id FROM docs WHERE tenant=?", (t,)).fetchall(),
dtype=np.uint64)
scores, ids = idx.search(query, k=10, allowlist=allowed)
Rust 用户则可通过 cargo 引入:
cargo add turbovec
对应的核心 API 风格与 Python 侧保持一致:
use turbovec::TurboQuantIndex;
let mut index = TurboQuantIndex::new(1536, 4);
index.add(&vectors);
let results = index.search(&queries, 10);
index.write("index.tv").unwrap();
let loaded = TurboQuantIndex::load("index.tv").unwrap();
适用场景与用户画像
turbovec 尤其适合以下场景:
- 内存敏感的大规模语义检索:当千万级向量导致服务器内存吃紧时,它能以极小的硬件成本支撑起生产级索引。
- 隐私优先的本地 RAG:金融、医疗、政务等对数据出境高度敏感的行业,可借助其纯本地特性构建完全离线的知识库。
- 实时增量业务:数据持续流入、无法承受离线重建索引成本的推荐或搜索系统。
- 混合检索管线:需要结合关系型数据库、关键词检索做候选集预筛选,再进行向量 dense rerank 的复杂架构。
目标用户包括算法工程师、后端开发,以及正在搭建私有知识库或企业级 RAG 系统的技术团队。
总结
turbovec 在向量检索领域提供了一个兼顾极致压缩、在线增量与高性能的成熟方案。它彻底移除了传统量化索引对“训练阶段”的依赖,通过 TurboQuant 算法配合手写 SIMD 内核,在大幅降低内存占用的同时取得了优于 FAISS 的搜索速度与召回表现。无论是构建高并发的推荐系统,还是部署于私有环境的语义搜索,turbovec 都值得在选型时认真考虑。
