Algoritmul IVFPQ combină două tehnici complementare: partiționarea Voronoi prin liste inversate (Inverted File – IVF) și compresia dimensională prin cuantizare pe produs (Product Quantization – PQ). Este alegerea standard pentru scalarea la zeci și sute de milioane de vectori.
Vectorul original de d dimensiuni este împărțit în m sub-vectori egali. Fiecare sub-vector este mapat la cel mai apropiat centroid dintr-un dicționar de coduri (codebook), fiind înlocuit de un index numeric scurt (de regulă 1 octet = 8 biți):
import faiss
d = 128 # Dimensiunea vectorului
nlist = 1024 # Numărul de liste inversate
m = 16 # Numărul de sub-cuantizatori (16 x 8 biți = 16 octeți per vector)
nbits = 8
quantizer = faiss.IndexFlatL2(d)
index = faiss.IndexIVFPQ(quantizer, d, nlist, m, nbits)
# Memoria per vector este redusă de la 512 octeți (128 float32) la doar 16 octeți!
print("Compresie de 32x a memoriei.")
În timpul căutării, distanțele dintre interogare și vectorii comprimați sunt calculate utilizând tabele de distanțe asimetrice (ADC), permițând viteze excepționale de parcurgere.
Întrebări & Exemple practice:
IVFPQ: Fișiere Inversate cu Cuantizare de Produs și CentroiziAi o întrebare despre IVFPQ: Fișiere Inversate cu Cuantizare de Produs și Centroizi sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.