Cette page explique comment utiliser AlloyDB Omni comme outil de grand modèle de langage (LLM) et générer des embeddings vectoriels basés sur un LLM.
Pour en savoir plus sur l'utilisation de modèles de ML avec AlloyDB Omni, consultez Créer des applications d'IA générative.
AlloyDB Omni 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 compatibilité de Vertex AI avec les embeddings de texte, consultez Embeddings de texte.
Avant de commencer
Pour permettre à AlloyDB Omni de générer des embeddings, assurez-vous de remplir les conditions suivantes :
Restrictions régionales
Vous pouvez générer des embeddings dans les régions où l'IA générative sur Vertex AI est disponible. Pour obtenir la liste des régions, consultez Emplacements IA générative sur Vertex AI .
Pour AlloyDB Omni, assurez-vous que le cluster AlloyDB Omni 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 Omni.CREATE EXTENSION IF NOT EXISTS google_ml_integration;
Cette extension est incluse dans AlloyDB Omni. Vous pouvez l'installer sur n'importe quelle base de données de votre cluster.
Définissez l'option 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 Omni, vous devez configurer AlloyDB Omni pour qu'il fonctionne avec un modèle d'embedding de texte.
Pour utiliser le modèle cloud text-embedding-005
, 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 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 pour lequel les autorisations doivent être accordées
Générer un embedding
AlloyDB Omni 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 baser des requêtes sur ces données vectorielles.
Pour générer un embedding à l'aide d'AlloyDB Omni, 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
text-embedding-005
comme ID de modèle. Il s'agit des modèles cloud qu'AlloyDB Omni peut utiliser pour les embeddings de texte. Pour en savoir plus, consultez Embeddings de texte.VERSION_TAG
(facultatif) : tag de version du modèle à interroger. Ajoutez le préfixe@
au tag.Si vous utilisez l'un des modèles
text-embedding
en anglais avec Vertex AI, spécifiez l'un des tags de version (par exemple,text-embedding-005
) listés dans la section 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 005
des modèles anglais text-embedding
pour générer un embedding basé sur une chaîne littérale fournie :
SELECT embedding('text-embedding-005', 'AlloyDB is a managed, cloud-hosted SQL database service.');
Stockage 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ées sont transmises 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
text-embedding-005
comme ID de modèle. Il s'agit des modèles cloud qu'AlloyDB Omni peut utiliser pour les embeddings de texte. Pour en savoir plus, consultez Embeddings de texte.VERSION_TAG
(facultatif) : tag de version du modèle à interroger. Ajoutez le préfixe@
au tag.Si vous utilisez l'un des modèles
text-embedding
en anglais avec Vertex AI, spécifiez l'un des tags de version (par exemple,text-embedding-005
) listés dans la section 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és
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 IF NOT EXISTS google_ml_integration;
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')::vector
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
ERREUR : Modèle introuvable pour model_id
Message d'erreur
Lorsque vous essayez de générer un embedding à l'aide des fonctions 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
et réessayez de générer des embeddings.ALTER EXTENSION IF NOT EXISTS 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 le bonmodel_id
dans la requête.