| 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),再用心重排模型精排,抵消压缩损失。