Gemini API תומך בכמה מודלים של הטמעה (embedding) שיוצרים הטמעות למילים, לביטויים, לקוד ולמשפטים. לאחר מכן אפשר להשתמש במטמיעים שנוצרו למשימות כמו חיפוש סמנטי, סיווג טקסט וקיבוץ, ועוד משימות רבות.
מהם הטמעות (embeddings)?
הטמעות הן ייצוגים מספריים של טקסט (או פורמטים אחרים של מדיה) שמתעדים את היחסים בין הקלטים. הטמעת טקסט פועלת על ידי המרת טקסט למערכים של מספרים בנקודה צפה, שנקראים ווקטורים. הווקטורים האלה נועדו לתעד את המשמעות של הטקסט. האורך של מערך ההטמעה נקרא ממדיות של הווקטור. קטע טקסט יכול להיות מיוצג על ידי וקטור שמכיל מאות מאפיינים.
הטמעות (embeddings) מתעדות את המשמעות הסמנטית ואת ההקשר, וכתוצאה מכך לטקסטים עם משמעויות דומות יש הטמעות 'קרובות' יותר. לדוגמה, למשפטים "I took my dog to the vet" ו-"I took my cat to the vet" יהיו הטמעות (embeddings) שנמצאות קרוב זו לזו במרחב הווקטור.
אפשר להשתמש בהטמעות כדי להשוות בין טקסטים שונים ולהבין איך הם קשורים. לדוגמה, אם הטקסטים 'חתול' ו'כלב' קרובים זה לזה במרחב הממוזער, אפשר להסיק שהמילים האלה דומות במשמעות, בהקשר או בשניהם. כך אפשר ליישם מגוון תרחישים נפוצים לדוגמה של AI.
לפני שמתחילים
לפני שמפעילים את Gemini API, צריך לוודא שה-SDK שבחרתם מותקן ושהגדרתם מפתח Gemini API מוכן לשימוש.
יצירת הטמעות (embeddings)
משתמשים בשיטה embedContent
כדי ליצור הטמעות טקסט:
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?"}]}
}'
אפשר גם ליצור הטמעות (embeddings) של כמה קטעים בבת אחת על ידי העברה שלהם כרשימה של מחרוזות.
סוגי המשימות
כשמפתחים מערכות של יצירת טקסט משופר לחיפוש (RAG), תכנון נפוץ הוא להשתמש בהטמעות טקסט כדי לבצע חיפוש של דמיון. במקרים מסוימים, הדבר עלול להוביל לירידה באיכות, כי השאילתות והתשובות שלהן לא דומות מבחינה סמנטית. לדוגמה, לשאלה "למה השמיים כחולים?" ולתשובה שלה "הצבע הכחול נובע מהפיזור של אור השמש" יש משמעויות שונות בתכלית כטענות, ולכן מערכת RAG לא תזהה באופן אוטומטי את הקשר ביניהן.
סוגי המשימות מאפשרים ליצור הטמעות (embeddings) אופטימיות למשימות ספציפיות, וכך לחסוך זמן ועלויות ולשפר את הביצועים.
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"
}'
סוגי המשימות הנתמכים
סוג המשימה | תיאור |
---|---|
SEMANTIC_SIMILARITY |
משמש ליצירת הטמעות (embeddings) שעברו אופטימיזציה להערכת הדמיון בין טקסטים. |
CLASSIFICATION |
משמש ליצירת הטמעות (embeddings) שעברו אופטימיזציה כדי לסווג טקסטים לפי תוויות מוגדרות מראש. |
CLUSTERING |
משמש ליצירת הטמעות (embeddings) שמותאמות באופן אופטימלי ליצירת אשכולות של טקסטים על סמך הדמיון ביניהם. |
RETRIEVAL_DOCUMENT , RETRIEVAL_QUERY , QUESTION_ANSWERING וגם FACT_VERIFICATION |
משמש ליצירת הטמעות (embeddings) שעברו אופטימיזציה לחיפוש מסמכים או לאחזור מידע. |
CODE_RETRIEVAL_QUERY |
משמש לאחזור בלוק קוד על סמך שאילתה בשפה טבעית, כמו מיון מערך או הפיכת רשימת קישורים. הטמעות של בלוקי הקוד מחושבות באמצעות RETRIEVAL_DOCUMENT . |
תרחישים לדוגמה
הטמעות טקסט משמשות במגוון תרחישי שימוש נפוצים ב-AI, כמו:
אחזור מידע: אפשר להשתמש בהטמעות כדי לאחזר טקסט שדומה מבחינה סמנטית, על סמך קטע טקסט קלט.
קיבוץ: השוואה בין קבוצות של הטמעות (embeddings) יכולה לעזור לזהות מגמות מוסתרות.
מאגר וקטורים: כשאתם מעבירים תרחישי שימוש שונים של הטמעה בסביבת הייצור, מקובל לאחסן את הטמעות הנתונים במאגר וקטורים.
סיווג: אפשר לאמן מודל באמצעות הטמעות (embeddings) כדי לסווג מסמכים לקטגוריות.
הטמעת מודלים
ב-Gemini API יש שלושה מודלים ליצירת הטמעות (embeddings) של טקסט:
המאמרים הבאים
כדאי לעיין במחברת הקוד למתחילים בנושא הטמעות (embeddings).