Cette page explique comment créer un embedding textuel à l'aide de l'API Text Embedding.
Vertex AI est compatible avec les embeddings de texte dans Google Distributed Cloud (GDC) air-gapped via l'API Text Embedding. L'embedding de texte utilise des représentations vectorielles.
Text Embedding convertit les données textuelles rédigées dans n'importe quelle langue acceptée en vecteurs numériques. Ces représentations vectorielles sont conçues pour capturer la signification sémantique et le contexte des mots qu'elles représentent. Les modèles d'embeddings de texte peuvent générer des embeddings optimisés pour différents types de tâches, tels que la récupération de documents, les questions-réponses, la classification et la vérification des faits pour le texte.
Pour en savoir plus sur les concepts clés utilisés par les embeddings de texte, consultez la documentation suivante :
- Pour en savoir plus sur les embeddings, consultez la présentation des embeddings de texte.
- Pour en savoir plus sur les modèles d'embedding de texte, consultez Modèles d'embedding.
- Pour savoir comment les types de tâches génèrent des embeddings optimisés, consultez Choisir un type de tâche d'embedding.
- Pour en savoir plus sur les langues compatibles avec chaque modèle d'embedding, consultez Langues d'embedding textuel compatibles.
Avant de commencer
Avant d'utiliser l'embedding de texte dans un projet GDC, procédez comme suit :
- Configurez un projet pour Vertex AI.
- Choisissez l'un des modèles d'embedding de texte disponibles, en fonction de la langue et du type de tâche.
- Activez l'API Text Embedding ou Text Embedding Multilingual, selon le modèle que vous souhaitez utiliser.
Accorder à un utilisateur ou à un compte de service l'accès approprié à Text Embedding ou Text Embedding Multilingual. Pour en savoir plus, consultez la documentation suivante :
- Pour en savoir plus sur les rôles requis, consultez Préparer les autorisations IAM.
- Pour en savoir plus sur les liaisons de rôle pour les comptes de service, consultez Configurer des comptes de service.
Vous devez utiliser le même projet pour vos requêtes de modèle, le compte de service et l'association de rôle IAM.
Obtenir des embeddings textuels pour un extrait de texte
Après avoir rempli les conditions préalables, vous pouvez utiliser les modèles d'embedding de texte ou d'embedding de texte multilingue pour obtenir des embeddings textuels pour un extrait de texte à l'aide de l'API ou du SDK pour Python.
Les exemples suivants utilisent le modèle text-embedding-004
.
Envoyez une requête REST à l'API Embedding pour le texte. Sinon, interagissez avec le modèle à partir d'un script Python pour obtenir un embedding textuel.
REST
Pour obtenir des embeddings de texte, envoyez une requête POST en spécifiant le point de terminaison du modèle.
Pour envoyer une demande :
Enregistrez le contenu de votre requête dans un fichier JSON nommé
request.json
. Le fichier doit ressembler à l'exemple suivant :{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Envoyez la requête à l'aide de l'outil
curl
:curl -X POST \ -H "Authorization: Bearer TOKEN"\ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/endpoints/MODEL:predict"
Remplacez les éléments suivants :
TOKEN
: jeton d'authentification que vous avez obtenu.ENDPOINT
: point de terminaison Text Embedding ou Text Embedding Multilingual que vous utilisez pour votre organisation. Pour en savoir plus, consultez l'état et les points de terminaison du service.PROJECT
: nom de votre projet.MODEL
: modèle que vous souhaitez utiliser. Voici les valeurs disponibles :endpoint-text-embedding
pour le modèle d'embedding textuel.endpoint-text-embedding-multilingual
pour le modèle Text Embedding Multilingual.
Vous devez obtenir une réponse JSON semblable à celle-ci :
{"predictions":[[-0.00668720435,3.20804138e-05,-0.0281705819,-0.00954890903,-0.0818724185,0.0150693133,-0.00677698106, …. ,0.0167487375,-0.0534791686,0.00208711182,0.032938987,-0.01491543]],"deployedModelId":"text-embedding","model":"models/text-embedding/1","modelDisplayName":"text-embedding","modelVersionId":"1"}
Python
Pour obtenir des embeddings de texte à partir d'un script Python, procédez comme suit :
Enregistrez le contenu de votre requête dans un fichier JSON nommé
request.json
. Le fichier doit ressembler à l'exemple suivant :{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Installez les bibliothèques Python requises :
pip install absl-py
Créez un fichier Python nommé
client.py
. Le fichier doit se présenter comme suit :import json import os from typing import Sequence import grpc from absl import app from absl import flags from google.protobuf import json_format from google.protobuf.struct_pb2 import Value from google.cloud.aiplatform_v1.services import prediction_service _INPUT = flags.DEFINE_string("input", None, "input", required=True) _HOST = flags.DEFINE_string("host", None, "Prediction endpoint", required=True) _ENDPOINT_ID = flags.DEFINE_string("endpoint_id", None, "endpoint id", required=True) _TOKEN = flags.DEFINE_string("token", None, "STS token", required=True) # ENDPOINT_RESOURCE_NAME is a placeholder value that doesn't affect prediction behavior. ENDPOINT_RESOURCE_NAME="projects/PROJECT/locations/PROJECT/endpoints/MODEL" os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = CERT_NAME # predict_client_secure builds a client that requires TLS def predict_client_secure(host): with open(os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"], 'rb') as f: creds = grpc.ssl_channel_credentials(f.read()) channel_opts = () channel_opts += (('grpc.ssl_target_name_override', host),) client = prediction_service.PredictionServiceClient( transport=prediction_service.transports.grpc.PredictionServiceGrpcTransport( channel=grpc.secure_channel(target=host+":443", credentials=creds, options=channel_opts))) return client def predict_func(client, instances, token): resp = client.predict( endpoint=ENDPOINT_RESOURCE_NAME, instances=instances, metadata=[ ("x-vertex-ai-endpoint-id", _ENDPOINT_ID.value), ("authorization", "Bearer " + token),]) print(resp) def main(argv: Sequence[str]): del argv # Unused. with open(_INPUT.value) as json_file: data = json.load(json_file) instances = [json_format.ParseDict(s, Value()) for s in data["instances"]] client = predict_client_secure(_HOST.value,) predict_func(client=client, instances=instances, token=_TOKEN.value) if __name__=="__main__": app.run(main)
Remplacez les éléments suivants :
PROJECT
: nom de votre projet.MODEL
: modèle que vous souhaitez utiliser. Voici les valeurs disponibles :endpoint-text-embedding
pour le modèle d'embedding textuel.endpoint-text-embedding-multilingual
pour le modèle Text Embedding Multilingual.
CERT_NAME
: nom du fichier de certificat de l'autorité de certification (AC), tel queorg-1-trust-bundle-ca.cert
. Vous n'avez besoin de cette valeur que si vous vous trouvez dans un environnement de développement. Dans le cas contraire, omettez-le.
Envoyez une demande :
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODEL
Remplacez les éléments suivants :
TOKEN
: jeton d'authentification que vous avez obtenu.ENDPOINT
: point de terminaison Text Embedding ou Text Embedding Multilingual que vous utilisez pour votre organisation. Pour en savoir plus, consultez l'état et les points de terminaison du service.MODEL
: modèle que vous souhaitez utiliser. Voici les valeurs disponibles :endpoint-text-embedding
pour le modèle d'embedding textuel.endpoint-text-embedding-multilingual
pour le modèle Text Embedding Multilingual.
Vous devez obtenir une réponse JSON semblable à celle-ci :
{"predictions":[[-0.00668720435,3.20804138e-05,-0.0281705819,-0.00954890903,-0.0818724185,0.0150693133,-0.00677698106, …. ,0.0167487375,-0.0534791686,0.00208711182,0.032938987,-0.01491543]],"deployedModelId":"text-embedding","model":"models/text-embedding/1","modelDisplayName":"text-embedding","modelVersionId":"1"}