Esta página descreve como criar uma incorporação de texto através da API Text Embedding.
O Vertex AI suporta incorporações de texto no Google Distributed Cloud (GDC) com isolamento de ar através da API Text Embedding. A incorporação de texto usa representações vetoriais.
A incorporação de texto converte dados textuais escritos em qualquer idioma suportado em vetores numéricos. Estas representações vetoriais foram concebidas para captar o significado semântico e o contexto das palavras que representam. Os modelos de incorporação de texto podem gerar incorporações otimizadas para vários tipos de tarefas, como obtenção de documentos, perguntas e respostas, classificação e validação de factos para texto.
Para mais informações sobre os conceitos-chave usados pelas incorporações de texto, consulte a seguinte documentação:
- Para saber mais sobre as incorporações, consulte a vista geral das incorporações de texto.
- Para saber mais sobre os modelos de incorporação de texto, consulte Modelos de incorporações.
- Para saber como os tipos de tarefas geram incorporações otimizadas, consulte o artigo Escolha um tipo de tarefa de incorporações.
- Para obter informações sobre os idiomas suportados por cada modelo de incorporação, consulte o artigo Idiomas de incorporação de texto suportados.
Antes de começar
Antes de usar a incorporação de texto num projeto da GDC, siga estes passos:
- Configure um projeto para o Vertex AI.
- Escolha um dos modelos disponíveis para incorporações de texto, consoante o idioma e o tipo de tarefa.
- Ative a API Text Embedding ou Text Embedding Multilingual, consoante o modelo que quer usar.
Conceda a um utilizador ou a uma conta de serviço o acesso adequado à API Text Embedding ou Text Embedding Multilingual. Para mais informações, consulte a seguinte documentação:
- Para informações sobre as funções necessárias, consulte o artigo Prepare as autorizações de IAM.
- Para ver informações sobre as associações de funções para contas de serviço, consulte o artigo Configure contas de serviço.
Tem de usar o mesmo projeto para os pedidos de modelos, a conta de serviço e a associação de funções do IAM.
Obtenha incorporações de texto para um fragmento de texto
Depois de cumprir os pré-requisitos, pode usar os modelos Text Embedding ou Text Embedding Multilingual para obter incorporações de texto para um fragmento de texto através da API ou do SDK para Python.
Os exemplos seguintes usam o modelo text-embedding-004
.
Faça um pedido REST à API Text Embedding. Caso contrário, interaja com o modelo a partir de um script Python para obter uma incorporação de texto.
REST
Para obter incorporações de texto, envie um pedido POST especificando o ponto final do modelo.
Siga estes passos para fazer um pedido:
Guarde o conteúdo do pedido num ficheiro JSON denominado
request.json
. O ficheiro tem de ter o seguinte aspeto:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Faça o pedido através da
curl
ferramenta: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 o seguinte:
TOKEN
: o token de autenticação que obteve.ENDPOINT
: o ponto final Text Embedding ou Text Embedding Multilingual que usa para a sua organização. Para mais informações, veja o estado do serviço e os pontos finais.PROJECT
: o nome do seu projeto.MODEL
: o modelo que quer usar. Seguem-se os valores disponíveis:endpoint-text-embedding
para o modelo de incorporação de texto.endpoint-text-embedding-multilingual
para o modelo Text Embedding Multilingual.
Tem de obter uma resposta JSON semelhante à seguinte:
{"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 estes passos para obter incorporações de texto a partir de um script Python:
Guarde o conteúdo do pedido num ficheiro JSON denominado
request.json
. O ficheiro tem de ter o seguinte aspeto:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Instale as bibliotecas Python necessárias:
pip install absl-py
Crie um ficheiro Python denominado
client.py
. O ficheiro tem de ter o seguinte aspeto: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 o seguinte:
PROJECT
: o nome do seu projeto.MODEL
: o modelo que quer usar. Seguem-se os valores disponíveis:endpoint-text-embedding
para o modelo de incorporação de texto.endpoint-text-embedding-multilingual
para o modelo Text Embedding Multilingual.
CERT_NAME
: o nome do ficheiro de certificado da autoridade de certificação (AC), comoorg-1-trust-bundle-ca.cert
. Só precisa deste valor se estiver num ambiente de programação. Caso contrário, omita-o.
Envie uma solicitação:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODEL
Substitua o seguinte:
TOKEN
: o token de autenticação que obteve.ENDPOINT
: o ponto final Text Embedding ou Text Embedding Multilingual que usa para a sua organização. Para mais informações, veja o estado do serviço e os pontos finais.MODEL
: o modelo que quer usar. Seguem-se os valores disponíveis:endpoint-text-embedding
para o modelo de incorporação de texto.endpoint-text-embedding-multilingual
para o modelo Text Embedding Multilingual.
Tem de obter uma resposta JSON semelhante à seguinte:
{"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"}