L'API Gemini supporta diversi modelli di embedding che generano incorporamenti per parole, frasi, codice e frasi. Gli embedding risultanti possono essere utilizzati per attività come ricerca semantica, classificazione del testo e clustering, tra molte altre.
Che cosa sono gli incorporamenti?
Gli incorporamenti sono rappresentazioni numeriche del testo (o di altri formati multimediali) che acquisiscono le relazioni tra gli input. Gli embedding di testo funzionano convertendo il testo in array di numeri in virgola mobile, chiamati vettori. Questi vettori sono progettati per cogliere il significato del testo. La lunghezza dell'array di incorporamento è chiamata dimensionalità del vettore. Un passaggio di testo potrebbe essere rappresentato da un vettore contenente centinaia di dimensioni.
Gli incorporamenti acquisiscono il significato semantico e il contesto, il che si traduce in un testo con significati simili che ha incorporamenti "più vicini". Ad esempio, le frasi "Ho portato il mio cane dal veterinario" e "Ho portato il mio gatto dal veterinario" avranno embedding molto vicini tra loro nello spazio vettoriale.
Puoi utilizzare gli embedding per confrontare testi diversi e capire come sono correlati. Ad esempio, se gli embedding del testo "gatto" e "cane" sono vicini, puoi dedurre che queste parole sono simili per significato, contesto o entrambi. Ciò consente una serie di casi d'uso comuni dell'IA.
Genera embedding
Utilizza il metodo embedContent
per generare gli incorporamenti di testo:
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
result = client.models.embed_content(
model="gemini-embedding-exp-03-07",
contents="What is the meaning of life?")
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
const response = await ai.models.embedContent({
model: 'gemini-embedding-exp-03-07',
contents: 'What is the meaning of life?',
});
console.log(response.embeddings);
}
main();
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
em := client.EmbeddingModel("gemini-embedding-exp-03-07")
res, err := em.EmbedContent(ctx, genai.Text("What is the meaning of life?"))
if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
"content": {
"parts":[{
"text": "What is the meaning of life?"}]}
}'
Puoi anche generare embedding per più chunk contemporaneamente passandoli come elenco di stringhe.
Tipi di attività
Quando crei sistemi di Retrieval Augmented Generation (RAG), un approccio comune è utilizzare gli incorporamenti di testo per eseguire una ricerca di somiglianza. In alcuni casi, questo può portare a un peggioramento della qualità, perché le domande e le relative risposte non sono semanticamente simili. Ad esempio, una domanda come "Perché il cielo è blu?" e la relativa risposta "La dispersione della luce solare causa il colore blu" hanno significati nettamente diversi come affermazioni, il che significa che un sistema RAG non li riconoscerà automaticamente come correlati.
I tipi di attività ti consentono di generare embedding ottimizzati per attività specifiche, risparmiando tempo e costi e migliorando le prestazioni.
from google import genai
from google.genai import types
client = genai.Client(api_key="GEMINI_API_KEY")
result = client.models.embed_content(
model="gemini-embedding-exp-03-07",
contents="What is the meaning of life?",
config=types.EmbedContentConfig(task_type="SEMANTIC_SIMILARITY")
)
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
const response = await ai.models.embedContent({
model: 'gemini-embedding-exp-03-07',
contents: 'What is the meaning of life?',
config: {
taskType: "SEMANTIC_SIMILARITY",
}
});
console.log(response.embeddings);
}
main();
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
"content": {
"parts":[{
"text": "What is the meaning of life?"}]},
"taskType": "SEMANTIC_SIMILARITY"
}'
Tipi di attività supportati
Tipo di attività | Descrizione |
---|---|
SEMANTIC_SIMILARITY |
Viene utilizzato per generare incorporamenti ottimizzati per valutare la somiglianza del testo. |
CLASSIFICATION |
Viene utilizzato per generare embedding ottimizzati per classificare i testi in base a etichette predefinite. |
CLUSTERING |
Viene utilizzato per generare incorporamenti ottimizzati per raggruppare i testi in base alle loro somiglianze. |
RETRIEVAL_DOCUMENT , RETRIEVAL_QUERY , QUESTION_ANSWERING e FACT_VERIFICATION |
Utilizzato per generare embedding ottimizzati per la ricerca di documenti o il recupero di informazioni. |
CODE_RETRIEVAL_QUERY |
Utilizzato per recuperare un blocco di codice in base a una query in linguaggio naturale, ad esempio per ordinare un array o invertire una lista connessa. Le incorporazioni dei blocchi di codice vengono calcolate utilizzando RETRIEVAL_DOCUMENT . |
Casi d'uso
Gli embedding di testo vengono utilizzati in una serie di casi d'uso comuni dell'IA, ad esempio:
Ricerca di informazioni:puoi utilizzare gli incorporamenti per recuperare testo semanticamente simile a un testo di input.
Clustering:il confronto di gruppi di embedding può aiutare a identificare tendenze nascoste.
Database vettoriale: quando implementi diversi casi d'uso di embedding in produzione, è normale archiviare gli embedding in un database vettoriale.
Classificazione:puoi addestrare un modello utilizzando gli embedding per classificare i documenti in categorie.
Modelli di embedding
L'API Gemini offre tre modelli che generano incorporamenti di testo:
Passaggi successivi
Consulta il notebook di avvio rapido per gli embedding.