google_ml_integration inclut des fonctions d'embedding dans deux espaces de noms différents : public et google_ml. Cette page explique comment générer des embeddings textuels à l'aide de fonctions issues de ces espaces de noms.
La fonction embedding() du schéma public peut être utilisée avec n'importe quel modèle d'embedding Vertex AI sans enregistrer le point de terminaison. Si vous souhaitez transmettre des informations personnalisées telles que le type de tâche, enregistrez le point de terminaison, puis utilisez la google_ml.embedding() fonction dans le google_ml schéma. Pour en savoir plus sur l'enregistrement d'un point de terminaison, consultez Enregistrer un modèle.
Fonctionnement des embeddings
Imaginez une base de données exécutée sur AlloyDB Omni 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 colonne,complaints. Cette colonneTEXTstocke les réclamations des acheteurs enregistrées sur chaque article.La base de données s'intègre à Vertex AI Model Garden, ce qui lui donne accès aux modèles en anglais
gemini-embedding-001.
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, pour 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 de texte 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 Omni de générer des embeddings, procédez comme suit :
-
Exécutez AlloyDB Omni et connectez-vous
en tant qu'utilisateur
postgres. -
Vérifiez que l'extension
google_ml_integrationest installée.CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
Si vous ne disposez pas des autorisations nécessaires, contactez votre administrateur de base de données pour effectuer la mise à jour. Vous pouvez également attendre que la nouvelle version soit déployée automatiquement sur votre cluster.
-
Vérifiez que l'indicateur
google_ml_integration.enable_model_supportest défini suron. - 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 Vertex AI.
-
Accordez aux utilisateurs de la base de données les autorisations nécessaires pour exécuter la fonction d'embedding afin de générer des embeddings :
\c 'DB_NAME'; GRANT EXECUTE ON FUNCTION google_ml.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 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-001CONTENT: 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 Omni et le point de terminaison Vertex AI 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 enregistré text-embedding-ada-002par 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');
Étape suivante
- Exécutez des recherches vectorielles de similarité.
- Découvrez comment créer un assistant de shopping intelligent avec AlloyDB Omni, pgvector et la gestion des points de terminaison de modèle.
- Créez des index et des vecteurs de requête.
- Découvrez un exemple de workflow d'embedding.