Une représentation vectorielle continue de texte est une représentation vectorielle de données textuelles, et elles sont utilisées dans de nombreuses façons de trouver des articles similaires. Vous interagissez avec eux à chaque fois une recherche Google ou de voir des recommandations lors de vos 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 toutes vos entrées au texte 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 du texte.
L'API Vertex AI de représentations vectorielles continues de texte vous permet de créer
l'intégration de texte à l'aide de l'IA générative. En utilisant
ce tutoriel, vous pouvez générer des représentations vectorielles continues de texte pour les données stockées dans
Les modèles de représentations vectorielles continues Spanner et Vertex AI, tels que
Modèle textembedding-gecko
.
Pour en savoir plus sur les représentations vectorielles continues, consultez Obtenir des représentations vectorielles continues 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. - référencer le modèle enregistré à l'aide de requêtes SQL pour générer des représentations vectorielles continues à partir de stockées dans Spanner.
Coûts
Ce tutoriel utilise des composants facturables de Google Cloud, dont :
- Spanner
- Vertex AI
Pour en savoir plus sur les coûts de Spanner, consultez la Tarifs de Spanner.
Pour en savoir plus sur les coûts liés à Vertex AI, consultez la Page Tarifs de Vertex AI
Générer et stocker des représentations vectorielles continues de texte
En fonction du modèle que vous utilisez, la génération des représentations vectorielles continues peut prendre un certain temps. Pour des charges de travail sensibles aux performances, nous vous recommandons d'éviter de générer des représentations vectorielles continues dans les transactions en lecture/écriture. Au lieu de cela, générez les représentations vectorielles continues dans un transaction en lecture seule à l'aide des exemples SQL suivants.
GoogleSQL
Enregistrer un modèle de représentations vectorielles continues de texte dans Spanner
Dans GoogleSQL, vous devez enregistrer un modèle avant de l'utiliser avec
la fonction ML.PREDICT
. Pour enregistrer le modèle textembedding-gecko
dans un
Spanner, exécutez le LDD suivant
instruction:
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 de représentation vectorielle continuePROJECT
: projet hébergeant le point de terminaison Vertex AILOCATION
: emplacement du point de terminaison Vertex AIMODEL_VERSION
: version du modèle de représentation vectorielle continuetextembedding-gecko
Spanner accorde automatiquement les autorisations appropriées. Si , consultez la section Contrôle des accès au point de terminaison du modèle.
La découverte et la validation de schémas ne sont pas disponibles pour l'IA générative
des modèles de ML. Vous devez fournir les clauses INPUT
et OUTPUT
qui correspondent
au schéma du modèle. Pour voir le schéma complet du modèle Gecko, consultez
Obtenir des représentations vectorielles continues de texte
Générer des représentations vectorielles continues de texte
Pour générer des représentations vectorielles continues, transmettez un 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 représentations vectorielles continues pour les données stockées dans une table, utilisez le code SQL suivant:
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. À stockez 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 représentations vectorielles continues avec le code SQL suivant 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 représentations vectorielles continues de texte
Pour générer des représentations vectorielles continues, transmettez un 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 de représentation vectorielle continuetextembedding-gecko
Pour générer des représentations vectorielles continues pour les données stockées dans une table, utilisez le code SQL suivant:
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 de représentation vectorielle continuetextembedding-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. À stockez 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 représentations vectorielles continues avec le code SQL suivant 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 de représentation vectorielle continuetextembedding-gecko
Mettre à jour les représentations vectorielles continues de texte
Pour mettre à jour vos représentations vectorielles continues ou ingérer des données en temps réel, utilisez l'UPDATE
(GoogleSQL
et PostgreSQL)
.
Pour mettre à jour la table Products
de l'exemple précédent, utilisez le code SQL suivant:
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 de représentation vectorielle continue
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 de représentation vectorielle continuetextembedding-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 intensif sur les représentations vectorielles continues.