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 ".

  • Crea un progetto " Red Hat AI Inference ".

  • 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.

  • Effettuare l'autenticazione all'API.

  • 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>/inference
    

    Sostituisci <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 dimensions per 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)