Cette page explique comment créer un embedding textuel à l'aide de l'API Text Embedding.
Vertex AI est compatible avec les embeddings textuels dans Google Distributed Cloud (GDC) avec isolation physique via l'API Text Embedding. L'embedding textuel utilise des représentations vectorielles.
L'embedding textuel convertit des données textuelles écrites dans n'importe quelle langue compatible 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'embedding textuel 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 et 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 textuels, consultez la documentation suivante :
- Pour en savoir plus sur les embeddings, consultez la présentation des embeddings textuels.
- Pour en savoir plus sur les modèles d'embedding textuel, 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
Pour générer des embeddings textuels dans un projet GDC, demandez les autorisations nécessaires à votre administrateur.
Demander des rôles IAM
Contactez l'administrateur de projet IAM pour demander l'un des rôles suivants dans l'espace de noms de votre projet, en fonction du modèle que vous souhaitez utiliser :
- Développeur d'embeddings textuels d'IA (
ai-text-embedding-developer) : génère des embeddings textuels à l'aide du modèle d'embedding textuel. - AI Text Embedding Multilingual Developer (
ai-text-embedding-multilingual-developer) : génère des embeddings textuels à l'aide du modèle Text Embedding Multilingual.
Pour en savoir plus sur ces rôles, consultez Préparer les autorisations IAM. Pour en savoir plus sur les liaisons de rôles pour les comptes de service, consultez Configurer des comptes de service.
Préparer votre environnement
Avant d'utiliser l'embedding textuel dans un projet GDC, procédez comme suit :
- Configurez un projet pour Vertex AI.
- Choisissez l'un des modèles disponibles pour les embeddings textuels, 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.
Vous devez utiliser le même projet pour vos requêtes de modèle, le compte de service et la liaison de rôle IAM.
Obtenir des embeddings textuels pour un extrait de texte
Une fois que vous avez rempli les conditions préalables, vous pouvez utiliser les modèles Text Embedding ou Text Embedding Multilingual 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 d'embedding textuel. Sinon, interagissez avec le modèle à partir d'un script Python pour obtenir un embedding textuel.
REST
Pour obtenir des embeddings textuels, envoyez une requête POST en spécifiant le point de terminaison du modèle.
Pour envoyer une demande, 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": "" } ] }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 d'embedding textuel ou d'embedding textuel multilingue 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-embeddingpour le modèle d'embedding textuel.endpoint-text-embedding-multilingualpour le modèle Text Embedding Multilingual.
Le résultat ressemble à ce qui suit :
{"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 textuels à 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-pyCré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 :text-embeddingpour le modèle d'embedding textuel.text-embedding-multilingualpour le modèle Text Embedding Multilingual.
CERT_NAME: nom du fichier de certificat (CA) de l'autorité de certification, 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. Sinon, omettez-le.
Envoyez une requête :
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODELRemplacez les éléments suivants :
TOKEN: jeton d'authentification que vous avez obtenu.ENDPOINT: point de terminaison d'embedding textuel ou d'embedding textuel multilingue 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 :text-embeddingpour le modèle d'embedding textuel.text-embedding-multilingualpour le modèle Text Embedding Multilingual.
Le résultat ressemble à ce qui suit :
{"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"}