pgvector est une extension pour PostgreSQL (également appelé Postgres) qui simplifie l'utilisation des vecteurs. Elle vous permet de les stocker, de les rechercher et de les indexer directement dans votre base de données relationnelle.
Avec pgvector, vous pouvez ajouter des fonctionnalités avancées comme la recherche de similarité à vos applications et à vos agents IA de manière simple et évolutive, sans avoir à déplacer des données ni à modifier les architectures d'applications pour associer le nouveau type de données vectorielles.
pgvector est une extension Open Source pour PostgreSQL qui vous permet de stocker, d'indexer et de rechercher des vecteurs de grande dimension directement dans votre base de données PostgreSQL existante. pgvector est connu pour prendre en charge les fonctionnalités suivantes :
Un vecteur représente les données de façon numérique en capturant leurs principales caractéristiques et en les mappant dans un espace mathématique virtuel. Dans cet espace, les éléments similaires (mots, images, objets, par exemple) sont positionnés à proximité les uns des autres.
Par exemple, les termes "manteau" et "veste" ne seraient pas considérés comme similaires par les recherches traditionnelles basées sur les mots clés, car leurs lettres sont très différentes. Un système d'e-commerce qui souhaite regrouper ces mots clés doit le faire manuellement. Toutefois, les représentations vectorielles de ces deux termes seraient très proches, car ils ont des significations similaires. Cela permettrait de fournir des résultats de recherche plus précis aux utilisateurs et de faire gagner du temps aux développeurs.
De même, si vous prenez deux photos de chats, elles peuvent être très différentes pixel par pixel. Toutefois, les embeddings vectoriels associés les placeraient très près l'une de l'autre dans l'espace mathématique, tout comme un humain identifierait facilement ces deux images de chats :

Pour effectuer cette tâche, un modèle d'embedding transforme les données brutes (images ou texte, par exemple) en embeddings vectoriels. pgvector stocke ces embeddings dans votre base de données. Lorsqu'un utilisateur envoie une requête, cette entrée est également convertie en vecteur. pgvector calcule ensuite la distance entre le vecteur de requête et les vecteurs stockés pour identifier efficacement les "voisins les plus proches" avec les scores de similarité les plus élevés.
Vous souhaitez en savoir plus sur les différents types de recherches des plus proches voisins ? Consultez notre guide sur le développement d'applications d'IA générative.
PostgreSQL est un système de gestion de base de données relationnelle Open Source robuste, conçu pour gérer des données structurées à l'aide de tables, de lignes et de colonnes.
pgvector est une extension qui s'exécute dans PostgreSQL. Elle ajoute le type de données vectorielles à la base de données, ce qui permet de stocker et de traiter les embeddings vectoriels en même temps que vos données opérationnelles standards.
Non, pgvector est une extension qui s'intègre directement à votre base de données PostgreSQL existante. Vous pouvez ainsi ajouter des fonctionnalités de recherche et d'IA avancées, sans avoir à gérer une infrastructure nouvelle ou distincte.
Pour prendre en charge les fonctionnalités actuelles basées sur l'IA, vous devez pouvoir stocker et gérer les embeddings vectoriels.
PostgreSQL peut être puissant en soi, mais comme ses données sont structurées de manière rigide en tables, lignes et colonnes, ses capacités de requête se limitent en grande partie à la correspondance de mots clés et de modèles.
Dans le monde de l'IA, les données complexes telles que le texte, les images et l'audio sont encodées sous forme de représentations vectorielles. Ces encodages permettent aux modèles d'IA de comprendre le contexte et les relations sémantiques dans vos données, ce qui constitue la base de fonctionnalités telles que la recherche intelligente, les recommandations et l'IA générative.
L'extension pgvector intègre la recherche sémantique à PostgreSQL. Elle utilise des embeddings vectoriels pour trouver des résultats basés sur la signification d'une requête, et non seulement sur la correspondance de mots clés comme le ferait SQL. Ce processus, appelé recherche de similarité, permet d'ajouter facilement des fonctionnalités de recherche avancées directement dans vos applications, sans avoir à restructurer ni à déplacer les données vers une base de données vectorielle distincte.
Vous souhaitez en savoir plus sur les embeddings vectoriels ? Consultez notre guide sur le développement d'applications d'IA générative.
Grâce à sa capacité à gérer des vecteurs de grande dimension, pgvector prend en charge un large éventail d'applications avancées.
La correspondance des mots clés dans les bases de données relationnelles traditionnelles ne permet souvent pas d'identifier les liens significatifs dans les données. La recherche de similarité compare la proximité des vecteurs à l'aide de métriques telles que la distance euclidienne et la distance de cosinus pour trouver des schémas plus profonds. Elle est essentielle pour des applications telles que la reconnaissance d'images et la recherche sémantique, où les résultats sont classés par signification. Dans le domaine de l'e-commerce, par exemple, la recherche de similarité permet de recommander des produits en analysant le comportement des utilisateurs et en trouvant des articles associés.
Le traitement du langage naturel basé sur des vecteurs permet aux agents IA de comprendre le contexte, ce qui se traduit par des conversations plus personnalisées et des réponses plus précises. La prise en charge multilingue améliore leurs performances en tant qu'assistants virtuels et plates-formes de service client.
pgvector améliore les workflows d'IA en stockant et en interrogeant les embeddings vectoriels, qui sont essentiels pour identifier des schémas inhabituels dans les données. En analysant la proximité des vecteurs, il permet de détecter les anomalies en temps réel pour la prévention des fraudes, la sécurité réseau ou le contrôle qualité.
L'analyse des sentiments examine l'intention d'un message, ce qui vous permet de diriger les commentaires négatifs vers les bonnes personnes pour une action plus rapide et de créer des solutions sur mesure.
En exploitant l'évolutivité, la prise en charge des transactions et la fiabilité robuste de PostgreSQL, pgvector gère efficacement les ensembles de données de grande dimension. De plus, sa syntaxe SQL familière le rend accessible aux équipes existantes, éliminant ainsi le besoin d'outils ou d'infrastructures supplémentaires dédiés à l'indexation et à la recherche de vecteurs.
S'intègre facilement aux applications existantes basées sur PostgreSQL.
Améliore l'évolutivité de PostgreSQL pour les ensembles de données dont la taille augmente.
Offre des fonctionnalités personnalisables, comme les métriques de distance et l'indexation.
Hérite de la sécurité et de la fiabilité éprouvées de PostgreSQL.
Permet d'interroger facilement des données structurées et non structurées.
Fournit une solution conviviale pour les développeurs, permettant d'exploiter des données de grande dimension à grande échelle.
Pour une base de données unique qui excelle à la fois dans les requêtes SQL traditionnelles et dans la recherche Vertex moderne, envisagez d'utiliser AlloyDB pour PostgreSQL. AlloyDB utilise l'algorithme de recherche de similarité vectorielle ScaNN (Scalable Nearest Neighbor) développé par Google, qui offre des performances nettement supérieures à celles des autres services cloud PostgreSQL pour les charges de travail transactionnelles et analytiques dans les grandes bases de données.
Découvrez comment AlloyDB effectue des recherches simultanées sur des données structurées et non structurées.
Cloud SQL et AlloyDB pour PostgreSQL sont compatibles avec pgvector, ce qui vous permet de stocker et d'interroger des embeddings vectoriels à l'aide de commandes SQL standards.
Connectez-vous à votre instance Cloud SQL ou AlloyDB à l'aide du client PostgreSQL de votre choix (psql, pgAdmin ou la console Google Cloud, par exemple).
Exécutez la commande SQL suivante pour activer l'extension dans votre base de données. Cette opération n'est à effectuer qu'une seule fois par base de données.
Créez une table (ou modifiez-en une existante) pour inclure une colonne pour les données vectorielles. Vous devez spécifier les dimensions du vecteur. Par exemple, pour créer une table permettant de stocker des embeddings tridimensionnels :
Vous pouvez insérer des embeddings vectoriels comme des données standards. Les vecteurs sont mis en forme en tant que tableaux entre crochets.
Vous pouvez maintenant interroger vos données pour trouver les voisins les plus proches. L'opérateur <-> calcule la distance euclidienne (distance L2), qui est couramment utilisée pour trouver les éléments les plus similaires.
Pour les ensembles de données plus volumineux, l'ajout d'un index peut considérablement améliorer les performances de recherche. Les index HNSW et ScaNN sont des options couramment utilisées. Voici un exemple d'index HNSW :
Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.