pgvector + index HNSW

PostgreSQL 🔴 Senior

Définition

pgvector (version 0.8.6) est l'extension PostgreSQL de référence pour stocker des vecteurs (type vector, jusqu'a 16 000 dimensions) et effectuer des recherches par similarité. Son index HNSW (Hierarchical Navigable Small World) offre de meilleures performances de requête que l'index IVFFlat, au prix d'un temps de construction plus long.

Analogie

HNSW construit un réseau de raccourcis a plusieurs échelles, comme un plan d'autoroutes puis de routes locales, pour rejoindre le point le plus proche plus vite qu'en parcourant la carte a plat (IVFFlat).

Exemple de code

CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE items (
  id bigserial PRIMARY KEY,
  embedding vector(768)
);
CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops);

SELECT id FROM items
  ORDER BY embedding <=> '[0.1, 0.2]' LIMIT 5;

Cas d'usage

Recherche de similarité sémantique (RAG, recommandation) directement en SQL, sans base vectorielle dédiée séparée.

Anti-pattern

Construire un index HNSW sur une table qui reçoit encore des inserts massifs : privilégier IVFFlat en phase de chargement puis basculer vers HNSW.
#sgbd#interview#database#postgresql

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre