首页/AI/RAG 与向量库速查/乘积量化(PQ)压缩向量
本包目录(229 条)
架构与流程30 条解析与切分33 条
Embedding 与检索50 条
向量数据库49 条重排与生成32 条评估与优化35 条

乘积量化(PQ)压缩向量

PQ 把 d 维向量切成 m 段子向量,每段用各自的码本量化:用 m 字节左右的编码替代原始浮点数组,内存可降一个数量级,代价是距离近似误差。

RAG 与向量库速查AI更新于 2026-10-12
参数 m子空间个数,d 需能被 m 整除
nbits每段码本位数,常取 8(256 个质心)
存储每条向量约 m 字节,替代 4·d 字节

FAISS IVFPQ 示例

FAISS IVFPQ 示例
import faiss, numpy as np

d = 768
quantizer = faiss.IndexFlatL2(d)
index = faiss.IndexIVFPQ(quantizer, d, 1024, 96, 8)   # nlist=1024, m=96, nbits=8
index.train(np.random.rand(200000, d).astype("float32"))
index.add(np.random.rand(2000000, d).astype("float32"))
index.nprobe = 32
PQ 与 IVF 常组合使用:先聚类粗排、段内量化近似距离,再做重排补偿精度。

易错点

  • m 不能整除维度时构建失败,改 m 或对齐模型输出维度
  • 高压缩比下近邻距离失真,需配合重排或提高 nprobe 弥补召回

数据来源与参考

  • Jégou et al., Product Quantization for Nearest Neighbor Search (IEEE TPAMI 2011)
  • FAISS wiki(IVF + PQ 与量化)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌