| M | 每层最大连接数,常用 16~64 |
|---|---|
| efConstruction | 建索引时的候选队列,常用 100~500 |
| efSearch | 查询时的候选队列,越大越准越慢 |
FAISS 构建与查询
FAISS 构建与查询
import faiss, numpy as np
d = 768
index = faiss.IndexHNSWFlat(d, 32) # M=32
index.hnsw.efConstruction = 200
index.hnsw.efSearch = 64
index.add(np.random.rand(10000, d).astype("float32"))
D, I = index.search(np.random.rand(1, d).astype("float32"), 10)Milvus 建索引
Milvus 建索引
# pymilvus 2.x
index_params = client.prepare_index_params()
index_params.add_index(field_name="vector", index_type="HNSW",
metric_type="COSINE", params={"M": 32, "efConstruction": 200})efSearch 可在查询时调;M 与 efConstruction 影响内存与建索引时长,调整需重建索引。