Embeddings

Osadzanie to numeryczna reprezentacja tekstu wejściowego, która otwiera wiele unikalnych przypadków użycia, takich jak klastrowanie, pomiar podobieństwa i wyszukiwanie informacji. Więcej informacji znajdziesz w przewodniku po embeddingach.

W przeciwieństwie do modeli generatywnej AI, które tworzą nowe treści, model Gemini Embedding ma tylko przekształcać format danych wejściowych w reprezentację numeryczną. Google odpowiada za udostępnienie modelu osadzania, który przekształca format danych wejściowych na wymagany format numeryczny, ale użytkownicy ponoszą pełną odpowiedzialność za dane, które wprowadzają, i za wynikające z nich osadzanie. Korzystając z modelu Gemini Embedding, potwierdzasz, że masz wymagane prawa do treści, które przesyłasz. Nie twórz treści naruszających prawa własności intelektualnej lub prawo do prywatności innych osób. Korzystanie z tej usługi podlega naszym Zasadom dotyczącym niedozwolonych zastosowańWarunkom korzystania z usług Google.

Metoda: models.embedContent

Generuje wektor dystrybucyjny tekstu z danych wejściowych Content za pomocą określonego modelu Gemini Embedding.

Punkt końcowy

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

Parametry ścieżki

model string

Wymagane. Nazwa zasobu modelu. Służy on jako identyfikator modelu.

Nazwa powinna być zgodna z nazwą modelu zwróconą przez metodę models.list.

Format: models/{model}. Przyjmuje postać models/{model}.

Treść żądania

Treść żądania zawiera dane o następującej strukturze:

Pola
content object (Content)

Wymagane. Treść do umieszczenia. Zostaną zliczone tylko pola parts.text.

taskType enum (TaskType)

Opcjonalnie. Opcjonalny typ zadania, do którego będą używane wektory. Nieobsługiwane w przypadku starszych modeli (models/embedding-001).

title string

Opcjonalnie. Opcjonalny tytuł tekstu. Ma zastosowanie tylko wtedy, gdy TaskType to RETRIEVAL_DOCUMENT.

Uwaga: określenie title dla RETRIEVAL_DOCUMENT zapewnia lepszą jakość osadzania na potrzeby wyszukiwania.

outputDimensionality integer

Opcjonalnie. Opcjonalny zredukowany wymiar wyjściowego wektora dystrybucyjnego. Jeśli ta opcja jest ustawiona, nadmierne wartości w osadzaniu wyjściowym są obcinane od końca. Obsługiwane tylko przez nowsze modele od 2024 r. Jeśli używasz starszego modelu (models/embedding-001), nie możesz ustawić tej wartości.

Przykładowe żądanie

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);

Przeczytaj

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))

Muszla

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

Treść odpowiedzi

Odpowiedź na EmbedContentRequest.

W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:

Pola
embedding object (ContentEmbedding)

Tylko dane wyjściowe. Wektor wygenerowany na podstawie treści wejściowych.

Zapis JSON
{
  "embedding": {
    object (ContentEmbedding)
  }
}

Metoda: models.batchEmbedContents

Generuje wiele wektorów osadzania z danych wejściowych Content, które składają się z grupy ciągów znaków reprezentowanych jako obiekty EmbedContentRequest.

Punkt końcowy

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

Parametry ścieżki

model string

Wymagane. Nazwa zasobu modelu. Służy on jako identyfikator modelu.

Nazwa powinna być zgodna z nazwą modelu zwróconą przez metodę models.list.

Format: models/{model}. Przyjmuje postać models/{model}.

Treść żądania

Treść żądania zawiera dane o następującej strukturze:

Pola
requests[] object (EmbedContentRequest)

Wymagane. Umieść prośby w pakiecie. Model w każdym z tych żądań musi być zgodny z modelem określonym w BatchEmbedContentsRequest.model.

Przykładowe żądanie

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);

Przeczytaj

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))

Muszla

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

Treść odpowiedzi

Odpowiedź na BatchEmbedContentsRequest.

W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:

Pola
embeddings[] object (ContentEmbedding)

Tylko dane wyjściowe. Osadzanie dla każdego żądania w tej samej kolejności, w jakiej zostało podane w żądaniu zbiorczym.

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

EmbedContentRequest

Żądanie zawierające element Content, który model ma osadzić.

Pola
model string

Wymagane. Nazwa zasobu modelu. Służy on jako identyfikator modelu.

Nazwa powinna być zgodna z nazwą modelu zwróconą przez metodę models.list.

Format: models/{model}

content object (Content)

Wymagane. Treść do umieszczenia. Zostaną zliczone tylko pola parts.text.

taskType enum (TaskType)

Opcjonalnie. Opcjonalny typ zadania, do którego będą używane wektory. Nieobsługiwane w przypadku starszych modeli (models/embedding-001).

title string

Opcjonalnie. Opcjonalny tytuł tekstu. Ma zastosowanie tylko wtedy, gdy TaskType to RETRIEVAL_DOCUMENT.

Uwaga: określenie title dla RETRIEVAL_DOCUMENT zapewnia lepszą jakość osadzania na potrzeby wyszukiwania.

outputDimensionality integer

Opcjonalnie. Opcjonalny zredukowany wymiar wyjściowego wektora dystrybucyjnego. Jeśli ta opcja jest ustawiona, nadmierne wartości w osadzaniu wyjściowym są obcinane od końca. Obsługiwane tylko przez nowsze modele od 2024 r. Jeśli używasz starszego modelu (models/embedding-001), nie możesz ustawić tej wartości.

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

ContentEmbedding

Lista liczb zmiennoprzecinkowych reprezentujących osadzenie.

Pola
values[] number

Wartości wektora dystrybucyjnego.

Zapis JSON
{
  "values": [
    number
  ]
}

TaskType

Typ zadania, do którego będzie używane osadzanie.

Wartości w polu enum
TASK_TYPE_UNSPECIFIED Nieokreślona wartość, która domyślnie będzie jedną z pozostałych wartości wyliczeniowych.
RETRIEVAL_QUERY Określa, że podany tekst jest zapytaniem w ustawieniu wyszukiwania lub pobierania.
RETRIEVAL_DOCUMENT Określa, że podany tekst jest dokumentem z korpusu, w którym przeprowadzane jest wyszukiwanie.
SEMANTIC_SIMILARITY Określa, że podany tekst będzie używany w przypadku STS.
CLASSIFICATION Określa, że podany tekst zostanie sklasyfikowany.
CLUSTERING Określa, że wektory dystrybucyjne będą używane do klastrowania.
QUESTION_ANSWERING Określa, że podany tekst będzie używany do odpowiadania na pytania.
FACT_VERIFICATION Określa, że podany tekst będzie używany do weryfikacji faktów.
CODE_RETRIEVAL_QUERY Określa, że podany tekst będzie używany do pobierania kodu.