pgvector este o extensie open-source pentru PostgreSQL (13 și mai nou; versiunea 0.8.7 din octombrie 2026) care adaugă căutare de similaritate exactă și aproximativă. Extensia se activează o dată în fiecare bază de date cu CREATE EXTENSION vector;.
Tipurile sunt vector (float32, până la 16.000 de dimensiuni, 4 * dimensiuni + 8 octeți), halfvec (16 biți), bit și sparsevec. Atenție la indecși: HNSW și IVFFlat indexează vector doar până la 2.000 de dimensiuni și halfvec până la 4.000; pentru vectori mai mari se folosește halfvec, cuantizare binară sau o sub-secțiune a vectorului.
Avantajul principal este că vectorii stau lângă celelalte date: tranzacții ACID, point-in-time recovery, JOIN-uri și filtre SQL în aceeași interogare, fără sincronizare cu o bază separată.
Concepte cheie și caracteristici
| Concept / Parametru | Descriere practică |
|---|---|
vector(n) |
Vector float32 cu exact n dimensiuni; valorile trebuie să fie finite. |
halfvec(n) |
Precizie pe 16 biți; jumătate din spațiu, index HNSW până la 4.000 de dimensiuni. |
sparsevec(n) |
Vector rar, format {index:valoare,...}/dimensiuni, indecși de la 1. |
bit(n) |
Vectori binari, cu distanțele Hamming și Jaccard. |
vector_dims(col) |
Numărul de dimensiuni al unei valori. |
Instalare |
Pachet APT postgresql-18-pgvector (cifra = versiunea serverului), imaginea Docker pgvector/pgvector:pg18-trixie (există etichete pentru pg13–pg18), Homebrew, PGXN sau compilare din sursă. |
Exemple practice și scenarii reale
Exemplul 1: Inserare din SQL
INSERT INTO articole (titlu, embedding) VALUES ('Ghid AI', '[0.012, -0.043, 0.089]');
Exemplul 2: Inserare din Python cu psycopg 3 și pgvector-python
import numpy as np
import psycopg
from pgvector.psycopg import register_vector
conn = psycopg.connect(dbname="blog", autocommit=True)
register_vector(conn)
conn.execute("INSERT INTO articole (titlu, embedding) VALUES (%s, %s)",
("Ghid AI", np.array(vector)))
Exemplul 3: PostgreSQL cu pgvector în Docker
docker run -e POSTGRES_PASSWORD=parola -p 5432:5432 pgvector/pgvector:pg18-trixie
Greșeli frecvente și capcane
- Declari
vector(3072)și încerci un index HNSW. Indexul acceptăvectordoar până la 2.000 de dimensiuni; folosește un index pe expresie cuhalfvec(3072). - Activezi extensia o singură dată pe server.
CREATE EXTENSION vectorse rulează în fiecare bază de date în care o folosești. - Instalezi pachetul pentru altă versiune de PostgreSQL decât cea a serverului (de exemplu
postgresql-16-pgvectorpe un server 18).
Întrebări & Exemple practice:
PostgreSQL pgvector: activarea extensiei și coloana vector(n)Ai o întrebare despre PostgreSQL pgvector: activarea extensiei și coloana vector(n) 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.