Obtener incorporaciones de texto

En esta página, se describe cómo crear un embedding de texto con la API de Embedding de texto.

Vertex AI admite embeddings de texto en Google Distributed Cloud (GDC) aislado a través de la API de embeddings de texto. El embedding de texto usa representaciones vectoriales.

El embedding de texto convierte los datos textuales escritos en cualquier idioma compatible en vectores numéricos. Estas representaciones vectoriales están diseñadas para capturar el significado y el contexto semántico de las palabras que representan. Los modelos de embedding de texto pueden generar embeddings optimizados para varios tipos de tareas, como la recuperación de documentos, preguntas y respuestas, clasificación y verificación de hechos para texto.

Para obtener más información sobre los conceptos clave que usan los embeddings de texto, consulta la siguiente documentación:

Antes de comenzar

Para generar embeddings de texto en un proyecto de GDC, solicita los permisos necesarios a tu administrador.

Solicita roles de IAM

Comunícate con el administrador de proyectos de IAM para solicitar uno de los siguientes roles en el espacio de nombres de tu proyecto, según el modelo que quieras usar:

  • Desarrollador de embeddings de texto de IA (ai-text-embedding-developer): Genera embeddings de texto con el modelo de embedding de texto.
  • Desarrollador de embeddings de texto multilingüe de IA (ai-text-embedding-multilingual-developer): Genera embeddings de texto con el modelo de embeddings de texto multilingüe.

Para obtener más información sobre estos roles, consulta Prepara los permisos de IAM. Para obtener información sobre las vinculaciones de roles para las cuentas de servicio, consulta Configura cuentas de servicio.

Prepara el entorno

Antes de usar el embedding de texto en un proyecto de GDC, sigue estos pasos:

  1. Configura un proyecto para Vertex AI.
  2. Elige uno de los modelos disponibles para los embeddings de texto, según el idioma y el tipo de tarea.
  3. Habilita la API de Embedding de texto o de Embedding de texto multilingüe, según el modelo que quieras usar.
  4. Instala las bibliotecas cliente de Vertex AI.

  5. Obtén un token de autenticación.

Debes usar el mismo proyecto para las solicitudes de modelos, la cuenta de servicio y la vinculación de roles de IAM.

Obtén incorporaciones de texto para un fragmento de texto

Después de cumplir con los requisitos previos, puedes usar los modelos de embedding de texto o de embedding de texto multilingüe para obtener embeddings de texto para un fragmento de texto con la API o el SDK para Python.

En los siguientes ejemplos, se usa el modelo text-embedding-004.

Realizar una solicitud de REST a la API de embeddings de texto De lo contrario, interactúa con el modelo desde una secuencia de comandos de Python para obtener un embedding de texto.

REST

Para obtener embeddings de texto, envía una solicitud POST especificando el extremo del modelo.

Sigue estos pasos para realizar una solicitud:

  1. Guarda el contenido de la solicitud en un archivo JSON llamado request.json. El archivo debe verse como en el siguiente ejemplo:

    {
      "instances": [
        {
          "content": "What is life?",
          "task_type": "",
          "title": ""
        }
      ]
    }
    
  2. Realiza la solicitud con la herramienta de 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"
    

    Reemplaza lo siguiente:

    • TOKEN: Es el token de autenticación que obtuviste.
    • ENDPOINT: Es el extremo de Text Embedding o Text Embedding Multilingual que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.
    • PROJECT: Es el nombre de tu proyecto.
    • MODEL: el modelo que deseas usar. Los siguientes son los valores disponibles:

      • endpoint-text-embedding para el modelo de embedding de texto.
      • endpoint-text-embedding-multilingual para el modelo de embedding de texto multilingüe.

El resultado es similar a lo 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 embeddings de texto de una secuencia de comandos de Python:

  1. Instala la biblioteca cliente de Vertex AI Platform.

  2. Guarda el contenido de la solicitud en un archivo JSON llamado request.json. El archivo debe verse como en el siguiente ejemplo:

    {
      "instances": [
        {
          "content": "What is life?",
          "task_type": "",
          "title": ""
        }
      ]
    }
    
  3. Instala las bibliotecas de Python necesarias:

    pip install absl-py
    
  4. Crea un archivo de Python llamado client.py. El archivo debe verse como el siguiente ejemplo:

    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)
    

    Reemplaza lo siguiente:

    • PROJECT: Es el nombre de tu proyecto.
    • MODEL: el modelo que deseas usar. Los siguientes son los valores disponibles:
      • text-embedding para el modelo de embedding de texto.
      • text-embedding-multilingual para el modelo de embedding de texto multilingüe.
    • CERT_NAME: Es el nombre del archivo de certificado de la autoridad certificada (AC), como org-1-trust-bundle-ca.cert. Solo necesitas este valor si te encuentras en un entorno de desarrollo. De lo contrario, omítelo.
  5. Envía una solicitud:

    python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODEL
    

    Reemplaza lo siguiente:

    • TOKEN: Es el token de autenticación que obtuviste.
    • ENDPOINT: Es el extremo de Text Embedding o Text Embedding Multilingual que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.
    • MODEL: el modelo que deseas usar. Los siguientes son los valores disponibles:

      • text-embedding para el modelo de embedding de texto.
      • text-embedding-multilingual para el modelo de embedding de texto multilingüe.

El resultado es similar a lo 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"}