Einbettungen in der Gemini API

Der Einbettungsdienst der Gemini API generiert hochmoderne Einbettungen für Wörter, Wortgruppen und Sätze. Die resultierenden Einbettungen können dann für Natural Language Processing (NLP)-Aufgaben wie semantische Suche, Textklassifizierung und Clustering verwendet werden.

Auf dieser Seite werden Einbettungen kurz erläutert und einige wichtige Anwendungsfälle für den Einbettungsdienst hervorgehoben.

Was sind Einbettungen?

Texteinbettungen sind ein NLP-Verfahren (Natural Language Processing), das Text in numerische Koordinaten (sogenannte Vektoren) umwandelt, die in einem n-dimensionalen Bereich dargestellt werden können. Bei diesem Ansatz können Sie Textelemente als relationale Datenelemente behandeln, mit denen wir dann Modelle trainieren können.

Einbettungen erfassen die semantische Bedeutung und den Kontext, wodurch Text mit ähnlicher Bedeutung entsteht, der engere Einbettungen hat. Der Satz „Ich habe meinen Hund zum Tierarzt gebracht“ und „Ich habe meine Katze zum Tierarzt gebracht“ hätte Einbettungen, die im Vektorraum nah beieinander liegen, da beide einen ähnlichen Kontext beschreiben.

Sie können Einbettungen verwenden, um verschiedene Texte zu vergleichen und zu verstehen, wie sie zusammenhängen. Wenn beispielsweise die Einbettungen des Textes „Katze“ und „Hund“ nah beieinander liegen, können Sie daraus ableiten, dass diese Wörter hinsichtlich der Bedeutung oder des Kontexts oder beidem ähnlich sind. Diese Funktion ermöglicht eine Vielzahl von Anwendungsfällen, die im nächsten Abschnitt beschrieben werden.

Anwendungsfälle

Texteinbettungen werden in einer Vielzahl von NLP-Anwendungsfällen verwendet, z. B.:

  • Informationsabruf:Mit Einbettungen können Sie semantisch ähnlichen Text aus einem Eingabetext abrufen. Ein Informationsabrufsystem wie die semantische Suche, die Beantwortung von Fragen oder eine Zusammenfassung können eine Vielzahl von Anwendungen unterstützen.
  • Klassifizierung:Sie können ein Modell mit Einbettungen trainieren, um Dokumente in Kategorien zu klassifizieren. Wenn Sie beispielsweise Nutzerkommentare als negativ oder positiv klassifizieren möchten, können Sie mit dem Einbettungsdienst die Vektordarstellung jedes Kommentars abrufen und so den Klassifikator trainieren.
  • Clustering:Der Vergleich von Textvektoren kann Aufschluss darüber geben, wie ähnlich oder unterschiedlich sie sind. Mit dieser Funktion können Sie ein Clustering-Modell trainieren, das ähnliche Texte oder Dokumente gruppiert, und Anomalien in Ihren Daten erkennen.
  • Vektordatenbank:Sie können Ihre generierten Einbettungen in einer Vektordatenbank speichern, um die Genauigkeit und Effizienz Ihrer NLP-Anwendung zu verbessern. In der folgenden Anleitung erfahren Sie, wie Sie Text-Prompts mit einer Vektordatenbank in numerische Vektoren übersetzen können.

Gemini-Einbettungsmodelle

Die Gemini API bietet zwei Modelle zum Generieren von Texteinbettungen: Texteinbettungen und Einbettungen. Texteinbettungen sind eine aktualisierte Version des Einbettungsmodells, die flexible Einbettungsgrößen mit weniger als 768 Dimensionen bietet. Elastische Einbettungen generieren kleinere Ausgabedimensionen und sparen möglicherweise Rechen- und Speicherkosten bei geringfügigem Leistungsverlust.

Verwenden Sie Texteinbettungen für neue Projekte oder Anwendungen. Ihre Anwendung sollte das Einbettungsmodell nur dann verwenden, wenn es nicht zu Texteinbettungen migriert werden kann.

Einbettungen mit der Gemini API generieren

Verwenden Sie die Methode embedContent, um Texteinbettungen zu generieren:

Python

result = genai.embed_content(
model="models/text-embedding-004",
content="What is the meaning of life?",
task_type="retrieval_document",
title="Embedding of single string")

# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED]')

Das vollständige ausführbare Beispiel finden Sie in unserem Startleitfaden.

Ok

ctx := context.Background()
// Access your API key as an environment variable (see our Getting Started tutorial)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
// For embeddings, use the Text Embeddings model
em := client.EmbeddingModel("text-embedding-004")
res, err := em.EmbedContent(ctx, genai.Text("The quick brown fox jumps over the lazy dog."))

if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)

Das vollständige ausführbare Beispiel finden Sie in unserem Startleitfaden.

Node.js

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see our Getting Started tutorial)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
// For embeddings, use the Text Embeddings model
const model = genAI.getGenerativeModel({ model: "text-embedding-004"});

const text = "The quick brown fox jumps over the lazy dog."

const result = await model.embedContent(text);
const embedding = result.embedding;
console.log(embedding.values);
}

run();

Das vollständige ausführbare Beispiel finden Sie in unserem Startleitfaden.

Dart (Flutter)

final model = GenerativeModel(model: 'text-embedding-004', apiKey: apiKey);
final content = Content.text('The quick brown fox jumps over the lazy dog.');
final result = await model.embedContent(content);
print(result.embedding.values);

Das vollständige ausführbare Beispiel finden Sie in unserem Startleitfaden.

curl

curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:embedContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/text-embedding-004",
    "content": {
    "parts":[{
    "text": "Hello world"}]}, }' 2> /dev/null | head

Das vollständige ausführbare Beispiel finden Sie in unserer Kurzanleitung zum Einbetten mit REST-Cookbook auf GitHub.

Nächste Schritte