En esta página se describe cómo crear una inserción de texto con la API Text Embedding.
Vertex AI admite embeddings de texto en entornos aislados de Google Distributed Cloud (GDC) a través de la API Text Embedding. Text Embedding usa representaciones vectoriales.
Text Embedding convierte datos de texto escritos en cualquier idioma admitido en vectores numéricos. Estas representaciones vectoriales se han diseñado para captar el significado semántico y el contexto de las palabras que representan. Los modelos de inserción de texto pueden generar inserciones optimizadas para varios tipos de tareas, como la recuperación de documentos, las preguntas y respuestas, la clasificación y la verificación de datos de texto.
Para obtener más información sobre los conceptos clave que usan las inserciones de texto, consulta la siguiente documentación:
- Para obtener más información sobre las inserciones, consulta la descripción general de las inserciones de texto.
- Para obtener información sobre los modelos de inserciones de texto, consulte Modelos de inserciones.
- Para saber cómo generan los tipos de tareas embeddings optimizados, consulta Elegir un tipo de tarea de embeddings.
- Para obtener información sobre los idiomas que admite cada modelo de inserción, consulta Idiomas admitidos para las inserciones de texto.
Antes de empezar
Antes de usar Text Embedding en un proyecto de GDC, sigue estos pasos:
- Configura un proyecto para Vertex AI.
- Elige uno de los modelos disponibles para las inserciones de texto, en función del idioma y del tipo de tarea.
- Habilita la API Text Embedding o Text Embedding Multilingual, según el modelo que quieras usar.
Concede a un usuario o a una cuenta de servicio el acceso adecuado a Text Embedding o Text Embedding Multilingual. Para obtener más información, consulta la siguiente documentación:
- Para obtener información sobre los roles necesarios, consulta Preparar permisos de gestión de identidades y accesos.
- Para obtener información sobre las vinculaciones de roles de las cuentas de servicio, consulta el artículo Configurar cuentas de servicio.
Debes usar el mismo proyecto para tus solicitudes de modelo, la cuenta de servicio y la vinculación de roles de gestión de identidades y accesos.
Obtener representaciones de texto de un fragmento de texto
Una vez que cumplas los requisitos, podrás usar los modelos Text Embedding o Text Embedding Multilingual para obtener las inserciones de texto de un fragmento de texto mediante la API o el SDK de Python.
En los siguientes ejemplos se usa el modelo text-embedding-004
.
Envía una solicitud REST a la API Text Embedding. De lo contrario, interactúa con el modelo desde una secuencia de comandos de Python para obtener una inserción de texto.
REST
Para obtener las inserciones de texto, envía una solicitud POST especificando el endpoint del modelo.
Para enviar una solicitud, sigue estos pasos:
Guarda el contenido de tu solicitud en un archivo JSON llamado
request.json
. El archivo debe tener el siguiente aspecto:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Haz la solicitud con la herramienta
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"
Haz los cambios siguientes:
TOKEN
: el token de autenticación que has obtenido.ENDPOINT
: el endpoint Text Embedding o Text Embedding Multilingual que uses en tu organización. Para obtener más información, consulta el estado del servicio y los endpoints.PROJECT
: el nombre de tu proyecto.MODEL
: el modelo que quieras usar. Estos son los valores disponibles:endpoint-text-embedding
para el modelo Text Embedding.endpoint-text-embedding-multilingual
para el modelo Text Embedding Multilingual.
Debes obtener una respuesta JSON similar a la siguiente:
{"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
Sigue estos pasos para obtener las inserciones de texto de una secuencia de comandos de Python:
Instala la biblioteca de cliente de la plataforma Vertex AI.
Guarda el contenido de tu solicitud en un archivo JSON llamado
request.json
. El archivo debe tener el siguiente aspecto:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Instala las bibliotecas de Python necesarias:
pip install absl-py
Crea un archivo de Python llamado
client.py
. El archivo debe tener el siguiente formato: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)
Haz los cambios siguientes:
PROJECT
: el nombre de tu proyecto.MODEL
: el modelo que quieras usar. Estos son los valores disponibles:endpoint-text-embedding
para el modelo Text Embedding.endpoint-text-embedding-multilingual
para el modelo Text Embedding Multilingual.
CERT_NAME
: el nombre del archivo de certificado de la autoridad de certificación (CA), comoorg-1-trust-bundle-ca.cert
. Solo necesitas este valor si te encuentras en un entorno de desarrollo. De lo contrario, omítelo.
Enviar una solicitud:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODEL
Haz los cambios siguientes:
TOKEN
: el token de autenticación que has obtenido.ENDPOINT
: el endpoint Text Embedding o Text Embedding Multilingual que uses en tu organización. Para obtener más información, consulta el estado del servicio y los endpoints.MODEL
: el modelo que quieras usar. Estos son los valores disponibles:endpoint-text-embedding
para el modelo Text Embedding.endpoint-text-embedding-multilingual
para el modelo Text Embedding Multilingual.
Debes obtener una respuesta JSON similar a la siguiente:
{"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"}