Générer des embeddings de texte

L'extension google_ml_integration inclut des fonctions d'intégration dans deux espaces de noms différents : public et google_ml. Cette page explique comment générer des embeddings de texte à l'aide de fonctions 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 fonction google_ml.embedding() dans le schéma google_ml. Pour en savoir plus sur l'enregistrement d'un point de terminaison, consultez Enregistrer un modèle.

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 items contient une colonne complaints. Cette colonne TEXT enregistre les réclamations des acheteurs concernant chaque article.

  • La base de données s'intègre à Vertex AI Model Garden, ce qui lui donne accès aux modèles gemini-embedding-001 en 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 dont 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 une requête de texte donnée, par exemple It was the wrong color.

Pour générer des embeddings, sélectionnez l'un des schémas suivants.

Avant de commencer

Pour permettre à AlloyDB de générer des embeddings, procédez comme suit :

Générer des embeddings

Utilisez la fonction SQL google_ml.embedding() pour appeler des modèles d'embedding de texte.

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 exemple gemini-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 Vertex AI se trouvent dans des projets différents, définissez model_id sur le chemin qualifié du point de terminaison (par exemple, projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001).

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');

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