Incorporamenti

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:

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.