1. Introduzione agli Embeddings
1.1. Cosa sono gli Embeddings
Gli embeddings, nel campo del machine learning, specialmente nel trattare problemi di elaborazione del linguaggio naturale (NLP), sono una tecnica per trasformare i dati testuali in vettori numerici. Nel linguaggio umano, il significato delle parole e delle frasi è determinato dal loro contesto e uso. Lo scopo degli embeddings è catturare la semantica di queste unità linguistiche, consentendo ai computer di comprenderle e elaborarle.
L'idea centrale degli embeddings è mappare parole con significati simili in punti vicini in uno spazio matematico, rappresentando le parole come punti in uno spazio ad alta dimensionalità. In questo modo, le parole con significati semantici vicini (ad esempio, "re" e "regina") saranno vicine nello spazio. Gli embeddings sono tipicamente composti da array in virgola mobile, consentendo anche a frammenti di testo molto diversi (come "cane" e "canino") di avere rappresentazioni di embedding simili.
Suggerimento: Come sviluppatore di applicazioni, puoi semplicemente comprendere che per due frasi di testo con significati simili, la loro similarità vettoriale di embedding è alta.
1.2. Applicazioni degli Embeddings
Gli embeddings sono ampiamente utilizzati in vari scenari, ecco alcuni casi d'uso principali:
- Ricerca: Utilizzare le caratteristiche degli embeddings per ordinare i risultati della ricerca in base alla rilevanza rispetto al testo della query.
- Clustering: Gli embeddings possono aiutare a identificare e categorizzare frammenti di testo semanticamente simili.
- Sistemi di Raccomandazione: Raccomandare elementi basati sulla similarità può aiutare a scoprire e raccomandare altri elementi simili a quelli conosciuti.
- Individuazione di Anomalie: Gli embeddings possono essere utilizzati per identificare punti dati significativamente diversi dal dataset principale.
- Misurazione della Diversità: Gli embeddings possono essere utilizzati anche per analizzare la distribuzione di similarità tra diversi testi.
- Classificazione: Confrontare il testo con un insieme di embeddings di etichette conosciute per classificarlo nella categoria più simile.
2. Introduzione agli Embeddings di OpenAI
2.1. Panoramica dei Modelli di Embeddings di OpenAI
OpenAI fornisce modelli di embedding di terza generazione, tra cui text-embedding-3-small
e text-embedding-3-large
. Questi modelli si basano sulla tecnologia unica di apprendimento profondo di OpenAI, mirando a fornire prestazioni altamente multilingue mentre cercano anche di ridurre i costi.
Questi modelli hanno caratteristiche uniche nel trattare gli embeddings. Ad esempio, text-embedding-3-small
offre vettori di embedding a 1536 dimensioni, mentre text-embedding-3-large
fornisce vettori di embedding a 3072 dimensioni per coprire caratteristiche di testo più complesse. Regolando i parametri, è possibile controllare la dimensionalità degli embeddings per soddisfare le esigenze specifiche degli scenari applicativi.
2.2. Selezione e Utilizzo del Modello
Scegliere il modello di embedding opportuno dipende dai requisiti specifici dell'applicazione. Ecco come effettuare la selezione in diversi scenari applicativi:
-
In scenari incentrati sulle prestazioni: Se è necessario catturare informazioni semantiche più dettagliate, ad esempio in sistemi di raccomandazione dettagliati o classificazioni di testo ad alta precisione, di solito si consiglia di utilizzare
text-embedding-3-large
. Anche se è più costoso dei modelli più piccoli, può fornire una rappresentazione più ricca delle caratteristiche del testo. -
In applicazioni sensibili ai costi: Per applicazioni che richiedono l'elaborazione di una grande quantità di dati ma non hanno particolari requisiti di precisione, come l'esplorazione iniziale dei dati o la prototipazione rapida,
text-embedding-3-small
è una scelta più economica. Mantiene prestazioni relativamente alte riducendo significativamente i costi. -
Ambienti multilingua: Questi modelli di embedding hanno alte prestazioni multilingue, rendendoli particolarmente utili in scenari cross-linguistici o multilingue, rendendoli una scelta ideale per le applicazioni globali.
Scegliere il giusto modello di embedding dipenderà dai requisiti specifici, dalla complessità dei dati e dal punto di equilibrio desiderato tra prestazioni e costi.
3. Come Utilizzare gli Embeddings
3.1 Utilizzo di curl
per chiamare l'API degli embedding
curl
è uno strumento comune a riga di comando per inviare richieste HTTP. L'esempio seguente mostra come utilizzare curl
per ottenere la rappresentazione di embedding del testo:
curl https://api.openai.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"input": "Il machine learning è un ramo dell'intelligenza artificiale.",
"model": "text-embedding-3-small"
}'
Nel comando sopra, la variabile $OPENAI_API_KEY
contiene la chiave API OpenAI dell'utente, che va sostituita con una chiave valida per l'uso effettivo.
Dopo l'esecuzione di questo comando, l'API degli embedding di OpenAI restituirà una risposta contenente la rappresentazione dell'embedding del testo. Ecco un esempio di risultato della chiamata API:
{
"oggetto": "lista",
"dati": [
{
"oggetto": "embedding",
"indice": 0,
"embedding": [ // Qui si trova il vettore delle caratteristiche
-0,006929283495992422,
-0,005336422007530928,
... // Numeri rimanenti omessi per la visualizzazione
-4,547132266452536e-05,
-0,024047505110502243
]
}
],
"modello": "text-embedding-3-small",
"utilizzo": {
"prompt_tokens": 5,
"total_tokens": 5
}
}
3.2 Utilizzo del client Python per chiamare l'API degli embedding
Oltre all'utilizzo di curl
per chiamare direttamente l'API da riga di comando, è possibile utilizzare anche un client Python. Questo richiede l'installazione preliminare della libreria ufficiale openai
. Ecco un esempio di come ottenere gli embedding del testo usando Python:
import openai
openai.api_key = 'LA_TUA_OPENAI_API_KEY' # Sostituisci con la tua chiave API OpenAI
risposta = openai.Embedding.create(
input="L'intelligenza artificiale sta cambiando il mondo.",
model="text-embedding-3-small"
)
vettore_embedding = risposta['dati'][0]['embedding']
print(vettore_embedding)
Eseguendo questo script Python, otterrai un vettore di embedding simile a quando si utilizza curl
. Questo vettore è una lista di numeri in virgola mobile, che rappresentano la rappresentazione numerica del testo di input nello spazio di embedding.
Il risultato della chiamata è il seguente:
[-0,0032198824, 0,0022555287, ..., 0,0015886585, -0,0021505365]
3.2 Gestione dei vettori di embedding
OpenAI fornisce solo il modello di calcolo della vettorizzazione del testo degli embedding. Se si desidera utilizzare gli embedding per implementare funzioni come la ricerca di similarità tra testi, è necessario apprendere su database vettoriali, come Qdrant, Chroma e Milvus.
Si prega di fare riferimento ai seguenti tutorial sui database vettoriali: