Nesta página, descrevemos como criar um embedding de texto usando a API Text Embedding.
A Vertex AI é compatível com embeddings de texto no Google Distributed Cloud (GDC) com isolamento físico pela API Text Embedding. O embedding de texto usa representações vetoriais.
O embedding de texto 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 seguinte documentação:
- Para saber mais sobre embeddings, consulte a visão geral de embeddings de texto.
- Para aprender mais sobre os modelos de embedding de texto, consulte Modelos de embeddings.
- Para saber como os tipos de tarefa geram embeddings otimizados, consulte Escolher um tipo de tarefa de embeddings.
- Para saber quais idiomas são aceitos em cada modelo de embedding, consulte Idiomas de embedding de texto compatíveis.
Antes de começar
Para gerar embeddings de texto em um projeto do GDC, solicite as permissões necessárias ao administrador.
Solicitar papéis do IAM
Entre em contato com o administrador do projeto do IAM para solicitar um dos seguintes papéis no namespace do projeto, dependendo do modelo que você quer usar:
- Desenvolvedor de embeddings de texto de IA (
ai-text-embedding-developer): gera embeddings de texto usando o modelo de embedding de texto. - AI Text Embedding Multilingual Developer
(
ai-text-embedding-multilingual-developer): gera embeddings de texto usando o modelo Text Embedding Multilingual.
Para mais informações sobre esses papéis, consulte Preparar permissões do IAM. Para informações sobre vinculações de papéis para contas de serviço, consulte Configurar contas de serviço.
Preparar o ambiente
Antes de usar o embedding de texto em um projeto do GDC, siga estas etapas:
- Configure um projeto para a Vertex AI.
- Escolha um dos modelos disponíveis para embeddings de texto, dependendo do idioma e do tipo de tarefa.
- Ative a API embedding de texto ou embedding de texto multilíngue, dependendo do modelo que você quer usar.
É preciso usar o mesmo projeto para as solicitações de modelo, a conta de serviço e a vinculação de papel do IAM.
Obter embeddings de texto para um snippet de texto
Depois de atender aos pré-requisitos, use os modelos de embedding de texto ou de embedding de texto multilíngue para receber embeddings 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 para a API de embedding de texto. Caso contrário, interaja com o modelo de 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:
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": "" } ] }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 embedding de texto ou embedding de texto multilíngue que você usa na sua organização. Para mais informações, confira 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-embeddingpara o modelo de embedding de texto.endpoint-text-embedding-multilingualpara o modelo multilíngue de embedding de texto.
O resultado será o 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 estas etapas para receber embeddings de texto de um script Python:
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": "" } ] }Instale as bibliotecas necessárias do Python:
pip install absl-pyCrie um arquivo Python chamado
client.py. O arquivo precisa ser semelhante ao 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:text-embeddingpara o modelo de embedding de texto.text-embedding-multilingualpara o modelo multilíngue de embedding de texto.
CERT_NAME: o nome do arquivo de certificado da autoridade certificadora (CA, na sigla em inglês), comoorg-1-trust-bundle-ca.cert. Você só precisará desse valor se estiver em um ambiente de desenvolvimento. Caso contrário, omita-o.
Envie uma solicitação:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODELSubstitua:
TOKEN: o token de autenticação que você recebeu.ENDPOINT: o endpoint de embedding de texto ou embedding de texto multilíngue que você usa na sua organização. Para mais informações, confira o status e os endpoints do serviço.MODEL: o modelo que você quer usar. Estes são os valores disponíveis:text-embeddingpara o modelo de embedding de texto.text-embedding-multilingualpara o modelo multilíngue de embedding de texto.
O resultado será o 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"}