FAISS: recherche de voisins rapide (CPU)
objectif
Expliquer et montrer comment indexer des vecteurs et interroger les plus proches voisins avec FAISS.
code minimal
import numpy as np
import faiss # pip install faiss-cpu
d = 64
xb = np.random.random((10000, d)).astype("float32")
index = faiss.IndexFlatIP(d) # cosinus si vecteurs normalisés
# faiss.normalize_L2(xb)
index.add(xb)
D, I = index.search(xb[:3], 5)
I[0]
utilisation
# index quantifié pour mémoire réduite
# index = faiss.index_factory(d, "IVF100,Flat", faiss.METRIC_L2)
variante(s) utile(s)
# Sauvegarde / chargement
# faiss.write_index(index, "index.faiss")
# index2 = faiss.read_index("index.faiss")
notes
- Choisir METRIC_IP + normalisation pour cosinus.
- IVF,PQ réduisent mémoire et accélèrent, au prix d’approximation.