Files
mchat/faiss/README.md
2026-04-10 11:55:00 +00:00

61 lines
1.2 KiB
Markdown

```shell
conda create -n faiss python=3.10 -y
conda activate faiss
conda install -c pytorch faiss-cpu
```
API 解释
```py
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)
```