首页/AI/AI 应用速查/IVF / PQ 量化索引:省内存的大规模方案

IVF / PQ 量化索引:省内存的大规模方案

IVF 用聚类把向量分桶、查询只扫部分桶;PQ 把向量切片量化压缩,能把内存降一个数量级。适合千万级以上、内存敏感的离线或大规模场景,需接受少量精度损失。

AI 应用速查AI更新于 2026-10-12
IVF倒排:nlist 个聚类中心,查询扫 nprobe 个桶
PQ乘积量化:维度分片后各自聚类编码,压缩存储
参数nlist / nprobe 控制速度与召回
代价量化误差导致精度下降,需重排兜底

FAISS 索引工厂(IVF+PQ)

FAISS 索引工厂(IVF+PQ)
import faiss
dim = 768
index = faiss.index_factory(dim, "IVF4096,PQ96")  # 维度需能被 PQ 段数整除
index.train(xb)          # 训练聚类与量化码本
index.add(xb)
index.nprobe = 32        # 查询时扫描的桶数,越大越准越慢
D, I = index.search(xq, 10)
量化索引通常配合重排使用:先 ANN 粗排扩大候选(如 top 100),再用心重排模型精排,抵消压缩损失。

易错点

  • nprobe 调太小,召回率骤降
  • PQ 段数与向量维度不整除,索引直接报错

数据来源与参考

  • FAISS 官方 wiki(Index factory);Jégou et al., Product Quantization 论文

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌