Embeddings

Einbettungen sind eine numerische Darstellung von Texteingaben, die eine Reihe einzigartiger Anwendungsfälle ermöglichen, z. B. Clustering, Ähnlichkeitsmessung und Informationsabruf. Eine Einführung finden Sie im Leitfaden zu Einbettungen.

Im Gegensatz zu generativen KI-Modellen, die neue Inhalte erstellen, ist das Gemini Embedding-Modell nur dazu gedacht, das Format Ihrer Eingabedaten in eine numerische Darstellung umzuwandeln. Google ist zwar dafür verantwortlich, ein Embedding-Modell bereitzustellen, das das Format Ihrer Eingabedaten in das gewünschte numerische Format umwandelt, die Nutzer sind jedoch weiterhin für die von ihnen eingegebenen Daten und die resultierenden Embeddings verantwortlich. Mit der Nutzung des Gemini Embedding-Modells bestätigen Sie, dass Sie über die erforderlichen Rechte für die von Ihnen hochgeladenen Inhalte verfügen. Erstellen Sie keine Inhalte, durch die die Rechte anderer, zum Beispiel Rechte an geistigem Eigentum oder das Recht auf Privatsphäre, verletzt werden. Ihre Nutzung dieses Dienstes unterliegt unserer Richtlinie zur unzulässigen Nutzung von generativer KI und den Google-Nutzungsbedingungen.

Methode: models.embedContent

Generiert einen Texteinbettungsvektor aus der Eingabe Content mit dem angegebenen Gemini-Einbettungsmodell.

Endpunkt

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:embedContent >
>

Pfadparameter

model string

Erforderlich. Der Ressourcenname des Modells. Dies dient als ID für das zu verwendende Modell.

Dieser Name sollte mit einem Modellnamen übereinstimmen, der von der Methode models.list zurückgegeben wird.

Format: models/{model}. Es hat die Form models/{model}.

Anfragetext

Der Anfragetext enthält Daten mit folgender Struktur:

Felder
content object (Content)

Erforderlich. Der einzubettende Inhalt. Es werden nur die parts.text-Felder gezählt.

taskType enum (TaskType)

Optional. Optionaler Aufgabentyp, für den die Einbettungen verwendet werden. Wird auf älteren Modellen (models/embedding-001) nicht unterstützt.

title string

Optional. Ein optionaler Titel für den Text. Gilt nur, wenn TaskType RETRIEVAL_DOCUMENT ist.

Hinweis: Wenn Sie für RETRIEVAL_DOCUMENT ein title angeben, erhalten Sie Einbettungen mit höherer Qualität für den Abruf.

outputDimensionality integer

Optional. Optionale reduzierte Dimension für die Ausgabe-Einbettung. Wenn festgelegt, werden übermäßige Werte in der Ausgabeeinbettung am Ende abgeschnitten. Wird nur von neueren Modellen ab 2024 unterstützt. Sie können diesen Wert nicht festlegen, wenn Sie das frühere Modell (models/embedding-001) verwenden.

Beispielanfrage

Python

from google import genai
from google.genai import types

client = genai.Client()
text = "Hello World!"
result = client.models.embed_content(
    model="gemini-embedding-001",
    contents=text,
    config=types.EmbedContentConfig(output_dimensionality=10),
)
print(result.embeddings)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const text = "Hello World!";
const result = await ai.models.embedContent({
  model: "gemini-embedding-001",
  contents: text,
  config: { outputDimensionality: 10 },
});
console.log(result.embeddings);

Ok

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

text := "Hello World!"
outputDim := int32(10)
contents := []*genai.Content{
	genai.NewContentFromText(text, genai.RoleUser),
}
result, err := client.Models.EmbedContent(ctx, "gemini-embedding-001", 
	contents, &genai.EmbedContentConfig{
		OutputDimensionality: &outputDim,
})
if err != nil {
	log.Fatal(err)
}

embeddings, err := json.MarshalIndent(result.Embeddings, "", "  ")
if err != nil {
	log.Fatal(err)
}
fmt.Println(string(embeddings))

Muschel

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-001",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]}
    }'

Antworttext

Die Antwort auf eine EmbedContentRequest.

Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:

Felder
embedding object (ContentEmbedding)

Nur Ausgabe. Die aus den Eingabeinhalten generierte Einbettung.

JSON-Darstellung
{
  "embedding": {
    object (ContentEmbedding)
  }
}

Methode: models.batchEmbedContents

Generiert mehrere Einbettungsvektoren aus der Eingabe Content, die aus einem Batch von Strings besteht, die als EmbedContentRequest-Objekte dargestellt werden.

Endpunkt

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:batchEmbedContents >
>

Pfadparameter

model string

Erforderlich. Der Ressourcenname des Modells. Dies dient als ID für das zu verwendende Modell.

Dieser Name sollte mit einem Modellnamen übereinstimmen, der von der Methode models.list zurückgegeben wird.

Format: models/{model}. Es hat die Form models/{model}.

Anfragetext

Der Anfragetext enthält Daten mit folgender Struktur:

Felder
requests[] object (EmbedContentRequest)

Erforderlich. Einbetten von Anfragen für den Batch Das Modell in jeder dieser Anfragen muss mit dem Modell übereinstimmen, das BatchEmbedContentsRequest.model angegeben ist.

Beispielanfrage

Python

from google import genai
from google.genai import types

client = genai.Client()
texts = [
    "What is the meaning of life?",
    "How much wood would a woodchuck chuck?",
    "How does the brain work?",
]
result = client.models.embed_content(
    model="gemini-embedding-001",
    contents=texts,
    config=types.EmbedContentConfig(output_dimensionality=10),
)
print(result.embeddings)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const texts = [
  "What is the meaning of life?",
  "How much wood would a woodchuck chuck?",
  "How does the brain work?",
];
const result = await ai.models.embedContent({
  model: "gemini-embedding-001",
  contents: texts,
  config: { outputDimensionality: 10 },
});
console.log(result.embeddings);

Ok

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

contents := []*genai.Content{
	genai.NewContentFromText("What is the meaning of life?", genai.RoleUser),
	genai.NewContentFromText("How much wood would a woodchuck chuck?", genai.RoleUser),
	genai.NewContentFromText("How does the brain work?", genai.RoleUser),
}

outputDim := int32(10)
result, err := client.Models.EmbedContent(ctx, "gemini-embedding-001", contents, &genai.EmbedContentConfig{
	OutputDimensionality: &outputDim,
})
if err != nil {
	log.Fatal(err)
}

embeddings, err := json.MarshalIndent(result.Embeddings, "", "  ")
if err != nil {
	log.Fatal(err)
}
fmt.Println(string(embeddings))

Muschel

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:batchEmbedContents" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"requests": [{
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "What is the meaning of life?"}]}, },
      {
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "How much wood would a woodchuck chuck?"}]}, },
      {
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "How does the brain work?"}]}, }, ]}' 2> /dev/null | grep -C 5 values

Antworttext

Die Antwort auf eine BatchEmbedContentsRequest.

Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:

Felder
embeddings[] object (ContentEmbedding)

Nur Ausgabe. Die Einbettungen für jede Anfrage in derselben Reihenfolge wie in der Batch-Anfrage.

JSON-Darstellung
{
  "embeddings": [
    {
      object (ContentEmbedding)
    }
  ]
}

EmbedContentRequest

Anfrage mit dem Content für das einzubettende Modell.

Felder
model string

Erforderlich. Der Ressourcenname des Modells. Dies dient als ID für das zu verwendende Modell.

Dieser Name sollte mit einem Modellnamen übereinstimmen, der von der Methode models.list zurückgegeben wird.

Format: models/{model}

content object (Content)

Erforderlich. Der einzubettende Inhalt. Es werden nur die parts.text-Felder gezählt.

taskType enum (TaskType)

Optional. Optionaler Aufgabentyp, für den die Einbettungen verwendet werden. Wird auf älteren Modellen (models/embedding-001) nicht unterstützt.

title string

Optional. Ein optionaler Titel für den Text. Gilt nur, wenn TaskType RETRIEVAL_DOCUMENT ist.

Hinweis: Wenn Sie für RETRIEVAL_DOCUMENT ein title angeben, erhalten Sie Einbettungen mit höherer Qualität für den Abruf.

outputDimensionality integer

Optional. Optionale reduzierte Dimension für die Ausgabe-Einbettung. Wenn festgelegt, werden übermäßige Werte in der Ausgabeeinbettung am Ende abgeschnitten. Wird nur von neueren Modellen ab 2024 unterstützt. Sie können diesen Wert nicht festlegen, wenn Sie das frühere Modell (models/embedding-001) verwenden.

JSON-Darstellung
{
  "model": string,
  "content": {
    object (Content)
  },
  "taskType": enum (TaskType),
  "title": string,
  "outputDimensionality": integer
}

ContentEmbedding

Eine Liste von Gleitkommazahlen, die ein Embedding darstellen.

Felder
values[] number

Die Einbettungswerte.

JSON-Darstellung
{
  "values": [
    number
  ]
}

TaskType

Art der Aufgabe, für die die Einbettung verwendet wird.

Enums
TASK_TYPE_UNSPECIFIED Nicht festgelegter Wert, der standardmäßig auf einen der anderen Enum-Werte gesetzt wird.
RETRIEVAL_QUERY Gibt an, dass der angegebene Text eine Anfrage in einer Such-/Abrufeinstellung ist.
RETRIEVAL_DOCUMENT Gibt an, dass der angegebene Text ein Dokument aus dem durchsuchten Korpus ist.
SEMANTIC_SIMILARITY Gibt an, dass der angegebene Text für STS verwendet wird.
CLASSIFICATION Gibt an, dass der angegebene Text klassifiziert wird.
CLUSTERING Gibt an, dass die Einbettungen für das Clustering verwendet werden.
QUESTION_ANSWERING Gibt an, dass der angegebene Text für die Beantwortung von Fragen verwendet wird.
FACT_VERIFICATION Gibt an, dass der angegebene Text für die Faktenprüfung verwendet wird.
CODE_RETRIEVAL_QUERY Gibt an, dass der angegebene Text für den Codeabruf verwendet wird.