Einbettungen

Die Gemini API unterstützt mehrere Einbettungsmodelle, die Einbettungen für Wörter, Wortgruppen, Code und Sätze generieren. Die resultierenden Einbettungen können dann unter anderem für Aufgaben wie die semantische Suche, die Textklassifizierung und das Clustering verwendet werden.

Was sind Einbettungen?

Einbettungen sind numerische Darstellungen von Text (oder anderen Medienformaten), die Beziehungen zwischen Eingaben erfassen. Bei Text-Embeddings werden Texte in Arrays von Gleitkommazahlen umgewandelt, die als Vektoren bezeichnet werden. Diese Vektoren sollen die Bedeutung des Textes erfassen. Die Länge des Einbettungsarrays wird als Dimensionalität des Vektors bezeichnet. Ein Textabschnitt kann durch einen Vektor mit Hunderten von Dimensionen dargestellt werden.

Einbettungen erfassen die semantische Bedeutung und den Kontext. Dadurch haben Texte mit ähnlicher Bedeutung „nähere“ Einbettungen. Die Sätze „Ich habe meinen Hund zum Tierarzt gebracht“ und „Ich habe meine Katze zum Tierarzt gebracht“ würden beispielsweise Einbettungen haben, die im Vektorraum nahe beieinander liegen.

Mithilfe von Einbettungen können Sie verschiedene Texte vergleichen und ihre Beziehung zueinander ermitteln. Wenn sich die Einbettungen der Wörter „Katze“ und „Hund“ beispielsweise nahe beieinander befinden, können Sie daraus schließen, dass diese Wörter ähnlich sind – entweder in Bezug auf ihre Bedeutung oder ihren Kontext oder beides. Dies ermöglicht eine Vielzahl von alltäglichen KI-Anwendungsfällen.

Einbettungen generieren

Verwenden Sie die Methode embedContent, um Texteinbettungen zu generieren:

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?"}]}
    }'

Sie können auch mehrere Chunks gleichzeitig einbetten, indem Sie sie als Liste von Strings übergeben.

Aufgabentypen

Wenn Sie beispielsweise RAG-Systeme (Retrieval Augmented Generation) erstellen, ist es üblich, Text-Embeddings für die Ähnlichkeitssuche zu verwenden. In einigen Fällen kann dies zu einer schlechteren Qualität führen, da Fragen und ihre Antworten semantisch nicht ähnlich sind. Eine Frage wie „Warum ist der Himmel blau?“ und die Antwort „Die Streuung des Sonnenlichts bewirkt die blaue Farbe“ haben beispielsweise als Aussagen deutlich unterschiedliche Bedeutungen. Das bedeutet, dass ein RAG-System ihre Beziehung nicht automatisch erkennt.

Mit Aufgabentypen können Sie optimierte Einbettungen für bestimmte Aufgaben generieren. So sparen Sie Zeit und Kosten und verbessern die Leistung.

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"
    }'

Unterstützte Aufgabentypen

Aufgabentyp Beschreibung
SEMANTIC_SIMILARITY Wird verwendet, um Einbettungen zu generieren, die für die Beurteilung der Textähnlichkeit optimiert sind.
CLASSIFICATION Wird verwendet, um Einbettungen zu generieren, die für die Klassifizierung von Texten nach vordefinierten Labels optimiert sind.
CLUSTERING Wird verwendet, um Einbettungen zu generieren, die für das Clustern von Texten basierend auf ihren Ähnlichkeiten optimiert sind.
RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING und FACT_VERIFICATION Wird verwendet, um Einbettungen zu generieren, die für die Dokumentsuche oder die Informationsabfrage optimiert sind.
CODE_RETRIEVAL_QUERY Wird verwendet, um einen Codeblock anhand einer Natural Language-Abfrage abzurufen, z. B. um ein Array zu sortieren oder eine verkettete Liste in umgekehrter Reihenfolge zu sortieren. Einbettungen der Codeblöcke werden mit RETRIEVAL_DOCUMENT berechnet.

Anwendungsfälle

Text-Embeddings werden in einer Vielzahl gängiger KI-Anwendungsfälle eingesetzt, z. B.:

Einbettungsmodelle

Die Gemini API bietet drei Modelle, mit denen Text-Embeddings generiert werden:

Nächste Schritte

Sehen Sie sich das Notebook für die Kurzanleitung zu Einbettungen an.