L'extension google_ml_integration dans AlloyDB pour PostgreSQL vous permet de générer des embeddings textuels directement en SQL à l'aide de fonctions dans les schémas public et google_ml. Vous pouvez appeler la fonction embedding() dans le schéma public avec n'importe quel modèle d'embedding Gemini Enterprise Agent Platform sans enregistrer de point de terminaison. Pour transmettre des paramètres personnalisés tels que des types de tâches ou utiliser des modèles tiers, enregistrez le point de terminaison du modèle et appelez la fonction google_ml.embedding() dans le schéma google_ml.
Fonctionnement des embeddings
Imaginons une base de données qui s'exécute sur AlloyDB avec les caractéristiques suivantes :
La base de données contient une table,
items. Chaque ligne de ce tableau décrit un article que votre entreprise vend.La table
itemscontient une colonnecomplaints. Cette colonneTEXTenregistre les réclamations des acheteurs qui sont enregistrées sur chaque article.La base de données s'intègre à Model Garden, ce qui lui donne accès aux modèles
gemini-embedding-001en anglais.
Même si cette base de données stocke les réclamations concernant des articles, celles-ci sont stockées en texte brut, ce qui rend leur interrogation difficile. Par exemple, si vous souhaitez voir les articles qui reçoivent le plus de réclamations de la part des clients ayant reçu la mauvaise couleur des produits, vous pouvez effectuer des requêtes SQL ordinaires sur la table, à la recherche de différentes correspondances de mots clés. Toutefois, cette approche ne correspond qu'aux lignes contenant ces mots clés exacts.
Par exemple, une requête SQL de base telle que SELECT * FROM item WHERE complaints LIKE
"%wrong color%" ne renvoie pas de ligne dans laquelle le champ complaints ne contient que The picture shows a blue one, but the one I received was red.
Les requêtes SQL utilisant des embeddings basés sur un LLM peuvent aider à renvoyer des réponses sémantiquement similaires pour de telles requêtes. En appliquant des embeddings, vous pouvez interroger la table de cet exemple pour les éléments dont les réclamations présentent une similarité sémantique avec un prompt textuel donné, par exemple It was the
wrong color.
Pour la génération d'embeddings de base, sélectionnez l'un des schémas suivants.
Avant de commencer
Pour permettre à AlloyDB de générer des embeddings, procédez comme suit :
Connectez-vous à votre base de données à l'aide de
psqlou d'AlloyDB Studio en tant qu'utilisateurpostgres.Vérifiez que l'extension
google_ml_integrationest installée.Pour vérifier la version de votre extension, exécutez la commande suivante :
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';Si vous devez mettre à jour l'extension, utilisez la commande
ALTER EXTENSION google_ml_integration UPDATE;.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 Agent Platform. Pour en savoir plus, consultez Intégrer votre base de données à la plate-forme d'agents.
Accordez aux utilisateurs de la base de données les autorisations nécessaires pour générer des embeddings.
Si vous utilisez
psql, connectez-vous à la base de données pour laquelle vous souhaitez accorder des 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 pour laquelle vous souhaitez accorder des autorisations.USER_NAME: nom de l'utilisateur auquel vous souhaitez accorder des autorisations.
Si vous utilisez AlloyDB Studio, sélectionnez le nom de la base de données à laquelle vous souhaitez accorder des autorisations dans la liste Base de données. Accordez l'autorisation
EXECUTEsur la fonctiongoogle_ml.embeddingà l'utilisateur :GRANT EXECUTE ON FUNCTION google_ml.embedding TO "USER_NAME";Remplacez
USER_NAMEpar le nom de l'utilisateur auquel vous souhaitez accorder des autorisations.
Générer des embeddings
Utilisez la fonction SQL google_ml.embedding() pour appeler des modèles d'embedding textuel.
Pour appeler le modèle et générer des embeddings, exécutez la requête suivante :
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
Remplacez les éléments suivants :
MODEL_ID: ID de modèle qualifié, par exemplegemini-embedding-001.CONTENT: texte à traduire en embedding vectoriel.
Exemples de génération d'embeddings
Vous trouverez dans cette section quelques exemples de génération d'embeddings à l'aide du point de terminaison du modèle enregistré.
Modèles d'embedding Gemini
Pour générer des embeddings pour un point de terminaison de modèle gemini-embedding-001 enregistré, exécutez l'instruction suivante :
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Si votre cluster AlloyDB et le point de terminaison Gemini Enterprise Agent Platform se trouvent dans des projets différents, procédez comme suit :
Exécutez l'instruction
CALLsuivante.CALL google_ml.create_model( model_id => 'gemini-embedding-001', model_request_url => 'https://REGION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001:predict', model_provider => 'google', model_type => 'text_embedding', model_auth_type => 'alloydb_service_agent_iam', model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform', model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform' );Pour générer des embeddings pour un point de terminaison de modèle
gemini-embedding-001enregistré, exécutez l'instruction suivante :SELECT google_ml.embedding( model_id => 'gemini-embedding-001', content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Modèle d'embedding OpenAI
Pour générer des embeddings pour un point de terminaison de modèle text-embedding-ada-002 enregistré par OpenAI, exécutez l'instruction suivante :
SELECT
google_ml.embedding(
model_id => 'text-embedding-ada-002',
content => 'e-mail spam');
Pour générer des embeddings pour des points de terminaison de modèle text-embedding-3-small ou text-embedding-3-large enregistrés par OpenAI, exécutez l'instruction suivante :
SELECT
google_ml.embedding(
model_id => 'text-embedding-3-small',
content => 'Vector embeddings in AI');
Étapes suivantes
En savoir plus sur la documentation de référence sur la gestion des points de terminaison de modèle