Cette page explique comment utiliser AlloyDB comme outil de grand modèle de langage (LLM) et générer des embeddings vectoriels à partir d'un LLM.
Pour en savoir plus sur l'utilisation de modèles ML avec AlloyDB Omni, consultez la page Créer des applications d'IA générative.
AlloyDB vous permet d'utiliser un LLM hébergé par Vertex AI pour traduire une chaîne de texte en embedding, qui est la représentation par le modèle de la signification sémantique du texte donné en tant que vecteur numérique. Pour en savoir plus sur la prise en charge des embeddings de texte par Vertex AI, consultez Embeddings de texte.
Avant de commencer
Pour permettre à AlloyDB de générer des représentations vectorielles continues, assurez-vous de remplir les conditions suivantes:
Restrictions régionales
Vous pouvez générer des représentations vectorielles continues dans les régions où l'IA générative sur Vertex AI est disponible. Pour obtenir la liste des régions, consultez la section Emplacements IA générative sur Vertex AI .
Pour AlloyDB, assurez-vous que le cluster AlloyDB et le modèle Vertex AI que vous interrogez se trouvent dans la même région.
Extension de base de données requise
Assurez-vous que l'extension
google_ml_integration
est installée sur votre base de données AlloyDB.CREATE EXTENSION google_ml_integration;
Cette extension est incluse avec AlloyDB. Vous pouvez l'installer sur n'importe quelle base de données de votre cluster.
Définissez l'indicateur de base de données
google_ml_integration.enable_model_support
suroff
.
Configurer l'accès au modèle
Avant de pouvoir générer des embeddings à partir d'une base de données AlloyDB, vous devez configurer AlloyDB pour qu'il fonctionne avec un modèle d'embedding de texte.
Pour utiliser le modèle cloud textembeddings-gecko
, vous devez intégrer votre base de données à Vertex AI.
Autoriser les utilisateurs de la base de données à générer des embeddings
Accordez aux utilisateurs de la base de données l'autorisation d'exécuter la fonction embedding
pour exécuter des prédictions:
Connectez un client
psql
à l'instance principale du cluster, comme décrit dans la section Connecter un clientpsql
à une instance.À l'invite de commande psql, connectez-vous à la base de données et accordez les autorisations:
\c DB_NAME GRANT EXECUTE ON FUNCTION embedding TO USER_NAME;
Remplacez les éléments suivants :
DB_NAME: nom de la base de données sur laquelle les autorisations doivent être accordées
USER_NAME: nom de l'utilisateur auquel les autorisations doivent être accordées
Générer un embedding
AlloyDB fournit une fonction qui vous permet de traduire du texte en un embedding vectoriel. Vous pouvez ensuite stocker cet embedding dans votre base de données en tant que données vectorielles, et éventuellement utiliser des fonctions pgvector
pour exécuter des requêtes sur ces données vectorielles.
Pour générer un embedding à l'aide d'AlloyDB, utilisez la fonction embedding()
fournie par l'extension google_ml_integration
:
SELECT embedding( 'MODEL_IDVERSION_TAG', 'TEXT');
Remplacez les éléments suivants :
MODEL_ID
: ID du modèle à interroger.Si vous utilisez Vertex AI Model Garden, spécifiez
textembedding-gecko@003
comme ID de modèle. Il s'agit des modèles cloud que AlloyDB peut utiliser pour les embeddings de texte. Pour en savoir plus, consultez Embeddings de texte.Facultatif:
VERSION_TAG
: balise de version du modèle à interroger. Ajoutez le préfixe@
au tag.Si vous utilisez l'un des modèles
textembedding-gecko
en anglais avec Vertex AI, spécifiez l'un des tags de version (par exemple,textembedding-gecko@003
) listés dans Versions de modèle.Google vous recommande vivement de toujours spécifier le tag de version. Si vous ne spécifiez pas le tag de version, AlloyDB utilise toujours la dernière version du modèle, ce qui peut entraîner des résultats inattendus.
TEXT
: texte à traduire en embedding vectoriel.
L'exemple suivant utilise la version 003
des modèles en anglais textembedding-gecko
pour générer un embedding basé sur une chaîne littérale fournie:
SELECT embedding('textembedding-gecko@003', 'AlloyDB is a managed, cloud-hosted SQL database service.');
Stocker des embeddings
Les embeddings générés à l'aide de l'extension google_ml_integration
sont implémentés sous forme de tableaux de valeurs real
.
Ces embeddings générés sont transmis en tant qu'entrées pour les fonctions d'extension pgvector
.
Pour stocker cette valeur dans une table, ajoutez une colonne real[]
:
ALTER TABLE TABLE ADD COLUMN EMBEDDING_COLUMN real[DIMENSIONS];
Après avoir créé une colonne pour stocker des embeddings, vous pouvez la renseigner en fonction des valeurs déjà stockées dans une autre colonne de la même table :
UPDATE TABLE SET EMBEDDING_COLUMN = embedding('MODEL_IDVERSION_TAG', SOURCE_TEXT_COLUMN);
Remplacez les éléments suivants :
TABLE
: nom de la tableEMBEDDING_COLUMN
: nom de la colonne d'embeddings
MODEL_ID
: ID du modèle à interroger.Si vous utilisez Vertex AI Model Garden, spécifiez
textembedding-gecko@003
comme ID de modèle. Il s'agit des modèles cloud que AlloyDB peut utiliser pour les embeddings de texte. Pour en savoir plus, consultez Embeddings de texte.Facultatif:
VERSION_TAG
: balise de version du modèle à interroger. Ajoutez le préfixe@
au tag.Si vous utilisez l'un des modèles
textembedding-gecko
en anglais avec Vertex AI, spécifiez l'un des tags de version (par exemple,textembedding-gecko@003
) listés dans Versions de modèle.Google vous recommande vivement de toujours spécifier le tag de version. Si vous ne spécifiez pas le tag de version, AlloyDB utilise toujours la dernière version du modèle, ce qui peut entraîner des résultats inattendus.
SOURCE_TEXT_COLUMN
: nom de la colonne stockant le texte à traduire en embeddings
Effectuer une recherche de similarité
Vous pouvez également utiliser la fonction embedding()
pour traduire le texte en vecteur. Vous appliquez le vecteur à l'opérateur pgvector
correspondant aux plus proches voisins, <->
, afin de rechercher les lignes de la base de données présentant les embeddings les plus similaires sur le plan de la sémantique.
Comme embedding()
renvoie un tableau real
, vous devez convertir explicitement l'appel embedding()
en type de données vector
pour utiliser ces valeurs avec les opérateurs pgvector
.
CREATE EXTENSION google_ml_integration;
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Utiliser des tags de version de modèle pour éviter les erreurs
Google vous recommande vivement de toujours utiliser une version stable du modèle d'embeddings que vous avez choisi. Pour la plupart des modèles, cela signifie définir explicitement un tag de version.
Le fait d'appeler la fonction embedding()
sans spécifier de tag de version du modèle est certes valide d'un point de vue syntaxique, mais cela peut également entraîner des erreurs.
Si vous omettez le tag de version lorsque vous utilisez un modèle sur la plate-forme Vertex AI Model Garden, Vertex AI va utiliser la dernière version en date du modèle. Il ne s'agit peut-être pas de la dernière version stable. Pour en savoir plus sur les versions de modèle Vertex AI disponibles, consultez la section Versions de modèle.
Une version donnée de modèle Vertex AI renvoie toujours la même réponse embedding()
à une entrée de texte donnée. Si vous ne spécifiez pas de versions de modèle dans vos appels à embedding()
, une nouvelle version de modèle publiée peut modifier soudainement le vecteur renvoyé pour une entrée donnée, ce qui peut entraîner des erreurs ou d'autres comportements inattendus dans vos applications.
Pour éviter ces problèmes, spécifiez toujours la version du modèle.
Résoudre les problèmes
ERROR: Model not found for model_id
Message d'erreur
Lorsque vous essayez de générer un embedding à l'aide de la fonction embedding()
ou google_ml.embedding()
, l'erreur suivante se produit:
ERROR: 'Model not found for model_id:
Correction recommandée
Mettez à niveau l'extension
google_ml_integration
, puis réessayez de générer des représentations vectorielles continues.ALTER EXTENSION google_ml_integration UPDATE;
Vous pouvez également supprimer l'extension, puis la recréer.
DROP extension google_ml_integration; CREATE EXTENSION google_ml_integration;
Si vous générez des embeddings à l'aide de la fonction
google_ml.embedding()
, assurez-vous que le modèle est enregistré et que vous utilisez lemodel_id
approprié dans la requête.