打开网易新闻 查看精彩图片

做 RAG 的兄弟应该都懂这个痛:10M 条文档向量,光内存就要 31G。笔记本直接卡成幻灯片,服务器账单每月看得肉疼。

最近有个 Rust 写的向量库直接把这块砍到了 4G,搜索速度还比 Meta 的 FAISS 快了 3.4 倍。

内存省 8 倍,速度反超 3.4 倍,这就是 turbovec。

先说说 FAISS 为什么让人又爱又恨。 它是向量搜索的事实标准,但老玩家都懂它那几个老大难问题:

  • 传统 Product Quantization 要训练阶段,还得调参,向量分布一变就得重建索引
  • 内存贵,10M 条 float32 向量就要 31GB,小团队直接劝退
  • 想先过滤再搜索?大概率要 over-fetch 再过滤,性能白白损耗

这些问题不是不能忍,但每个踩过的人都知道有多恶心。

turbovec 的做法很直接:把 Google 的 TurboQuant 量化算法拿过来,用 Rust 手写 SIMD 内核,直接不依赖数据分布。

翻译成人话:你不用训练、不用调参、装完就能用,而且向量怎么变都不影响检索质量。这对个人开发者和中小公司是质的差别。

再看它最狠的增量更新。 传统向量库加数据要么全量重建,要么分批写入,数据量大了每次都是煎熬。turbovec 的 sync() 只写自上次同步以来的增量,单次 fsync 崩溃安全,删除和追加都是毫秒级。

还有一个细节很打动我:它的过滤直接在 SIMD 内核内部做,在 32-vector 块级别直接短路,不损失召回率。这意味着多租户场景的 tenant_id 过滤,不用再额外的重排环节。

Rust 的性能信仰在这件事上体现得淋漓尽致。手写 AVX-512 VNNI 和 vpermb 内核、ARM 平台的 NEON SDOT/SMMLA,4-bit 量化下平均比 FAISS IndexPQFastScan 快 3.4 倍。这就是为什么说 Rust 写的库,性能确实有说法。

上手路径短到离谱:

pip install turbovec

Python 绑定直接调,底层 Rust 内核跑 SIMD。不用引入一大堆依赖,不用搭服务,本地跑起来就是干。

不过我得泼点冷水。 项目基于 Google 今年 4 月的论文,产品化时间不长,生态沉淀跟 FAISS 没法比。如果你的场景就几千条向量,直接内存硬搜都行,没必要上这个。它解决的是「大规模 + 低延迟 + 低内存」三者叠加的痛,小项目用不上。

但如果你正在做 RAG、私有化部署、或者边缘设备上的向量搜索,这个库值得认真试一次。 31G 变 4G 带来的不只是成本下降,是个人电脑也能跑原来只有服务器才能跑的活儿。

你被 FAISS 的哪个坑坑过?是训练 PQ 调参、内存爆掉、还是过滤太慢?评论区聊聊。

#程序员 #Rust #人工智能 #开源

#科技#