Embeddings

הטמעה היא ייצוג מספרי של קלט טקסט, שמאפשר מספר תרחישי שימוש ייחודיים, כמו אשכולות, מדידת דמיון ואחזור מידע. למבוא, אפשר לעיין במדריך להטמעות.

בניגוד למודלים של AI גנרטיבי שיוצרים תוכן חדש, מודל ה-Embedding של Gemini נועד רק להמיר את הפורמט של נתוני הקלט לייצוג מספרי. ‫Google אחראית לספק מודל הטמעה שממיר את הפורמט של נתוני הקלט לפורמט המספרי המבוקש, אבל המשתמשים נושאים באחריות מלאה לנתונים שהם מזינים ולהטמעות שמתקבלות. השימוש במודל Gemini Embedding הוא אישור לכך שיש לכם את הזכויות הנדרשות על התוכן שהתכוונתם להעלות. אסור ליצור תוכן שמפר את זכויות הקניין הרוחני או זכויות הפרטיות של אחרים. השימוש בשירות הזה כפוף למדיניות שלנו בנושא שימוש אסור ולתנאים ולהגבלות של Google.

שיטה: models.embedContent

יוצרת וקטור הטמעה של טקסט מהקלט Content באמצעות מודל ההטמעה של Gemini שצוין.

נקודת קצה

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

פרמטרים של נתיב

model string

חובה. שם המשאב של המודל. המזהה הזה משמש את המודל.

השם הזה צריך להיות זהה לשם של מודל שמוחזר על ידי השיטה models.list.

פורמט: models/{model} הפורמט הוא models/{model}.

גוף הבקשה

גוף הבקשה מכיל נתונים עם המבנה הבא:

Fields
content object (Content)

חובה. התוכן להטמעה. רק השדות parts.text ייספרו.

taskType enum (TaskType)

אופציונלי. סוג המשימה האופציונלי שבו ייעשה שימוש בהטמעות. לא נתמך בדגמים קודמים (models/embedding-001).

title string

אופציונלי. כותרת אופציונלית לטקסט. המאפיין הזה רלוונטי רק אם TaskType הוא RETRIEVAL_DOCUMENT.

הערה: ציון title עבור RETRIEVAL_DOCUMENT מספק הטמעות באיכות טובה יותר לאחזור.

outputDimensionality integer

אופציונלי. מאפיין אופציונלי להפחתת המימד של ההטמעה של הפלט. אם המאפיין הזה מוגדר, ערכים חריגים בהטמעה של הפלט ייחתכו מהסוף. התמיכה קיימת רק בדגמים חדשים יותר משנת 2024. אי אפשר להגדיר את הערך הזה אם משתמשים במודל הקודם (models/embedding-001).

דוגמה לבקשה

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

Go

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

קונכייה

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

גוף התשובה

התשובה לEmbedContentRequest.

אם הפעולה מצליחה, גוף התגובה מכיל נתונים במבנה הבא:

שדות
embedding object (ContentEmbedding)

פלט בלבד. ההטמעה שנוצרה מתוכן הקלט.

ייצוג ב-JSON
{
  "embedding": {
    object (ContentEmbedding)
  }
}

שיטה: models.batchEmbedContents

יוצרת כמה וקטורים של הטמעה מהקלט Content שמורכב מחבילה של מחרוזות שמיוצגות כאובייקטים EmbedContentRequest.

נקודת קצה

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

פרמטרים של נתיב

model string

חובה. שם המשאב של המודל. המזהה הזה משמש את המודל.

השם הזה צריך להיות זהה לשם של מודל שמוחזר על ידי השיטה models.list.

פורמט: models/{model} הפורמט הוא models/{model}.

גוף הבקשה

גוף הבקשה מכיל נתונים עם המבנה הבא:

Fields
requests[] object (EmbedContentRequest)

חובה. הטמעת בקשות באצווה. המודל בכל אחת מהבקשות האלה צריך להיות זהה למודל שצוין BatchEmbedContentsRequest.model.

דוגמה לבקשה

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

Go

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

קונכייה

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

גוף התשובה

התשובה לBatchEmbedContentsRequest.

אם הפעולה מצליחה, גוף התגובה מכיל נתונים במבנה הבא:

שדות
embeddings[] object (ContentEmbedding)

פלט בלבד. ההטמעות של כל בקשה, באותו סדר שבו הן סופקו בבקשה מרובה.

ייצוג ב-JSON
{
  "embeddings": [
    {
      object (ContentEmbedding)
    }
  ]
}

EmbedContentRequest

בקשה שמכילה את Content של המודל להטמעה.

שדות
model string

חובה. שם המשאב של המודל. המזהה הזה משמש את המודל.

השם הזה צריך להיות זהה לשם של מודל שמוחזר על ידי השיטה models.list.

פורמט: models/{model}

content object (Content)

חובה. התוכן להטמעה. רק השדות parts.text ייספרו.

taskType enum (TaskType)

אופציונלי. סוג המשימה האופציונלי שבו ייעשה שימוש בהטמעות. לא נתמך בדגמים קודמים (models/embedding-001).

title string

אופציונלי. כותרת אופציונלית לטקסט. המאפיין הזה רלוונטי רק אם TaskType הוא RETRIEVAL_DOCUMENT.

הערה: ציון title עבור RETRIEVAL_DOCUMENT מספק הטמעות באיכות טובה יותר לאחזור.

outputDimensionality integer

אופציונלי. מאפיין אופציונלי להפחתת המימד של ההטמעה של הפלט. אם המאפיין הזה מוגדר, ערכים חריגים בהטמעה של הפלט ייחתכו מהסוף. התמיכה קיימת רק בדגמים חדשים יותר משנת 2024. אי אפשר להגדיר את הערך הזה אם משתמשים במודל הקודם (models/embedding-001).

ייצוג ב-JSON
{
  "model": string,
  "content": {
    object (Content)
  },
  "taskType": enum (TaskType),
  "title": string,
  "outputDimensionality": integer
}

ContentEmbedding

רשימה של מספרים ממשיים שמייצגים הטמעה.

שדות
values[] number

ערכי ההטמעה.

ייצוג ב-JSON
{
  "values": [
    number
  ]
}

TaskType

סוג המשימה שבה ישמש ההטמעה.

טיפוסים בני מנייה (enum)
TASK_TYPE_UNSPECIFIED ערך לא מוגדר, שברירת המחדל שלו תהיה אחד מערכי ה-enum האחרים.
RETRIEVAL_QUERY מציינת שהטקסט שצוין הוא שאילתה בהגדרה של חיפוש או אחזור.
RETRIEVAL_DOCUMENT מציין שהטקסט הנתון הוא מסמך מתוך הקורפוס שמבוצע בו חיפוש.
SEMANTIC_SIMILARITY מציינת שהטקסט שצוין ישמש ל-STS.
CLASSIFICATION מציין שהטקסט הנתון יסווג.
CLUSTERING מציינת שההטמעות ישמשו לאשכולות.
QUESTION_ANSWERING מציין שהטקסט שצוין ישמש למענה על שאלות.
FACT_VERIFICATION מציין שהטקסט שצוין ישמש לאימות עובדות.
CODE_RETRIEVAL_QUERY מציין שהטקסט שצוין ישמש לאחזור קוד.