用召回率选 efSearch
用召回率选 efSearch
import faiss, numpy as np
d = 128
xb = np.random.rand(50000, d).astype("float32")
q = np.random.rand(200, d).astype("float32")
flat = faiss.IndexFlatL2(d); flat.add(xb)
_, exact = flat.search(q, 10) # 精确 top-10 基线
index = faiss.IndexHNSWFlat(d, 32); index.add(xb)
for ef in (16, 32, 64, 128, 256):
index.hnsw.efSearch = ef
_, got = index.search(q, 10)
# 与 exact 对比算 recall@10,记录 (ef, recall, 平均延迟)把 efSearch 作为一个整体档位(如 64)在部署配置里固定,改动前先跑评测回归。