Descriere & Utilizare
Într-o bază de date cu 5 milioane de documente, calcularea distanței exacte față de fiecare vector (căutare exhaustivă k-NN) ar dura câteva secunde — inacceptabil pentru aplicații interactive. De aceea, bazele vectoriale folosesc algoritmi ANN (Approximate Nearest Neighbors).
Cel mai performant și utilizat algoritm este HNSW (Hierarchical Navigable Small World). Acesta organizează vectorii într-o rețea stratificată de grafuri: straturile superioare au puține conexiuni pe distanțe lungi (pentru navigare rapidă trans-continentală), iar pe măsură ce coboară spre stratul de bază, conexiunile devin locale și dense pentru găsirea vecinilor exacți.
O alternativă mai economică în consumul de RAM este IVFFlat (Inverted File Flat), care folosește algoritmul k-means pentru a grupa spațiul în nlist clustere (voronoi cells) și caută doar în cele mai apropiate nprobe centre la fiecare interogare.
Cum să o reții ușor
💡 HNSW este ca zborul cu avionul: iei o cursă intercontinentală între mari noduri aeriene (stratul de sus), apoi un zbor regional, iar în final iei un taxi pe străduțele din cartier direct la adresa căutată.
Opțiuni și parametri tehnici
M (HNSW): numărul de legături bidirecționale create pentru fiecare nod (valoare tipică: 16 sau 32; mai mare = acuratețe mai mare, dar consumă mai multă memorie).ef_construction (HNSW): adâncimea explorării la inserarea fiecărui vector nou; determină viteza de construire a indexului.ef_search (HNSW): numărul de candidați evaluați la momentul căutării; poate fi crescut dinamic dacă vrei precizie (recall) maximă pe o interogare critică.nprobe (IVFFlat): câte clustere să inspecteze la căutare (unnprobemai mare crește recall-ul dar și latența).
Exemple practice și cazuri de utilizare
- Configurare HNSW în Qdrant:
hnsw_config=models.HnswConfigDiff(m=16, ef_construct=100). - Index HNSW în pgvector:
CREATE INDEX ON documente USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64); - Ajustarea preciziei la interogare în PostgreSQL:
SET hnsw.ef_search = 100;
Sfaturi de configurare & capcane
Dacă ai sub 50.000 de vectori, o simplă căutare exactă (flat search / fără index) pe un SSD modern este adesea suficient de rapidă (sub 10ms) și are 100% acuratețe fără a consuma memorie pentru grafuri HNSW.
Comenzi și ghiduri înrudite
concepte-vector-db: Resursă asociată din acest modul.quantization-scalar-product: Resursă asociată din acest modul.pgvector-hnsw-index: Resursă asociată din acest modul.