Questa pagina descrive come creare un text embedding utilizzando l'API Text Embedding.
Vertex AI supporta i text embedding in Google Distributed Cloud (GDC) con air gap tramite l'API Text Embedding. Il text embedding utilizza rappresentazioni vettoriali.
Text Embedding converte i dati testuali scritti in qualsiasi lingua supportata in vettori numerici. Queste rappresentazioni vettoriali sono progettate per catturare il significato semantico e il contesto delle parole che rappresentano. I modelli di text embedding possono generare embedding ottimizzati per vari tipi di attività, come il recupero di documenti, domande e risposte, la classificazione e la verifica dei fatti per il testo.
Per saperne di più sui concetti chiave utilizzati dai text embedding, consulta la seguente documentazione:
- Per scoprire di più sugli embedding, consulta la panoramica dei text embedding.
- Per scoprire di più sui modelli di text embedding, consulta Modelli di embedding.
- Per scoprire come i tipi di attività generano embedding ottimizzati, consulta Scegli un tipo di attività di embedding.
- Per informazioni sulle lingue supportate da ciascun modello di embedding, consulta Lingue supportate per il text embedding.
Prima di iniziare
Per generare text embedding in un progetto GDC, richiedi le autorizzazioni necessarie all'amministratore.
Richiedi ruoli IAM
Contatta l'amministratore del progetto IAM per richiedere uno dei seguenti ruoli nello spazio dei nomi del progetto, a seconda del modello che vuoi utilizzare:
- AI Text Embedding Developer (
ai-text-embedding-developer): genera text embedding utilizzando il modello Text Embedding. - AI Text Embedding Multilingual Developer
(
ai-text-embedding-multilingual-developer): genera text embedding utilizzando il modello Text Embedding Multilingual.
Per saperne di più su questi ruoli, consulta Prepara le autorizzazioni IAM. Per informazioni sulle associazioni dei ruoli per i service account, consulta Configura i service account.
prepara l'ambiente
Prima di utilizzare Text Embedding in un progetto GDC, segui questi passaggi:
- Configura un progetto per Vertex AI.
- Scegli uno dei modelli disponibili per i text embedding, 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.
Devi utilizzare lo stesso progetto per le richieste del modello, il account di servizio e l'associazione del ruolo IAM.
Ottieni text embedding per uno snippet di testo
Dopo aver soddisfatto i prerequisiti, puoi utilizzare i modelli Text Embedding o Text Embedding Multilingual per ottenere text embedding per uno snippet di testo utilizzando l'API o l'SDK per Python.
Gli esempi seguenti 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 text embedding.
REST
Per ottenere i text embedding, invia una richiesta POST specificando l'endpoint del modello.
Per presentare una richiesta, segui questi passaggi:
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": "" } ] }Effettua 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 del servizio e gli endpoint.PROJECT: il nome del progetto.MODEL: il modello che vuoi utilizzare. Di seguito sono riportati i valori disponibili:endpoint-text-embeddingper il modello di text embedding.endpoint-text-embedding-multilingualper il modello Text Embedding Multilingual.
L'output è simile al 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
Segui questi passaggi per ottenere gli embedding 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-pyCrea un file Python denominato
client.py. Il file deve essere simile al seguente esempio: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:text-embeddingper il modello di text embedding.text-embedding-multilingualper 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. Questo valore è necessario solo se ti trovi in un ambiente di sviluppo. In caso contrario, ometterlo.
Invia una richiesta:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODELSostituisci 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 del servizio e gli endpoint.MODEL: il modello che vuoi utilizzare. Di seguito sono riportati i valori disponibili:text-embeddingper il modello di text embedding.text-embedding-multilingualper il modello Text Embedding Multilingual.
L'output è simile al 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"}