Descriere & Utilizare
Pentru a calcula distanțele direct în clauza ORDER BY a unei interogări SQL, pgvector introduce trei operatori matematici specializați:
1) <=> (Cosine Distance): returnează o valoare între 0 (vectori identici) și 2 (direcții opuse). Similitudinea Cosine clasică se calculează simplu ca 1 - (embedding <=> query). 2) <-> (Euclidean Distance / L2): calculează distanța fizică geometrică. 3) <#> (Negative Inner Product): returnează produsul scalar negat (utilizat pentru a putea folosi ORDER BY ASC).
Acești operatori pot fi combinați cu orice clauze WHERE, JOIN, LIMIT și funcții agregate din standardul SQL.
Cum să o reții ușor
💡 Operatorul este ca o busolă matematică încorporată în SQL: îi dai direcția întrebării și el sortează instantaneu rândurile din tabel în ordinea alinierii cu acea direcție.
Opțiuni și parametri tehnici
<=>: Cosine distance (recomandat pentru modelele de text OpenAI, Cohere, HuggingFace).<->: L2 distance (distanță euclidiană pătratică).<#>: Negative dot product (produs scalar înmulțit cu -1).LIMIT N: esențial pentru performanță; fără LIMIT, baza va încerca să sorteze tot tabelul!
Exemple practice și cazuri de utilizare
- Căutare semantică filtrată pe utilizator:
SELECT titlu FROM documente WHERE user_id = 42 ORDER BY embedding $1 LIMIT 5; - Filtrare după prag minim de relevanță:
SELECT * FROM articole WHERE (embedding $1) < 0.25 ORDER BY embedding $1 LIMIT 10; - Calculul distanței între două rânduri din tabel:
SELECT a.titlu, b.titlu, a.embedding b.embedding AS distanta FROM articole a, articole b WHERE a.id = 1 AND b.id = 2;
Sfaturi de configurare & capcane
Reține că <=> returnează distanța (unde 0 înseamnă identic și 1 înseamnă ortogonal), nu similitudinea! Sortează întotdeauna cu ORDER BY embedding <=> $1 ASC.
Comenzi și ghiduri înrudite
pgvector-extension-schema: Resursă asociată din acest modul.pgvector-hnsw-index: Resursă asociată din acest modul.concepte-vector-db: Resursă asociată din acest modul.