Questa pagina descrive come creare un incorporamento di testo utilizzando l'API Text Embedding.
Vertex AI supporta gli incorporamenti di testo in Google Distributed Cloud (GDC) air-gapped tramite l'API Text Embedding. Text Embedding utilizza rappresentazioni vettoriali.
L'embedding di testo converte i dati testuali scritti in qualsiasi lingua supportata in vettori numerici. Queste rappresentazioni vettoriali sono progettate per acquisire il significato semantico e il contesto delle parole che rappresentano. I modelli di incorporamento di testo possono generare incorporamenti ottimizzati per vari tipi di attività, come il recupero di documenti, domande e risposte, classificazione e verifica dei fatti per il testo.
Per saperne di più sui concetti chiave utilizzati dagli incorporamenti di testo, consulta la documentazione seguente:
- Per scoprire di più sugli incorporamenti, consulta la panoramica degli incorporamenti di testo.
- Per scoprire di più sui modelli di embedding di testo, consulta Modelli di embedding.
- Per scoprire in che modo i tipi di attività generano embedding ottimizzati, consulta Scegliere un tipo di attività di embedding.
- Per informazioni sulle lingue supportate da ciascun modello di incorporamento, consulta Lingue di incorporamento di testo supportate.
Prima di iniziare
Prima di utilizzare l'incorporamento di testo in un progetto GDC, segui questi passaggi:
- Configura un progetto per Vertex AI.
- Scegli uno dei modelli disponibili per gli incorporamenti di testo, a seconda della lingua e del tipo di attività.
- Abilita l'API Text Embedding o Text Embedding Multilingual, a seconda del modello che vuoi utilizzare.
Concedi a un utente o a un account di servizio l'accesso appropriato a Text Embedding o Text Embedding Multilingual. Per ulteriori informazioni, consulta la seguente documentazione:
- Per informazioni sui ruoli richiesti, vedi Preparare le autorizzazioni IAM.
- Per informazioni sui binding dei ruoli per i service account, vedi Configurare i service account.
Devi utilizzare lo stesso progetto per le richieste del modello, il account di servizio e il binding del ruolo IAM.
Ottenere incorporamenti di testo per un frammento di testo
Dopo aver soddisfatto i prerequisiti, puoi utilizzare i modelli Text Embedding o Text Embedding Multilingual per ottenere gli embedding di testo per un frammento di testo utilizzando l'API o l'SDK per Python.
Gli esempi riportati di seguito utilizzano il modello text-embedding-004
.
Effettua una richiesta REST all'API Text Embedding. In caso contrario, interagisci con il modello da uno script Python per ottenere un embedding di testo.
REST
Per ottenere gli incorporamenti di testo, invia una richiesta POST specificando l'endpoint del modello.
Per presentare una richiesta:
Salva i contenuti della richiesta in un file JSON denominato
request.json
. Il file deve essere simile al seguente esempio:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Invia la richiesta utilizzando lo strumento
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"
Sostituisci quanto segue:
TOKEN
: il token di autenticazione che hai ottenuto.ENDPOINT
: l'endpoint Text Embedding o Text Embedding Multilingual che utilizzi per la tua organizzazione. Per saperne di più, visualizza lo stato e gli endpoint del servizio.PROJECT
: il nome del progetto.MODEL
: il modello che vuoi utilizzare. Di seguito sono riportati i valori disponibili:endpoint-text-embedding
per il modello Text Embedding.endpoint-text-embedding-multilingual
per il modello Text Embedding Multilingual.
Devi ottenere una risposta JSON simile alla seguente:
{"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
Per ottenere gli incorporamenti di testo da uno script Python:
Salva i contenuti della richiesta in un file JSON denominato
request.json
. Il file deve essere simile al seguente esempio:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Installa le librerie Python richieste:
pip install absl-py
Crea un file Python denominato
client.py
. Il file deve essere simile all'esempio seguente: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)
Sostituisci quanto segue:
PROJECT
: il nome del progetto.MODEL
: il modello che vuoi utilizzare. Di seguito sono riportati i valori disponibili:endpoint-text-embedding
per il modello Text Embedding.endpoint-text-embedding-multilingual
per il modello Text Embedding Multilingual.
CERT_NAME
: il nome del file del certificato dell'autorità di certificazione (CA), ad esempioorg-1-trust-bundle-ca.cert
. Hai bisogno di questo valore solo se ti trovi in un ambiente di sviluppo. In caso contrario, omettilo.
Invia una richiesta:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODEL
Sostituisci quanto segue:
TOKEN
: il token di autenticazione che hai ottenuto.ENDPOINT
: l'endpoint Text Embedding o Text Embedding Multilingual che utilizzi per la tua organizzazione. Per saperne di più, visualizza lo stato e gli endpoint del servizio.MODEL
: il modello che vuoi utilizzare. Di seguito sono riportati i valori disponibili:endpoint-text-embedding
per il modello Text Embedding.endpoint-text-embedding-multilingual
per il modello Text Embedding Multilingual.
Devi ottenere una risposta JSON simile alla seguente:
{"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"}