Descriere & Utilizare
Fără un index dedicat, interogările cu ORDER BY embedding <=> ... realizează o scanare secvențială completă (Seq Scan) pe tot tabelul. La peste 10.000 de rânduri, latența devine vizibilă.
Începând cu pgvector v0.5+, suportul pentru indexul HNSW a adus PostgreSQL la nivelul de performanță al bazelor vectoriale dedicate specializate. Indexul construiește graful ierarhic chiar în interiorul paginilor de date ale motorului Postgres.
Clasa de operatori trebuie să corespundă exact operatorului folosit în ORDER BY: folosește vector_cosine_ops pentru <=>, vector_l2_ops pentru <-> sau vector_ip_ops pentru <#>.
Cum să o reții ușor
💡 Este diferența între a răsfoi manual o carte de 1000 de pagini pagină cu pagină la fiecare întrebare și a folosi indexul alfabetic de la sfârșitul cărții pentru a sări direct la pagina exactă.
Opțiuni și parametri tehnici
vector_cosine_ops: clasa de operatori asociată distanței Cosine.WITH (m = 16, ef_construction = 64): parametrii structurali ai grafului HNSW la momentul construirii indexului.SET hnsw.ef_search = 40–100: parametrul de sesiune care controlează câte noduri verifică la căutare (valoare mai mare = precizie mai mare, dar timp ușor crescut).maintenance_work_mem: mărește această variabilă (ex: la 2GB) înainte de a rulaCREATE INDEXpentru o indexare de 5 ori mai rapidă!
Exemple practice și cazuri de utilizare
- Verificarea folosirii indexului cu EXPLAIN:
EXPLAIN ANALYZE SELECT id FROM articole ORDER BY embedding $1 LIMIT 5;(trebuie să apară Index Scan using idx_articole_embedding_hnsw). - Creare index în fundal pe tabele de producție: adaugă
CONCURRENTLY(necesită pgvector v0.7+). - Index alternativ IVFFlat pentru economie de RAM:
CREATE INDEX ON articole USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
Sfaturi de configurare & capcane
Indexul HNSW în pgvector se construiește complet în memorie: dacă primești avertismente de memorie la CREATE INDEX, mărește temporar SET maintenance_work_mem = '2GB'; în sesiunea ta.
Comenzi și ghiduri înrudite
pgvector-similarity-operators: Resursă asociată din acest modul.algoritmi-hnsw-ivfflat: Resursă asociată din acest modul.quantization-scalar-product: Resursă asociată din acest modul.