1.2 KiB
1.2 KiB
conda create -n faiss python=3.10 -y
conda activate faiss
conda install -c pytorch faiss-cpu
API 解释
import numpy as np
import faiss
# FLATL2
index = faiss.IndexFlatL2(d)
index.add(xb)
D, I = index.search(xq, k)
# FlatIP
index = faiss.IndexFlatIP(d)
index.add(xb2)
D, I = index.search(xq2, k)
# IDMap
base = faiss.IndexFlatL2(d)
index = faiss.IndexIDMap(base)
index.add_with_ids(xb, ids)
D, I = index.search(xq, k)
# HNSWFlat
index = faiss.IndexHNSWFlat(d, M)
index.hnsw.efSearch = ef_search
index.add(xb)
D, I = index.search(xq, k)
# IVFFlat
quantizer = faiss.IndexFlatL2(d)
index = faiss.IndexIVFFlat(quantizer, d, nlist, faiss.METRIC_L2)
safe_train(index, xb, "IndexIVFFlat")
index.add(xb)
index.nprobe = nprobe
D, I = index.search(xq, k)
# PQ
index = faiss.IndexPQ(d, M, nbits)
safe_train(index, xb, f"IndexPQ(M={M}, nbits={nbits})")
index.add(xb)
D, I = index.search(xq, k)
# IVFPQ
quantizer = faiss.IndexFlatL2(d)
index = faiss.IndexIVFPQ(quantizer, d, nlist, M, nbits)
safe_train(index, xb, f"IndexIVFPQ(nlist={nlist}, M={M}, nbits={nbits})")
index.add(xb)
index.nprobe = nprobe
D, I = index.search(xq, k)
# LSH
index = faiss.IndexLSH(d, nbits)
index.add(xb)
D, I = index.search(xq, k)