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