Acessar incorporações de texto

Nesta página, descrevemos como criar um embedding de texto usando a API Text Embedding.

A Vertex AI oferece suporte a embeddings de texto no Google Distributed Cloud (GDC) isolado pela API Text Embedding. O embedding de texto usa representações vetoriais.

O Text Embedding converte dados textuais escritos em qualquer idioma compatível em vetores numéricos. Essas representações vetoriais são projetadas para capturar o significado semântico e o contexto das palavras que representam. Os modelos de embedding de texto podem gerar embeddings otimizados para vários tipos de tarefas, como recuperação de documentos, perguntas e respostas, classificação e verificação de fatos para texto.

Para mais informações sobre os principais conceitos usados pelos embeddings de texto, consulte a documentação a seguir:

Antes de começar

Antes de usar a incorporação de texto em um projeto do GDC, siga estas etapas:

  1. Configure um projeto para a Vertex AI.
  2. Escolha um dos modelos disponíveis para embeddings de texto, dependendo do idioma e do tipo de tarefa.
  3. Ative a API Text Embedding ou Text Embedding Multilingual, dependendo do modelo que você quer usar.
  4. Conceda a um usuário ou conta de serviço o acesso adequado ao Text Embedding ou Text Embedding Multilingual. Para mais informações, consulte a seguinte documentação:

  5. Instale as bibliotecas de cliente da Vertex AI.

  6. Receber um token de autenticação.

Use o mesmo projeto para as solicitações de modelo, a conta de serviço e a vinculação de papéis do IAM.

Obter embeddings de texto para um snippet de texto

Depois de atender aos pré-requisitos, use os modelos de incorporação de texto ou incorporação de texto multilíngue para receber incorporações de texto para um snippet de texto usando a API ou o SDK para Python.

Os exemplos a seguir usam o modelo text-embedding-004.

Faça uma solicitação REST à API Text Embedding. Caso contrário, interaja com o modelo em um script Python para receber um embedding de texto.

REST

Para receber embeddings de texto, envie uma solicitação POST especificando o endpoint do modelo.

Siga estas etapas para fazer uma solicitação:

  1. Salve o conteúdo da solicitação em um arquivo JSON chamado request.json. O arquivo precisa ser semelhante ao exemplo a seguir:

    {
      "instances": [
        {
          "content": "What is life?",
          "task_type": "",
          "title": ""
        }
      ]
    }
    
  2. Faça a solicitação usando a ferramenta 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"
    

    Substitua:

    • TOKEN: o token de autenticação que você recebeu.
    • ENDPOINT: o endpoint de incorporação de texto ou incorporação de texto multilíngue que você usa na sua organização. Para mais informações, consulte o status e os endpoints do serviço.
    • PROJECT: o nome do projeto.
    • MODEL: o modelo que você quer usar. Estes são os valores disponíveis:

      • endpoint-text-embedding para o modelo de embedding de texto.
      • endpoint-text-embedding-multilingual para o modelo de incorporação de texto multilíngue.

Você vai receber uma resposta JSON semelhante a esta:

{"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

Siga estas etapas para receber embeddings de texto de um script Python:

  1. Instale a biblioteca de cliente da plataforma Vertex AI.

  2. Salve o conteúdo da solicitação em um arquivo JSON chamado request.json. O arquivo precisa ser semelhante ao exemplo a seguir:

    {
      "instances": [
        {
          "content": "What is life?",
          "task_type": "",
          "title": ""
        }
      ]
    }
    
  3. Instale as bibliotecas necessárias do Python:

    pip install absl-py
    
  4. Crie um arquivo Python chamado client.py. O arquivo precisa ser parecido com o exemplo a seguir:

    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)
    

    Substitua:

    • PROJECT: o nome do projeto.
    • MODEL: o modelo que você quer usar. Estes são os valores disponíveis:
      • endpoint-text-embedding para o modelo de embedding de texto.
      • endpoint-text-embedding-multilingual para o modelo de incorporação de texto multilíngue.
    • CERT_NAME: o nome do arquivo de certificado da autoridade de certificação (CA), como org-1-trust-bundle-ca.cert. Você só precisa desse valor se estiver em um ambiente de desenvolvimento. Caso contrário, omita-o.
  5. Envie uma solicitação:

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

    Substitua:

    • TOKEN: o token de autenticação que você recebeu.
    • ENDPOINT: o endpoint de incorporação de texto ou incorporação de texto multilíngue que você usa na sua organização. Para mais informações, consulte o status e os endpoints do serviço.
    • MODEL: o modelo que você quer usar. Estes são os valores disponíveis:

      • endpoint-text-embedding para o modelo de embedding de texto.
      • endpoint-text-embedding-multilingual para o modelo de incorporação de texto multilíngue.

Você vai receber uma resposta JSON semelhante a esta:

{"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"}