Revenir au contenu principal

Qu'est-ce que pgvector ?

Une extension PostgreSQL pour stocker et rechercher des embeddings vectoriels nativement dans votre base de données existante.

4 Personas AI Agents 6

Summary

  • pgvector est une extension PostgreSQL qui permet le stockage de vecteurs et la recherche de similarité directement dans Postgres, éliminant le besoin d'une base de données vectorielle séparée pour la plupart des cas d'utilisation d'IA tels que la recherche sémantique, RAG et les recommandations.
  • Il prend en charge plusieurs métriques de distance, deux types d'index (HNSW et IVFFlat), la recherche filtrée et la recherche hybride, le tout nativement dans SQL, ce qui le rend opérationnellement simple pour les équipes déjà sur Postgres.
  • pgvector gère bien des millions de vecteurs, mais les performances se dégradent à très grande échelle ; pgvectorscale et les bases de données vectorielles dédiées comme Pinecone ou Weaviate sont les prochaines étapes naturelles à mesure que les charges de travail augmentent.

pgvector est une extension open-source de PostgreSQL qui ajoute la capacité de stocker, d'indexer et de rechercher des plongements vectoriels (représentations numériques de données). Elle intègre les données vectorielles et la recherche de similarité dans le même système qui contient les données de l'application, ce qui permet d'alimenter la recherche sémantique, les recommandations et la génération augmentée par récupération (RAG) sans dépendre d'une base de données vectorielle externe. pgvector étend Postgres pour prendre en charge ces cas d'utilisation pilotés par l'IA.

De nombreuses applications d'IA modernes dépendent de la récupération de données sémantiquement similaires, et pas seulement de correspondances exactes. pgvector permet aux équipes d'effectuer ce type de récupération à l'exécution au sein de leur pile Postgres existante. Par exemple, les applications doivent souvent récupérer du contenu qui est contextuellement similaire à une requête, même si la formulation est différente. Cette approche est souvent appelée similarité cosinus, recherche du plus proche voisin ou recherche basée sur les plongements.

Cet article fournit un aperçu éducatif de haut niveau de pgvector plutôt que des instructions de mise en œuvre détaillées.

Comment fonctionne pgvector

pgvector ajoute un nouveau type de données à Postgres appelé vector. Il permet de stocker des plongements, représentations numériques de texte, d'images ou d'autres contenus, aux côtés de données relationnelles sans nécessiter de système distinct. Ces plongements sont généralement générés par des modèles d'apprentissage automatique qui convertissent le contenu tel que le texte ou les images en forme numérique.

À un niveau élevé, le processus est simple. Les plongements sont stockés dans la base de données. Lorsqu'une requête est reçue, un plongement de requête est généré à partir de l'entrée, et pgvector renvoie les enregistrements dont les vecteurs sont les plus similaires, ou les plus proches en sens, à cette requête. Au lieu de faire correspondre des mots-clés, les résultats sont récupérés en fonction du sens.

pgvector détermine la similarité à l'aide de métriques de distance :

  • L2 (distance euclidienne) : mesure la distance entre les vecteurs, où des valeurs plus petites indiquent une plus grande similarité
  • Similarité cosinus : mesure à quel point les vecteurs pointent dans la même direction, ce qui reflète souvent la similarité de sens
  • Produit scalaire : mesure l'alignement entre les vecteurs et est souvent utilisé avec des plongements normalisés

Fonctionnalités clés de pgvector

pgvector comprend plusieurs fonctionnalités qui rendent la recherche vectorielle pratique au sein de Postgres.

  • Indexation : Deux types d'index sont pris en charge : HNSW et IVFFlat. HNSW privilégie la vitesse de requête et construit une structure graphique en mémoire, mais nécessite plus de mémoire. IVFFlat est plus économe en mémoire et partitionne les vecteurs en clusters à l'aide d'une étape d'entraînement, mais les requêtes peuvent être plus lentes.
  • Métriques de distance : L2, similarité cosinus et produit scalaire couvrent la plupart des cas d'utilisation basés sur les plongements. La distance de Hamming prend en charge les vecteurs binaires, et la distance de Jaccard prend en charge les vecteurs épars dans des scénarios plus spécialisés.
  • Recherche filtrée : La similarité vectorielle peut être combinée avec des filtres relationnels standard. Par exemple, les résultats peuvent inclure les produits les plus similaires sémantiquement qui sont également en stock, dans une fourchette de prix ou dans une catégorie spécifique.
  • Recherche hybride : pgvector peut être associé à la recherche plein texte de Postgres pour mélanger la recherche par mots-clés et la recherche sémantique. Cela permet aux résultats d'être à la fois contextuellement pertinents et textuellement précis en une seule requête.
  • Types de données supplémentaires : Des options telles que les types halfvec, sparsevec et bit aident à réduire l'utilisation de la mémoire lors du travail avec de grands ensembles de données de plongements.

Cas d'utilisation courants pour pgvector

pgvector est largement utilisé pour alimenter des fonctionnalités d'applications pilotées par l'IA :

Recherche sémantique et RAG

Les applications peuvent récupérer des documents ou du contenu en fonction du sens plutôt que des mots-clés. C'est un composant essentiel de la génération augmentée par récupération (RAG), où les grands modèles de langage utilisent le contexte récupéré pour générer des réponses précises et pertinentes. Comme pgvector exécute la recherche de similarité directement dans Postgres, cette récupération peut se faire en temps réel sans nécessiter de système distinct.

Systèmes de recommandation

Les articles peuvent être mis en correspondance avec le comportement passé ou les préférences pour prendre en charge les recommandations. Ce modèle est couramment utilisé pour les recommandations de produits, la découverte de contenu et la personnalisation dans les applications. pgvector permet d'identifier efficacement les articles connexes en fonction des modèles de comportement des utilisateurs ou du contenu.

Similarité d'images

Les plongements d'images peuvent être stockés et comparés pour trouver rapidement des images visuellement similaires. Ceci est largement utilisé dans les plateformes médiatiques, le commerce électronique et les outils créatifs. Le stockage de ces plongements aux côtés des données de l'application facilite l'exécution de recherches de similarité sans infrastructure supplémentaire.

Détection d'anomalies

Les valeurs aberrantes peuvent être identifiées en trouvant des points de données qui sont éloignés des modèles typiques dans l'espace vectoriel. Ceci est utile pour la détection de fraude, la surveillance et le contrôle qualité. pgvector le permet en facilitant la comparaison des vecteurs et la détection des écarts.

Dédoublonnage

Le contenu dupliqué ou quasi dupliqué peut être identifié, même lorsqu'il est exprimé différemment ou formaté de différentes manières. Ceci est important pour la gestion de contenu, la qualité de la recherche et l'hygiène des données. La comparaison basée sur la similarité permet de détecter les doublons au-delà des correspondances exactes.

pgvector vs. bases de données vectorielles dédiées : quand utiliser chacune

Alors que la recherche vectorielle fait partie de plus en plus d'applications, les équipes sont souvent confrontées à une décision pratique : la recherche vectorielle doit-elle rester dans Postgres, ou une base de données vectorielle dédiée est-elle nécessaire ? La réponse dépend de l'échelle, des exigences de performance et de la complexité opérationnelle.

Les différences peuvent être résumées selon des dimensions clés :

Outil

Complexité opérationnelle

Plafond d'évolutivité

Support des requêtes hybrides

Coût

Maturité de l'écosystème

pgvector

La plus faible (BD existante)

Élevée (~100M+ vecteurs)

La meilleure (Jointures SQL natives)

La plus faible (Incluse)

Élevé (Écosystème Postgres)

Pinecone

Faible (Sans serveur/SaaS)

La plus élevée (Milliards+)

Modéré (Métadonnées uniquement)

Élevé (Basé sur l'utilisation)

Élevé (Spécifique à l'IA)

Weaviate

Modéré (Multimodal)

Très élevé

Élevé (GraphQL/Vectoriel)

Modéré

Élevé (Open-source)

Qdrant

Modéré (Basé sur Rust)

Très élevé

Élevé (Fortement basé sur le filtrage)

Modéré

Croissance rapide

pgvector est le point de départ naturel pour les équipes qui utilisent déjà Postgres et qui opèrent en dessous du plafond d'échelle. Il fonctionne bien lorsque la recherche vectorielle fait partie d'un flux de travail d'application existant et que les volumes de données ou les demandes de requêtes restent gérables. Les bases de données vectorielles dédiées deviennent plus pertinentes lorsque le volume des requêtes, les exigences de rappel ou les charges de travail multi-locataires dépassent ce que Postgres peut supporter efficacement.

pgvectorscale

pgvectorscale est conçu pour les équipes qui souhaitent étendre leurs capacités avec pgvector avant d'adopter une base de données vectorielle dédiée. Il répond aux défis de performance et d'évolutivité qui surviennent à mesure que les volumes de données et les demandes de requêtes augmentent, en particulier en ce qui concerne la vitesse d'indexation et la latence des requêtes. En améliorant les performances de pgvector à plus grande échelle, il permet aux équipes de continuer à utiliser Postgres plus longtemps sans réarchitecturer leurs systèmes. C'est donc une étape intermédiaire pratique pour les applications qui approchent des limites de ce que pgvector peut gérer seul.

Rapport

Le guide pratique de l'IA agentique pour l'entreprise

Limitations et considérations d'évolutivité

pgvector est puissant, mais il présente des compromis :

  • Les performances peuvent se dégrader à des nombres de vecteurs très élevés (10M+) sans optimisation ou outils supplémentaires
    • Les index HNSW consomment beaucoup de mémoire, et les déploiements importants peuvent nécessiter une RAM importante
    • Postgres ne fournit pas de sharding intégré pour les charges de travail vectorielles, donc la mise à l'échelle horizontale nécessite des outils externes ou un fournisseur géré
    • La vitesse de recherche et le rappel impliquent un compromis réel. Le rappel — le pourcentage de résultats réellement pertinents qui sont renvoyés — nécessite une configuration délibérée pour être optimisé.

Comprendre ces limitations aide à déterminer quand pgvector est suffisant et quand une infrastructure supplémentaire peut être nécessaire.

Démarrer avec pgvector

pgvector peut être installé sur macOS et la plupart des distributions Linux en utilisant des gestionnaires de paquets standards tels que Homebrew. Il est également disponible sur de nombreuses plateformes Postgres gérées, y compris AWS RDS, Supabase, Azure Database for PostgreSQL, Google Cloud SQL et Neon.

Les instructions d'installation et de configuration sont disponibles dans le dépôt GitHub officiel de pgvector, qui comprend des instructions étape par étape maintenues par les auteurs du projet.

Les clients Databricks utilisant Postgres peuvent également consulter la documentation des extensions OLTP de Databricks pour obtenir des conseils spécifiques à la plateforme.

pgvector et la pile IA moderne

pgvector fonctionne dans la couche de service opérationnel d'un système d'IA, où une récupération à faible latence est requise au moment de l'exécution de l'application. Il est couramment utilisé pour prendre en charge la recherche sémantique, les recommandations et la génération augmentée par récupération (RAG) dans les applications.

En revanche, Databricks Mosaic AI Vector Search est mieux adapté aux charges de travail d'IA à grande échelle, traitées par lots, où les pipelines de données sont gérés dans le lakehouse. Ces environnements prennent en charge le traitement centralisé des données, les grands ensembles de données et les flux de travail complexes.

Ces approches sont complémentaires, et les équipes en utilisent souvent les deux dans différentes couches de la pile. pgvector prend en charge les requêtes d'application en temps réel, tandis que des plateformes comme Databricks gèrent la préparation des données à grande échelle, la génération d'embeddings et les flux de travail pilotés par modèle.

Questions fréquemment posées

pgvector est-il une base de données vectorielle complète ?
pgvector permet à Postgres de stocker des embeddings et d'effectuer des recherches de similarité directement sur ces données. Cependant, ce n'est pas une base de données vectorielle spécialement conçue. Les bases de données vectorielles dédiées offrent une évolutivité et des optimisations de performances supplémentaires pour les charges de travail plus importantes.

Quelle est la différence entre HNSW et IVFFlat dans pgvector ?
HNSW est optimisé pour des performances de requête rapides et utilise une structure de graphe en mémoire, ce qui nécessite plus de mémoire. IVFFlat a une empreinte mémoire plus faible et organise les vecteurs en clusters grâce à une étape d'entraînement, mais les performances peuvent varier en fonction de l'ensemble de données et de la charge de travail. Le choix dépend de la priorité accordée à la vitesse ou à l'efficacité de la mémoire.

Combien de vecteurs pgvector peut-il gérer ?
pgvector peut généralement gérer des millions à des dizaines de millions de vecteurs, en fonction du matériel, de la stratégie d'indexation et des modèles de requête. À mesure que les ensembles de données augmentent, les performances peuvent diminuer sans un réglage minutieux ou des outils supplémentaires. Des facteurs tels que la mémoire disponible, le type d'index et la fréquence des requêtes influencent tous l'évolutivité.

pgvector prend-il en charge la similarité cosinus ?
Oui, pgvector prend en charge la similarité cosinus comme l'une de ses principales métriques de distance. Elle mesure à quel point deux vecteurs sont proches dans la même direction, ce qui reflète souvent la similarité sémantique dans les applications basées sur les embeddings. Cela le rend bien adapté à la recherche sémantique, aux systèmes de recommandation et au traitement du langage naturel.

pgvector est-il gratuit et open source ?
Oui, pgvector est un projet open source publié sous une licence permissive. Il peut être utilisé avec des installations Postgres standard ainsi qu'avec de nombreux services Postgres gérés. Cela en fait un point de départ accessible pour ajouter des capacités de recherche vectorielle.

pgvector peut-il effectuer une recherche hybride ?
Oui, pgvector peut être combiné avec la recherche plein texte de Postgres pour prendre en charge la recherche hybride. Cela permet aux résultats d'équilibrer la pertinence sémantique avec la correspondance par mots clés, améliorant ainsi la précision et la convivialité. La recherche hybride est particulièrement utile dans des scénarios tels que la recherche de produits et la recherche de documentation, où le sens et les termes exacts sont importants.

Choisir la bonne approche de recherche vectorielle

pgvector est un point de départ pratique pour toute équipe souhaitant ajouter la recherche vectorielle à une application Postgres existante. En stockant les embeddings aux côtés des données relationnelles et en prenant en charge la recherche de similarité nativement dans la base de données, il élimine la surcharge opérationnelle de la gestion d'un magasin vectoriel séparé. Pour de nombreuses charges de travail — recherche sémantique, pipelines RAG, recommandations et détection d'anomalies — il fournit ce dont les équipes ont besoin sans nécessiter un nouveau système.

À mesure que les volumes de données augmentent ou que les demandes de requêtes augmentent, pgvectorscale peut étendre les limites avant qu'une base de données vectorielle dédiée ne devienne nécessaire. Pour les organisations qui gèrent des charges de travail d'IA à grande échelle sur une plateforme de données unifiée, Databricks Mosaic AI Vector Search offre une approche complémentaire conçue pour la couche lakehouse. Ensemble, ces outils offrent aux équipes la flexibilité nécessaire pour adapter leur infrastructure de recherche vectorielle à leurs besoins réels en matière de charge de travail, quelle que soit l'échelle.

(Cet article de blog a été traduit à l'aide d'outils basés sur l'intelligence artificielle) Article original

Never miss a Databricks post

Subscribe to our blog and get the latest posts delivered to your inbox