PostgreSQL pgvector: activarea extensiei și coloana vector(n) în Baze de Date Vectoriale & Căutare Semantică

pgvector adaugă în PostgreSQL tipurile vector, halfvec, bit și sparsevec, operatori de distanță și indecși HNSW și IVFFlat, alături de restul datelor relaționale.

Sintaxă & interogare
CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE articole (
    id bigserial PRIMARY KEY,
    titlu text NOT NULL,
    continut text,
    embedding vector(1536)
);

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ă vector doar până la 2.000 de dimensiuni; folosește un index pe expresie cu halfvec(3072).
  • Activezi extensia o singură dată pe server. CREATE EXTENSION vector se 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-pgvector pe un server 18).

Noțiuni și module înrudite

Învață AI • Comunitate & Q&A

Î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.

Comunitate AI Adaugă o întrebare sau distribuie un cod / prompt

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.