Une représentation vectorielle continue de texte est une représentation vectorielle des données textuelles, qui est utilisée de nombreuses manières pour trouver des éléments similaires. Vous interagissez avec ces représentations chaque fois que vous effectuez une recherche Google ou consultez des recommandations lorsque vous faites des achats en ligne. Lorsque vous créez des représentations vectorielles continues de texte, vous obtenez des représentations vectorielles de texte naturel sous forme de tableaux de nombres à virgule flottante. Cela signifie que tout le texte d'entrée se voit attribuer une représentation numérique. En comparant la distance numérique entre les représentations vectorielles de deux éléments de texte, une application peut déterminer la similarité entre le texte ou les objets représentés par le texte.
L'API de représentation vectorielle continue de texte Vertex AI vous permet de créer une représentation vectorielle continue de texte avec l'IA générative. Grâce à ce tutoriel, vous pouvez générer des embeddings de texte pour les données stockées dans les modèles d'embedding Spanner et Vertex AI, comme le modèle textembedding-gecko
.
Pour en savoir plus sur les embeddings, consultez la section Obtenir des embeddings de texte.
Objectif
Dans ce tutoriel, vous allez apprendre à effectuer les opérations suivantes :
- Enregistrez le modèle
textembedding-gecko
Vertex AI dans un schéma Spanner à l'aide d'instructions LDD. - Faites référence au modèle enregistré à l'aide de requêtes SQL pour générer des embeddings à partir des données stockées dans Spanner.
Coûts
Ce tutoriel utilise des composants facturables de Google Cloud, y compris:
- Spanner
- Vertex AI
Pour en savoir plus sur les coûts de Spanner, consultez la page Tarifs de Spanner.
Pour en savoir plus sur les coûts de Vertex AI, consultez la page Tarifs de Vertex AI.
Générer et stocker des embeddings textuels
Selon le modèle que vous utilisez, la génération d'embeddings peut prendre un certain temps. Pour les charges de travail plus sensibles aux performances, il est recommandé d'éviter de générer des représentations vectorielles continues dans les transactions en lecture-écriture. Générez plutôt les représentations vectorielles continues dans une transaction en lecture seule à l'aide des exemples SQL suivants.
GoogleSQL
Enregistrer un modèle d'embeddings de texte dans Spanner
En GoogleSQL, vous devez enregistrer un modèle avant de l'utiliser avec la fonction ML.PREDICT
. Pour enregistrer le modèle textembedding-gecko
dans une base de données Spanner, exécutez l'instruction LDD suivante:
CREATE MODEL MODEL_NAME
INPUT(content STRING(MAX))
OUTPUT(
embeddings
STRUCT<
statistics STRUCT<truncated BOOL, token_count FLOAT64>,
values ARRAY<FLOAT64>>
)
REMOTE OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION'
);
Remplacez l'élément suivant :
MODEL_NAME
: nom du modèle d'embeddingPROJECT
: projet hébergeant le point de terminaison Vertex AILOCATION
: emplacement du point de terminaison Vertex AIMODEL_VERSION
: version du modèle d'embeddingtextembedding-gecko
Spanner accorde automatiquement les autorisations appropriées. Si ce n'est pas le cas, consultez la section Contrôle de l'accès aux points de terminaison du modèle.
La découverte et la validation de schémas ne sont pas disponibles pour les modèles d'IA générative. Vous devez fournir des clauses INPUT
et OUTPUT
qui correspondent au schéma des modèles. Pour obtenir le schéma complet du modèle Gecko, consultez la section Obtenir des embeddings textuels.
Générer des embeddings textuels
Pour générer des embeddings, transmettez un extrait de texte directement à la fonction ML.PREDICT
à l'aide du code SQL suivant:
SELECT embeddings.values
FROM ML.PREDICT(
MODEL MODEL_NAME,
(SELECT "A product description" as content)
);
Pour générer des embeddings pour les données stockées dans une table, utilisez l'instruction SQL suivante:
SELECT id, embeddings.values
FROM ML.PREDICT(
MODEL MODEL_NAME,
(SELECT id, description as content FROM Products)
);
Stocker des représentations vectorielles continues de texte
Après avoir généré les représentations vectorielles continues dans une transaction en lecture seule, stockez-les dans Spanner afin qu'elles puissent être gérées avec vos données opérationnelles. Pour stocker les représentations vectorielles continues, utilisez une transaction en lecture/écriture.
Pour les charges de travail moins sensibles aux performances, vous pouvez générer et insérer des représentations vectorielles continues avec l'instruction SQL suivante dans une transaction en lecture-écriture:
CREATE TABLE Products(
id INT64 NOT NULL,
description STRING(MAX),
embeddings ARRAY<FLOAT32>,
) PRIMARY KEY(id);
INSERT INTO Products (id, description, embeddings)
SELECT @Id, @Description, embeddings.values
FROM ML.PREDICT(
MODEL MODEL_NAME,
(SELECT @Description as content)
);
PostgreSQL
Générer des embeddings textuels
Pour générer des embeddings, transmettez un extrait de texte directement à la fonction spanner.ML_PREDICT_ROW
à l'aide du code SQL suivant:
SELECT
spanner.ML_PREDICT_ROW(
'projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION',
'{"instances": [{"content": "A product description"}]}'::jsonb
) ->'predictions'->0->'embeddings'->'values';
Remplacez l'élément suivant :
PROJECT
: projet hébergeant le point de terminaison Vertex AILOCATION
: emplacement du point de terminaison Vertex AIMODEL_VERSION
: version du modèle d'embeddingtextembedding-gecko
Pour générer des embeddings pour les données stockées dans une table, utilisez l'instruction SQL suivante:
SELECT id, spanner.ML_PREDICT_ROW(
'projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION',
JSONB_BUILD_OBJECT('instances', JSONB_BUILD_ARRAY(JSONB_BUILD_OBJECT('content', description))))
) -> `predictions`->0->`embeddings`->`values``
FROM Products;
Remplacez l'élément suivant :
PROJECT
: projet hébergeant le point de terminaison Vertex AILOCATION
: emplacement du point de terminaison Vertex AIMODEL_VERSION
: version du modèle d'embeddingtextembedding-gecko
Stocker des représentations vectorielles continues de texte
Après avoir généré les représentations vectorielles continues dans une transaction en lecture seule, stockez-les dans Spanner afin qu'elles puissent être gérées avec vos données opérationnelles. Pour stocker les représentations vectorielles continues, utilisez une transaction en lecture/écriture.
Pour les charges de travail moins sensibles aux performances, vous pouvez générer et insérer des représentations vectorielles continues avec l'instruction SQL suivante dans une transaction en lecture-écriture:
CREATE TABLE Products (
id INT8 NOT NULL,
description TEXT,
embeddings REAL[],
PRIMARY KEY(id)
);
INSERT INTO Products (id, description, embeddings)
SELECT @Id, @Description, spanner.FLOAT32_ARRAY(spanner.ML_PREDICT_ROW(
'projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION',
JSONB_BUILD_OBJECT('instances', JSONB_BUILD_ARRAY(JSONB_BUILD_OBJECT('content', @Description)))
) -> 'predictions'->0->'embeddings'->'values'
));
Remplacez l'élément suivant :
PROJECT
: projet hébergeant le point de terminaison Vertex AILOCATION
: emplacement du point de terminaison Vertex AIMODEL_VERSION
: version du modèle d'embeddingtextembedding-gecko
Modifier les représentations vectorielles continues de texte
Pour mettre à jour vos représentations vectorielles continues ou pour ingérer des données en temps réel, utilisez l'instruction UPDATE
(GoogleSQL et PostgreSQL).
Pour mettre à jour la table Products
dans l'exemple précédent, utilisez la requête SQL suivante:
GoogleSQL
UPDATE Products
SET
description = @description,
embeddings = (SELECT embeddings.values
FROM ML.PREDICT(MODEL MODEL_NAME, (SELECT @description as content))
)
WHERE id = @id;
Remplacez les éléments suivants :
MODEL_NAME
: nom du modèle d'embedding
PostgreSQL
UPDATE
Products
SET
description = $1,
embeddings = spanner.FLOAT32_ARRAY(
spanner.ML_PREDICT_ROW(
'projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko$MODEL_VERSION',
JSONB_BUILD_OBJECT('instances', JSONB_BUILD_ARRAY(JSONB_BUILD_OBJECT('content', $1)))
) -> 'predictions'->0->'embeddings'->'values')
WHERE
id = $2;
Remplacez l'élément suivant :
PROJECT
: projet hébergeant le point de terminaison Vertex AILOCATION
: emplacement du point de terminaison Vertex AIMODEL_VERSION
: version du modèle d'embeddingtextembedding-gecko
Étape suivante
- Découvrez comment utiliser Vertex AI Vector Search pour rechercher des éléments sémantiquement similaires.
- Pour en savoir plus sur le machine learning et les représentations vectorielles continues, consultez notre cours d'initiation aux représentations vectorielles continues.