Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Use pgvector

Dernière mise à jour :Sep 24, 2026

pgvector ajoute des fonctionnalités de stockage vectoriel et de recherche par similarité à ApsaraDB RDS for PostgreSQL. Utilisez cette extension pour stocker les embeddings générés par des modèles d'apprentissage automatique et interrogez-les en vous basant sur la distance cosinus, la distance euclidienne ou le produit scalaire.

Fonctionnement

Les embeddings sont des représentations numériques de données (texte, images, audio ou vidéo) exprimées sous forme de vecteurs dans un espace à haute dimensionnalité. Les objets sémantiquement similaires correspondent à des vecteurs proches les uns des autres.

Par exemple, si vous représentez une pomme par [1, 1], une banane par [1.2, 0.8] et un chat par [6, 0.4], une recherche vectorielle classera la banane comme l'élément le plus similaire à la pomme, car ces deux fruits partagent des propriétés communes.

image..png

pgvector prend en charge :

  • Les recherches exactes du plus proche voisin et les recherches approximatives du plus proche voisin (ANN).

  • Les index HNSW (Hierarchical Navigable Small World) et les index parallèles IVFFLAT pour accélérer les recherches ANN.

  • Les vecteurs comportant jusqu'à 16 000 dimensions ; les index sur les vecteurs comportant jusqu'à 2 000 dimensions.

  • Les métriques de distance : distance euclidienne L2, similarité cosinus et produit scalaire.

  • Des opérations supplémentaires : distance L1, multiplication élément par élément et agrégation par somme.

Prérequis

Avant de commencer, assurez-vous que :

  • Votre instance RDS exécute PostgreSQL 14 ou une version ultérieure, avec une version mineure du moteur 20230430 ou supérieure. Pour PostgreSQL 17, la version mineure du moteur doit être 20241030 ou supérieure.

  • Un compte privilégié existe pour l'instance RDS.

Pour mettre à niveau la version majeure du moteur, consultez la rubrique Mettre à niveau la version majeure du moteur d'une instance ApsaraDB RDS for PostgreSQL . Pour mettre à jour la version mineure du moteur, consultez la rubrique Mettre à jour la version mineure du moteur d'une instance ApsaraDB RDS for PostgreSQL . Pour créer un compte privilégié, consultez la rubrique Créer un compte .

Installer l'extension

Installation depuis la console (recommandée)

  1. Accédez à la page Instances. Dans la barre de navigation supérieure, sélectionnez la région où se trouve votre instance RDS. Cliquez sur l'ID de l'instance.

  2. Dans le volet de navigation de gauche, cliquez sur Plug-ins.

  3. Sous l'onglet Extension Marketplace, localisez l'extension vectorielle et cliquez sur Install. Vous pouvez également basculer vers l'onglet Extension Management, rechercher l'extension vectorielle, puis cliquer sur Install dans la colonne Actions.

    image

  4. Dans la boîte de dialogue, définissez les champs Database Name et Database Account, puis cliquez sur Install.

L'extension est installée lorsque l'état de l'instance passe de Maintaining Instance à Running.

Pour mettre à jour ou désinstaller l'extension :

Sous l'onglet Extension Management, accédez à la section Installed Extensions, localisez l'extension, puis cliquez sur Upgrade Version ou Uninstall dans la colonne Actions.

Si l'option Upgrade Version n'est pas affichée, cela signifie que l'extension est déjà à sa dernière version.

Installation avec SQL

Important

Ces opérations nécessitent un compte privilégié. Pour en créer un, consultez la rubrique Créer un compte.

-- Create
CREATE EXTENSION IF NOT EXISTS vector;

-- Update
ALTER EXTENSION vector UPDATE [ TO new_version ];

-- Delete
DROP EXTENSION vector;
new_version correspond à la version cible de l'extension pgvector. Pour consulter l'historique des versions et les fonctionnalités associées, reportez-vous à la documentation pgvector .

Stocker et interroger des vecteurs

Cette section décrit la procédure de stockage des embeddings et l'exécution de recherches par similarité. Pour obtenir la référence complète de l'API, consultez la documentation pgvector.

Créer une table

CREATE TABLE items (
  id        bigserial PRIMARY KEY,
  item      text,
  embedding vector(2)
);
Cet exemple utilise des vecteurs à 2 dimensions à titre illustratif. pgvector prend en charge jusqu'à 16 000 dimensions.

Insérer des vecteurs

INSERT INTO items (item, embedding)
VALUES
  ('Apple',  '[1,1]'),
  ('Banana', '[1.2,0.8]'),
  ('Cat',    '[6,0.4]');

Interroger par similarité

Utilisez un opérateur de distance pour classer les résultats par similarité. Plus la distance est courte, plus les éléments sont similaires.

Opérateurs de distance :

Operator Metric
<-> Distance L2 (euclidienne)
<=> Distance cosinus
<#> Produit scalaire

Requête de similarité de base :

-- Find items most similar to Banana, ranked by cosine distance
SELECT item,
       embedding <=> '[1.2, 0.8]' AS cosine_distance
FROM items
ORDER BY cosine_distance;

Exemple de sortie :

  item  |    cosine_distance
--------+------------------------
 Banana |                      0
 Apple  | 0.019419362524530137
 Cat    | 0.13289443670962842
  • Une distance de 0 indique une correspondance exacte.

  • Une distance de 0.019 indique une forte similarité.

  • Une distance de 0.133 indique une faible similarité.

Vous pouvez spécifier un seuil de similarité adapté à vos besoins métier afin d'exclure les résultats présentant une faible similarité.

Créer des index

Sans index, pgvector effectue une recherche exacte sur l'intégralité de la table. Pour les grands ensembles de données, créez un index vectoriel afin d'accélérer les recherches ANN.

Créer un index HNSW

CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);

Paramètres :

Parameter Description
m Nombre maximal de connexions par nœud à chaque niveau. Des valeurs plus élevées augmentent la densité du graphe, le taux de rappel ainsi que le temps nécessaire à la création et à l'interrogation de l'index.
ef_construction Taille de l'ensemble de candidats lors de la construction de l'index. Des valeurs plus élevées améliorent le taux de rappel, au détriment du temps requis pour créer et interroger l'index.

Méthodes d'accès (champ vector_cosine_ops) :

Value Distance metric
vector_cosine_ops Distance cosinus
vector_l2_ops Distance L2 (euclidienne)
vector_ip_ops Produit scalaire

Créer un index IVF

CREATE INDEX ON items USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100);

Paramètres :

Parameter Description
lists Nombre de listes dans lesquelles l'ensemble de données est partitionné. Un nombre plus élevé de listes accélère la recherche, mais peut réduire le taux de rappel. Si lists > 2000, l'erreur suivante peut survenir : ERROR: memory required is xxx MB, maintenance_work_mem is xxx MB — augmentez la valeur de maintenance_work_mem pour résoudre ce problème. Consultez la rubrique Définir les paramètres de l'instance.
ivfflat.probes Nombre de listes à parcourir lors d'une requête. Un nombre plus élevé de sondes améliore le taux de rappel, mais ralentit la recherche.

Définissez ivfflat.probes au niveau de la session ou de la transaction :

-- Session level
SET ivfflat.probes = 10;

-- Transaction level
BEGIN;
SET LOCAL ivfflat.probes = 10;
SELECT ...;
COMMIT;
Important

Si la valeur de ivfflat.probes est égale à la valeur de lists utilisée lors de la création de l'index, l'index est ignoré et une analyse complète de la table est effectuée. Cela peut dégrader considérablement les performances de recherche.

Ajustez les paramètres ivfflat.probes et lists en fonction de votre ensemble de données et de vos exigences en matière de taux de rappel.

Données de performance

Pour consulter les données de benchmark relatives aux index HNSW et IVF, reportez-vous aux rubriques suivantes :

Étapes suivantes

Développez des applications d'IA de production en vous appuyant sur pgvector :