```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) ```