Creazione di embedding
Gli embedding trasformano il testo in vettori numerici che ne catturano il significato semantico, consentendo ai modelli di intelligenza artificiale di confrontare e recuperare contenuti semanticamente simili. Per un tutorial che illustra come gli embedding possano migliorare le risposte di completamento delle chat fornendo a un modello un contesto pertinente tratto dalla propria base di conoscenza, consulta il documento “Migliorare i completamenti delle chat con gli embedding vettoriali e RAG ”. Per un elenco completo dei parametri disponibili, consultare OpenAI Create embeddings.
Prima di iniziare
-
Crea un account " IBM Cloud " con pagamento a consumo o in abbonamento. Non sono supportati gli account di prova. Per ulteriori informazioni o per passare a un account di livello superiore, consulta la sezione " Tipi di account ".
-
Assicurati di disporre del ruolo "Writer" o di un ruolo superiore nel servizio " Red Hat AI Inference ". Per ulteriori informazioni, vedi Gestione dell'accesso IAM.
-
Ottieni il tuo endpoint API. Tutte le richieste API utilizzano il seguente formato di base URL:
https://us-east.rhai.ibm.com/v1/projects/<project_id>/inferenceSostituisci
<project_id>con l'ID del tuo progetto. Per trovarlo, vai su Red Hat AI Inference projects e apri il tuo progetto.
Per verificare se un modello supporta gli embedding, elenca i modelli oppure recupera un modello in base all'ID e verifica che il parametro supports_embeddings sia impostato su true``.
Formati e limiti di immissione
L'API di embedding supporta i seguenti formati di input per il parametro input :
- Stringa
- Una singola stringa di testo da convertire in un vettore di embedding.
- Array di stringhe
- Un array di stringhe di testo, in cui ogni stringa viene trasformata in un vettore di embedding distinto.
- Matrice di numeri
- Un array di numeri interi che rappresenta i token, il quale viene convertito in un vettore di embedding.
- Matrice di matrici di numeri
- Un array di array di token, in cui ogni array di token viene trasformato in un vettore di embedding distinto.
Quando si inviano dati per gli embedding, si applicano i seguenti limiti e comportamenti:
- Limiti relativi ai token di input
- Ogni modello di embedding definisce il proprio limite massimo di token in ingresso in base alle dimensioni della finestra di contesto.
- Valutazione degli input dell'array
- Se si invia un array composto da più campi, il limite di caratteri per ciascun campo viene applicato individualmente a ogni testo.
- Superamento dei limiti
- Se anche un solo testo inserito nell'array supera il limite di token del modello, l'API rifiuta l'intera richiesta e restituisce un errore "
HTTP 400 Bad Request".
Dimensioni del prodotto finito
Il risultato di una richiesta di embedding è un vettore ad alta dimensionalità. Si considerino le seguenti caratteristiche dei vettori di output:
- Qualità della rappresentazione
- Un vettore di output di dimensioni maggiori può rappresentare maggiori dettagli e cogliere significati semantici più granulari. Tuttavia, i vettori più grandi richiedono maggiore memoria per l'archiviazione e la ricerca, il che può comportare un aumento dell'utilizzo delle risorse.
- Configurazione delle dimensioni del vettore
- La dimensione del vettore di output dipende dal modello. Sebbene l'API degli embedding supporti un parametro
dimensionsper configurare la dimensione del vettore di output, tale parametro viene utilizzato solo se il modello selezionato è compatibile con la configurazione delle dimensioni.
Creazione di embedding
Utilizza l'API degli embedding per convertire uno o più testi inseriti in rappresentazioni vettoriali. Gli esempi seguenti illustrano come creare embedding tramite l'API utilizzando cURL o il client OpenAI Python.
curl https://us-east.rhai.ibm.com/v1/projects/<project_id>/inference/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <bearer_token>" \
-d '{
"model": "granite-embedding-278m-multilingual",
"input": [
"Manage your projects from the IBM Cloud console.",
"Use the API to automate workflows and integrate AI into your applications.",
"IBM Cloud offers a range of AI and machine learning services for enterprise applications."
]
}'
from openai import OpenAI
client = OpenAI(
api_key="<bearer_token>",
base_url="https://us-east.rhai.ibm.com/v1/projects/<project_id>/inference",
)
response = client.embeddings.create(
model="granite-embedding-278m-multilingual",
input=[
"Manage your projects from the IBM Cloud console.",
"Use the API to automate workflows and integrate AI into your applications.",
"IBM Cloud offers a range of AI and machine learning services for enterprise applications."
]
)
print(response.data[0].embedding)