מודל ההטמעה מרובת-האופנים יוצר וקטורים רב-ממדיים על סמך הקלט שאתם מספקים, שיכול לכלול שילוב של נתוני תמונה, טקסט ווידאו. אחר כך אפשר להשתמש בווקטורים של ההטמעה למשימות נוספות, כמו סיווג תמונות או מיתון תוכן של סרטונים.
וקטורי ההטמעה של התמונות והטקסט נמצאים באותו מרחב סמנטי עם אותה מימדיות. לכן, אפשר להשתמש בווקטורים האלה לסירוגין בתרחישי שימוש כמו חיפוש תמונות באמצעות טקסט או חיפוש סרטונים באמצעות תמונה.
לתרחישי שימוש בהטמעה של טקסט בלבד, מומלץ להשתמש במקום זאת ב-API להטמעת טקסט ב-Gemini Enterprise Agent Platform. לדוגמה, יכול להיות ש-API להטמעת טקסט יהיה טוב יותר לחיפוש סמנטי מבוסס-טקסט, לקיבוץ, לניתוח מסמכים ארוכים ולתרחישי שימוש אחרים של אחזור טקסט או מענה לשאלות. מידע נוסף זמין במאמר בנושא קבלת הטמעות טקסט.
מודלים נתמכים
אפשר לקבל הטמעות מולטימודאליות באמצעות המודלים הבאים:
gemini-embedding-2multimodalembedding@001
שיטות מומלצות
כשמשתמשים במודל ההטמעה המולטי-מודאלי, חשוב להביא בחשבון את היבטי הקלט הבאים:
- טקסט בתמונות – המודל יכול להבחין בין טקסט בתמונות, בדומה לזיהוי תווים אופטי (OCR). אם אתם צריכים להבדיל בין תיאור של תוכן התמונה לבין הטקסט בתוך התמונה, כדאי להשתמש בהנדסת פרומפטים כדי לציין את תוכן היעד.
לדוגמה: במקום רק 'חתול', צריך לציין 'תמונה של חתול' או 'הטקסט 'חתול'', בהתאם לתרחיש השימוש.
הטקסט 'חתול'
המילה 'חתול' מוצגת בגופן גדול ומודגש.
תמונה של חתול
קרדיט על התמונה: Manja Vitolic ב-Unsplash. - הטמעה של דמיון – מכפלה סקלרית של הטמעות היא לא הסתברות מכוילת. מכפלה סקלרית היא מדד דמיון, והתפלגות הציונים שלה עשויה להיות שונה בתרחישי שימוש שונים. לכן, לא מומלץ להשתמש בסף ערך קבוע כדי למדוד את האיכות. במקום זאת, אפשר להשתמש בגישות של דירוג לאחזור, או בפונקציית סיגמואיד לסיווג.
שימוש ב-gemini-embedding-2
מודל gemini-embedding-2 מקבל קלט משולב של תמונות, טקסט, מסמכים, אודיו ווידאו.
הגדרת הוראות למשימות כדי לשפר את הביצועים
אפשר להשתמש בהטמעות למגוון רחב של משימות, מסיווג ועד חיפוש מסמכים. הגדרת הוראות מתאימות למשימה עוזרת לבצע אופטימיזציה של ההטמעות עבור הקשרים הרצויים, וכך לשפר את הדיוק והיעילות.
בטבלאות הבאות מוצגות דוגמאות לפורמט של שאילתות ומסמכים לתרחישי שימוש סימטריים ואסימטריים באמצעות מודל gemini-embedding-2.
תרחישי שימוש באחזור (פורמט אסימטרי)
| תרחיש שימוש | מבנה השאילתה | מבנה המסמך |
|---|---|---|
| שאילתת חיפוש | task: search result | query: {content} |
title: {title} | text: {content}אם אין שם, משתמשים ב- title: none. |
| מענה לשאלות | task: question answering | query: {content} |
title: {title} | text: {content} |
| בדיקת עובדות | task: fact checking | query: {content} |
title: {title} | text: {content} |
| אחזור קוד | task: code retrieval | query: {content} |
title: {title} | text: {content} |
תרחישים לדוגמה של קלט יחיד (פורמט סימטרי)
| תרחיש שימוש | מבנה הקלט |
|---|---|
| סיווג | task: classification | query: {content} |
| סידור באשכולות | task: clustering | query: {content} |
| דמיון סמנטי | task: sentence similarity | query: {content}אל תשתמשו בזה לחיפוש או לאחזור. היא מיועדת לדמיון סמנטי בין טקסטים. |
דוגמה לשימוש ב-Python
Python
# Generate embedding for a search query def prepare_query(query): return f"task: search result | query: {query}" # Generate embedding for a search document def prepare_document(content, title=None): if title is None: title = "none" return f"title: {title} | text: {content}" # Generate embedding for classification def prepare_classification_input(content): return f"task: classification | query: {content}"
שימוש ב-API
מגבלות API
כשמשתמשים במודל gemini-embedding-2, חלות המגבלות הבאות.
| הגבלה | ערך ותיאור |
|---|---|
| נתוני טקסט, תמונות, מסמכים, סרטונים ואודיו | |
| מגבלת טוקנים של קלט | 8,192 טוקנים קלט שאורכו יותר מ-8,192 טוקנים נחתך באופן שקט. כל המודאליות חולקות את חלון ההקשר הכולל של 8,192 טוקנים. אסימונים נספרים באופן הבא לפי אופן השימוש:
|
| ממדי הפלט | 3,072 (ברירת מחדל, אפשר להגדיר באמצעות הפרמטר output_dimensionality) |
| מגבלות על תמונות | 6 תמונות לכל בקשה |
| פורמטים של תמונות | JPEG, PNG, WebP, BMP, HEIC, HEIF, AVIF |
| מידות התמונה | מקסימום 16,384 x 16,384 פיקסלים לכל תמונה |
| מגבלות על מסמכים | קובץ אחד לכל בקשה, עד 6 עמודים כדי לקבל את האיכות הכי טובה, מומלץ לשלוח עמוד אחד לכל קובץ PDF. |
| פורמטים של מסמכים | |
| נתוני וידאו ואודיו | |
| מגבלות על סרטונים | סרטון אחד לכל בקשה, עד 120 פריימים המגבלה של 120 שניות מבוססת על הגדרת ברירת המחדל של 1 FPS. המשך משתנה כשמגדירים קצב פריימים שונה: משך = 120 / קצב פריימים. כברירת מחדל, חילוץ אודיו מושבת בסרטון. כשהאפשרות לחילוץ טראק אודיו מופעלת, משך הזמן כפוף למשך האודיו המקסימלי של 180 שניות, ומשך נכס הווידאו הכולל מוגבל גם על ידי מגבלת האודיו וגם על ידי חלון ההקשר של הטוקן (8,192 טוקנים). |
| פורמטים של סרטונים | מאגר: MOV, MP4. קודק: AV1, H264, H265, VP9. |
| מגבלות אודיו | 180 שניות לכל בקשה התמיכה באודיו מותאמת לדיבור. יכול להיות שצלילים ומוזיקה מהסביבה לא יושמעו באיכות הכי גבוהה. |
| פורמטים של אודיו | MP3, WAV |
משך נכס הווידאו עם חילוץ האודיו
מכיוון שכל המודלים חולקים את חלון ההקשר של 8,192 טוקנים, משך נכס הווידאו המקסימלי משתנה כשמפעילים את audio_track_extraction:
| מודליות | כמות הטוקנים |
|---|---|
| אודיו | 25 טוקנים בשנייה |
| פריים | 66 טוקנים לכל פריים |
| חותמות זמן | 10 טוקנים בשנייה (שני חותמות זמן בשנייה בפורמט mm:ss) |
| FPS | נקבע לפי הגדרת ה-FPS (ברירת המחדל היא 1) |
משך נכס הווידאו הכולל מוגבל גם בגלל התמיכה באודיו באורך של עד 180 שניות וגם בגלל חלון ההקשר של 8,192 טוקנים.
חישוב לדוגמה:
אם מעבדים סרטון עם קצב דגימה שמוגדר כברירת מחדל של 1 FPS ומפעילים חילוץ אודיו:
- קצב הצריכה: כל שנייה של וידאו צורכת 66 טוקנים (פריים אחד) + 25 טוקנים (שנייה אחת של אודיו) + 10 טוקנים (חותמות זמן) = 101 טוקנים.
- משך הזמן המקסימלי: עם מגבלת 8,192 טוקנים, משך הזמן המקסימלי הוא בערך 8,192 חלקי 101, כלומר כ-81 שניות.
אם הקלט חורג מחלון ההקשר, החלק שחורג ממנו ייחתך ללא הודעה.
יצירת הטמעות מולטי-מודאליות
REST
PROJECT_ID="YOUR_PROJECT_ID" LOCATION="us" curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://aiplatform.${LOCATION}.rep.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/gemini-embedding-2:embedContent" \ -d '{ "content": { "parts": [ { "text": "Whats this" }, { "file_data": { "mime_type": "video/mp4", "file_uri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4" } } ] } }'
Python
from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part.from_text(text="Audio AI"), types.Part.from_uri( file_uri="gs://cloud-samples-data/generative-ai/audio/Chirp-3-Docs-Dive.mp3", mime_type="audio/mpeg", ), ], ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content] ) print(response.embeddings[0].values)
מיקומים
מיקום הוא אזור שאפשר לציין בבקשה כדי לקבוע איפה הנתונים יאוחסנו במצב מנוחה. לרשימת האזורים הזמינים, ראו מיקומי Agent Platform.
מכסות
כדי לבדוק את מגבלת המכסה של gemini-embedding-2, אפשר לעיין במאמר בנושא מכסות ומגבלות מערכת בפלטפורמת הסוכנים.
מידות
כשמשתמשים במודל gemini-embedding-2, אפשר לציין מימדים נמוכים יותר באמצעות הפרמטר output_dimensionality ב-EmbedContentConfig.
בדוגמה הבאה מוחזר וקטור 128-ממדי. ב-gemini-embedding-2, הטמעות הפלט כבר מנורמלות לפי L2 למאפיינים שאינם ברירת מחדל (בניגוד ל-gemini-embedding-001).
Python
import numpy as np from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part.from_uri( file_uri="gs://cloud-samples-data/generative-ai/audio/Chirp-3-Docs-Dive.mp3", mime_type="audio/mpeg", ), ], ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content], config=types.EmbedContentConfig(output_dimensionality=128), ) embedding_values_np = np.array(response.embeddings[0].values) print(f"Embedding length: {len(embedding_values_np)}") print(f"Norm of embedding: {np.linalg.norm(embedding_values_np):.6f}") # Should be very close to 1
פרמטרים
קצב דגימת הווידאו שמוגדר כברירת מחדל הוא פרים אחד לשנייה (FPS). אפשר להוסיף פרמטרים נוספים באמצעות video_metadata:
Python
from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part( file_data=types.FileData( file_uri="gs://cloud-samples-data/generative-ai/video/pixel8.mp4", mime_type="video/mp4", ), video_metadata=types.VideoMetadata( fps=0.5, start_offset="10s", end_offset="20s", ), ), ] ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content] ) print(response.embeddings[0].values)
יש אפשרויות נוספות בEmbedContentConfig.
| אפשרות | סוג | תיאור |
|---|---|---|
output_dimensionality |
int |
הפחתת המימד של הטמעת הפלט. |
document_ocr |
bool |
מפעילים OCR לקלט מסמכים. |
audio_track_extraction |
bool |
חילוץ אודיו מקלט וידאו. |
שימוש ב-multimodalembedding@001
ההגבלות הבאות חלות כשמשתמשים במודל multimodalembedding@001
להטמעות של טקסט ותמונות:
| הגבלה | ערך ותיאור |
|---|---|
| נתוני טקסט ותמונה | |
| המספר המקסימלי של בקשות API לדקה לכל פרויקט | 120-600 בהתאם לאזור |
| אורך הטקסט המקסימלי | 32 אסימונים (כ-32 מילים) אורך הטקסט המקסימלי הוא 32 אסימונים (כ-32 מילים). אם הקלט חורג מ-32 טוקנים, המודל מקצר את הקלט באופן פנימי לאורך הזה. |
| שפה | אנגלית |
| פורמטים של תמונות | BMP, GIF, JPG, PNG |
| גודל התמונה | תמונות בקידוד Base64: 20MB (כשמבצעים המרה ל-PNG) תמונות ב-Cloud Storage: 20MB (פורמט הקובץ המקורי) הגודל המקסימלי של תמונה שמתקבלת הוא 20MB. כדי למנוע עלייה בחביון ברשת, כדאי להשתמש בתמונות קטנות יותר. בנוסף, המודל משנה את גודל התמונות לרזולוציה של 512x512 פיקסלים. לכן, אין צורך לספק תמונות ברזולוציה גבוהה יותר. |
| נתוני וידאו | |
| תמיכה באודיו | לא רלוונטי – המודל לא מתייחס לתוכן אודיו כשהוא יוצר הטמעות של סרטונים |
| פורמטים של סרטונים | AVI, FLV, MKV, MOV, MP4, MPEG, MPG, WEBM ו-WMV |
| אורך מקסימלי של סרטון (Cloud Storage) | אין מגבלה. עם זאת, אפשר לנתח רק 2 דקות של תוכן בכל פעם. |
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
מגדירים אימות לסביבה.
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
Java
כדי להשתמש בדוגמאות של Java שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אחרי שתאתחלו את ה-CLI של gcloud, עדכנו אותו והתקינו את הרכיבים הנדרשים:
gcloud components update gcloud components install beta
-
אם אתם משתמשים במעטפת מקומית, צריך ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Node.js
כדי להשתמש בדוגמאות של Node.js שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אחרי שתאתחלו את ה-CLI של gcloud, עדכנו אותו והתקינו את הרכיבים הנדרשים:
gcloud components update gcloud components install beta
-
אם אתם משתמשים במעטפת מקומית, צריך ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אחרי שתאתחלו את ה-CLI של gcloud, עדכנו אותו והתקינו את הרכיבים הנדרשים:
gcloud components update gcloud components install beta
-
אם אתם משתמשים במעטפת מקומית, צריך ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אחרי שתאתחלו את ה-CLI של gcloud, עדכנו אותו והתקינו את הרכיבים הנדרשים:
gcloud components update gcloud components install beta
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
-
- כדי להשתמש ב-Python SDK, פועלים לפי ההוראות במאמר התקנת Agent Platform SDK ל-Python. מידע נוסף מופיע במאמרי העזרה של Agent Platform SDK for Python API.
- זה שינוי אופציונלי. כאן אפשר לראות את המחירים של התכונה הזו. התמחור של הטמעות תלוי בסוג הנתונים שאתם שולחים (למשל תמונה או טקסט), וגם במצב שבו אתם משתמשים עבור סוגי נתונים מסוימים (למשל Video Plus, Video Standard או Video Essential).
מיקומים
מיקום הוא אזור שאפשר לציין בבקשה כדי לקבוע איפה הנתונים יאוחסנו במצב מנוחה. לרשימת האזורים הזמינים, ראו מיקומי Agent Platform.
הודעות שגיאה
בקטע הזה מתוארות הודעות שגיאה נפוצות שאתם עשויים להיתקל בהן.
שגיאה שקשורה לחריגה מהמכסה
google.api_core.exceptions.ResourceExhausted: 429 Quota exceeded for
aiplatform.googleapis.com/online_prediction_requests_per_base_model with base
model: multimodalembedding. Please submit a quota increase request.
אם זו הפעם הראשונה שאתם מקבלים את השגיאה הזו, אתם יכולים להשתמש ב Google Cloud מסוף כדי לבקש התאמה של המכסה בפרויקט. כדאי להשתמש במסננים הבאים לפני שמבקשים את ההתאמה:
Service ID: aiplatform.googleapis.commetric: aiplatform.googleapis.com/online_prediction_requests_per_base_modelbase_model:multimodalembedding
אם כבר שלחתם בקשה להתאמת המכסה, עליכם להמתין לפני שליחת בקשה נוספת. אם אתם צריכים להגדיל עוד יותר את המכסה, אתם יכולים לשלוח שוב בקשה לשינוי המכסה ולציין את הסיבה לשינוי המכסה לטווח ארוך.
ציון הטמעות עם ממדים נמוכים יותר
בהתאם למודל שבו משתמשים, בקשת הטמעה מחזירה וקטור float של 1,408 או 3,072. אתם יכולים לציין הטמעה של ממדים נמוכים יותר לנתוני טקסט ותמונה כדי לבצע אופטימיזציה של זמן האחזור והאחסון, או של האיכות. הטמעות עם ממדים נמוכים יותר מצמצמות את הצורך באחסון ומספקות חביון נמוך יותר למשימות הטמעה עתידיות (כמו חיפוש או המלצה). הטמעות בממדים גבוהים יותר מציעות דיוק גבוה יותר במשימות האלה, אבל הן דורשות יותר נפח אחסון וזמן אחזור גבוה יותר.
בטבלה הבאה מוצגים מאפיינים ברמה נמוכה יותר שזמינים כברירת מחדל לכל מודל:
| דגם | מידות ברירת מחדל (הגבוהות ביותר) | מאפיינים נתמכים (טווח) | מידות מומלצות יותר |
|---|---|---|---|
gemini-embedding-2 |
3072 | 128 עד 3,072 | 128, 768 או 1536 |
multimodalembedding@001 |
1408 | 128 עד 1,408 | 128, 256 או 512 |
אפשר להשתמש בדוגמאות הבאות כדי ליצור הטמעות עם ממדים נמוכים יותר:
REST
אפשר לגשת למאפיינים ברמה נמוכה יותר על ידי הוספת השדה parameters.dimension.
הפרמטר מקבל כל אחד מערכי המאפיינים שזמינים למודל.
לדוגמה, אפשר לציין 128, 256, 512 או 1408 כשמשתמשים במודל multimodalembedding@001. התשובה כוללת את ההטמעה של המאפיין שצוין.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: Google Cloud מזהה הפרויקט.
-
IMAGE_URI: ה-URI של Cloud Storage של תמונת היעד שאליה רוצים לקבל הטמעות. לדוגמה:
gs://my-bucket/embeddings/supermarket-img.png.אפשר גם לספק את התמונה כמחרוזת של בייטים בקידוד Base64:
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] -
TEXT: טקסט היעד ליצירת הטמעות. לדוגמה,
a cat. -
EMBEDDING_DIMENSION: מספר המאפיינים של ההטמעה. ערכים נמוכים יותר יאפשרו לכם ליהנות משיפור בביצועים של משימות עתידיות, אבל ערכים גבוהים יותר יאפשרו לכם ליהנות מדיוק גבוה יותר. הערכים האפשריים:
128,256,512ו-1408(ברירת מחדל).
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
גוף בקשת JSON:
{
"instances": [
{
"image": {
"gcsUri": "IMAGE_URI"
},
"text": "TEXT"
}
],
"parameters": {
"dimension": EMBEDDING_DIMENSION
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
128 מאפיינים:
{
"predictions": [
{
"imageEmbedding": [
0.0279239565,
[...128 dimension vector...]
0.00403284049
],
"textEmbedding": [
0.202921599,
[...128 dimension vector...]
-0.0365431122
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}256 מאפיינים:
{
"predictions": [
{
"imageEmbedding": [
0.248620048,
[...256 dimension vector...]
-0.0646447465
],
"textEmbedding": [
0.0757875815,
[...256 dimension vector...]
-0.02749932
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}512 מאפיינים:
{
"predictions": [
{
"imageEmbedding": [
-0.0523675755,
[...512 dimension vector...]
-0.0444030389
],
"textEmbedding": [
-0.0592851527,
[...512 dimension vector...]
0.0350437127
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
המשך
קבלת הטמעות של תמונות וטקסט (multimodalembedding@001)
בדוגמאות הקוד הבאות אפשר לראות איך לשלוח בקשת הטמעה עם נתונים של תמונות וטקסט. בדוגמאות מוצג איך לשלוח בקשה עם שני סוגי הנתונים, אבל אפשר להשתמש בשירות גם עם סוג נתונים אחד.
קבלת הטמעות של טקסט ותמונות
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
-
TEXT: טקסט היעד ליצירת הטמעות. לדוגמה,
a cat. - B64_ENCODED_IMG: תמונת היעד שרוצים לקבל הטבעות בשבילה. התמונה צריכה להיות מחרוזת בייטים בקידוד base64.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
גוף בקשת JSON:
{
"instances": [
{
"text": "TEXT",
"image": {
"bytesBase64Encoded": "B64_ENCODED_IMG"
}
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"textEmbedding": [
0.010477379,
-0.00399621,
0.00576670747,
[...]
-0.00823613815,
-0.0169572588,
-0.00472954148
],
"imageEmbedding": [
0.00262696808,
-0.00198890246,
0.0152047109,
-0.0103145819,
[...]
0.0324628279,
0.0284924973,
0.011650892,
-0.00452344026
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
קבלת הטמעה של סרטון, תמונה או טקסט (multimodalembedding@001)
כששולחים בקשה להטמעה, אפשר לציין רק סרטון קלט, או לשלב בין נתוני וידאו, תמונה וטקסט.
מצבי הטמעה של סרטונים
יש שלושה מצבים שבהם אפשר להשתמש בהטמעות של סרטונים: חיוני, רגיל או פלוס. ההגדרה הזו תואמת לצפיפות של ההטמעות שנוצרות, שאפשר לציין אותה באמצעות interval_sec config בבקשה. לכל מרווח של סרטון באורך interval_sec נוצרת הטמעה. אורך המרווח המינימלי בין סרטונים הוא 4 שניות. אורכי מרווחים שגדולים מ-120 שניות
עלולים להשפיע לרעה על איכות ההטמעות שנוצרות.
התמחור של הטמעת סרטונים תלוי במצב שבו משתמשים. מידע נוסף זמין במחירון.
בטבלה הבאה מפורטים שלושת המצבים שבהם אפשר להשתמש בהטמעות של סרטונים:
| מצב | מספר ההטמעות המקסימלי בדקה | מרווח הטמעה של סרטון (ערך מינימלי) |
|---|---|---|
| Essential | 4 | 15 הערך הזה תואם ל: intervalSec >= 15 |
| רגילה | 8 | 8 הערך הזה תואם ל: 8 <= intervalSec < 15 |
| Plus | 15 | 4 התנאי הזה מתאים ל: 4 <= intervalSec < 8 |
שיטות מומלצות להטמעת סרטונים
כששולחים בקשות להטמעת סרטונים, חשוב לשים לב לנקודות הבאות:
כדי ליצור הטמעה אחת לשתי הדקות הראשונות של סרטון קלט בכל אורך, משתמשים בהגדרה
videoSegmentConfigהבאה:request.json:// other request body content "videoSegmentConfig": { "intervalSec": 120 } // other request body contentכדי ליצור הטמעה של סרטון באורך של יותר משתי דקות, אפשר לשלוח כמה בקשות שבהן מציינים את זמני ההתחלה והסיום בפורמט
videoSegmentConfig:request1.json:// other request body content "videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120 } // other request body contentrequest2.json:// other request body content "videoSegmentConfig": { "startOffsetSec": 120, "endOffsetSec": 240 } // other request body contentקבלת הטמעות של סרטונים
כדי לקבל הטמעות של תוכן וידאו בלבד, אפשר להשתמש בדוגמה הבאה.
REST
בדוגמה הבאה נעשה שימוש בסרטון שנמצא ב-Cloud Storage. אפשר גם להשתמש בשדה video.bytesBase64Encoded כדי לספק ייצוג מחרוזת של הסרטון בקידוד base64.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: Google Cloud מזהה הפרויקט.
-
VIDEO_URI: ה-URI של Cloud Storage של סרטון היעד שאליו רוצים לקבל הטמעות. לדוגמה:
gs://my-bucket/embeddings/supermarket-video.mp4.אפשר גם לספק את הסרטון כמחרוזת בייטים בקידוד Base64:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] -
videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS). אופציונלי. פלחים ספציפיים של סרטונים (בשניות) שעבורם נוצרים ההטמעות.לדוגמה:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]ההגדרה הזו מציינת נתוני סרטון מ-10 שניות עד 60 שניות, ומייצרת הטמעות למרווחי הזמן הבאים של סרטונים באורך 10 שניות: [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). האינטרוול הזה של הסרטון (
"intervalSec": 10) נכלל ב מצב ההטמעה הרגיל של הסרטון, ותחויבו לפי תעריף התמחור של המצב הרגיל.אם לא מציינים את
videoSegmentConfig, השירות משתמש בערכי ברירת המחדל הבאים:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }. האינטרוול הזה של הסרטון ("intervalSec": 16) נכלל במצב ההטמעה של הסרטון Essential, והמשתמש מחויב לפי תעריף התמחור של מצב Essential.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
גוף בקשת JSON:
{
"instances": [
{
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
תשובה (סרטון באורך 7 שניות, לא צוין videoSegmentConfig):
{
"predictions": [
{
"videoEmbeddings": [
{
"endOffsetSec": 7,
"embedding": [
-0.0045467657,
0.0258095954,
0.0146885719,
0.00945400633,
[...]
-0.0023291884,
-0.00493789,
0.00975185353,
0.0168156829
],
"startOffsetSec": 0
}
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}תגובה (סרטון באורך 59 שניות, עם הגדרת פלח הסרטון הבאה: "videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 60, "intervalSec": 10 }):
{
"predictions": [
{
"videoEmbeddings": [
{
"endOffsetSec": 10,
"startOffsetSec": 0,
"embedding": [
-0.00683252793,
0.0390476175,
[...]
0.00657121744,
0.013023301
]
},
{
"startOffsetSec": 10,
"endOffsetSec": 20,
"embedding": [
-0.0104404651,
0.0357737206,
[...]
0.00509833824,
0.0131902946
]
},
{
"startOffsetSec": 20,
"embedding": [
-0.0113538112,
0.0305239167,
[...]
-0.00195809244,
0.00941874553
],
"endOffsetSec": 30
},
{
"embedding": [
-0.00299320649,
0.0322436653,
[...]
-0.00993082579,
0.00968887936
],
"startOffsetSec": 30,
"endOffsetSec": 40
},
{
"endOffsetSec": 50,
"startOffsetSec": 40,
"embedding": [
-0.00591270532,
0.0368893594,
[...]
-0.00219071587,
0.0042470959
]
},
{
"embedding": [
-0.00458270218,
0.0368121453,
[...]
-0.00317760976,
0.00595594104
],
"endOffsetSec": 59,
"startOffsetSec": 50
}
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
קבלת הטמעות של תמונות, טקסט וסרטונים
בדוגמה הבאה מוסבר איך ליצור הטמעה של תוכן וידאו, טקסט ותמונות.
REST
בדוגמה הבאה נעשה שימוש בנתוני תמונה, טקסט וסרטון. אפשר להשתמש בכל שילוב של סוגי הנתונים האלה בגוף הבקשה.
בנוסף, הדוגמה הזו משתמשת בסרטון שנמצא ב-Cloud Storage. אפשר גם להשתמש בשדה video.bytesBase64Encoded כדי לספק ייצוג מחרוזת של הסרטון בקידוד base64.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
-
TEXT: טקסט היעד ליצירת הטמעות. לדוגמה,
a cat. -
IMAGE_URI: ה-URI של Cloud Storage של תמונת היעד שאליה רוצים לקבל הטמעות. לדוגמה:
gs://my-bucket/embeddings/supermarket-img.png.אפשר גם לספק את התמונה כמחרוזת בייטים בקידוד Base64:
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] -
VIDEO_URI: ה-URI של Cloud Storage של סרטון היעד שאליו רוצים לקבל הטמעות. לדוגמה:
gs://my-bucket/embeddings/supermarket-video.mp4.אפשר גם לספק את הסרטון כמחרוזת בייטים בקידוד Base64:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] -
videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS). אופציונלי. פלחים ספציפיים של סרטונים (בשניות) שעבורם נוצרים ההטמעות.לדוגמה:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]הגדרת התצורה הזו מציינת נתוני סרטון מ-10 שניות עד 60 שניות, ומייצרת הטמעות למרווחי הסרטון הבאים של 10 שניות: [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). האינטרוול הזה של הסרטון (
"intervalSec": 10) נכלל ב מצב ההטמעה הרגיל של הסרטון, ולכן תחויבו לפי תעריף התמחור של המצב הרגיל.אם לא מציינים את
videoSegmentConfig, השירות משתמש בערכי ברירת המחדל הבאים:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }. ההפעלה של הסרטון הזה ("intervalSec": 16) מתבצעת במצב הטמעה חיוני של סרטונים, והמשתמש מחויב לפי תעריף התמחור של מצב חיוני.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
גוף בקשת JSON:
{
"instances": [
{
"text": "TEXT",
"image": {
"gcsUri": "IMAGE_URI"
},
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"textEmbedding": [
0.0105433334,
-0.00302835181,
0.00656806398,
0.00603460241,
[...]
0.00445805816,
0.0139605571,
-0.00170318608,
-0.00490092579
],
"videoEmbeddings": [
{
"startOffsetSec": 0,
"endOffsetSec": 7,
"embedding": [
-0.00673126569,
0.0248149596,
0.0128901172,
0.0107588246,
[...]
-0.00180952181,
-0.0054573305,
0.0117037306,
0.0169312079
]
}
],
"imageEmbedding": [
-0.00728622358,
0.031021487,
-0.00206603738,
0.0273937676,
[...]
-0.00204976718,
0.00321615417,
0.0121978866,
0.0193375275
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
המאמרים הבאים
- מומלץ לקרוא את הפוסט בבלוג "What is Multimodal Search: 'LLMs with vision' change businesses" (מהו חיפוש מולטימודאלי: 'מודלים גדולים של שפה עם ראייה' משנים את העסקים).
- למידע על תרחישי שימוש שמבוססים על טקסט בלבד (חיפוש סמנטי מבוסס-טקסט, קיבוץ, ניתוח מסמכים ארוכים ותרחישי שימוש אחרים של אחזור טקסט או מענה לשאלות), אפשר לקרוא את המאמר קבלת הטמעות טקסט.
- אפשר לעיין במודלים נוספים שאומנו מראש ב-Model Garden.
- מידע על שיטות מומלצות לשימוש ב-AI באופן אחראי ועל מסנני בטיחות ב-Gemini Enterprise Agent Platform