יצירת הטמעות טקסט באמצעות הפונקציה AI.GENERATE_EMBEDDING
במאמר הזה מוסבר איך ליצור מודל מרוחק ב-BigQuery ML שמפנה למודל הטמעה. אחר כך משתמשים במודל הזה עם הפונקציה AI.GENERATE_EMBEDDING כדי ליצור הטמעות טקסט באמצעות נתונים מטבלה רגילה ב-BigQuery.
אפשר להשתמש בסוגים הבאים של מודלים מרוחקים:
התפקידים הנדרשים
כדי ליצור מודל מרוחק ולהשתמש בפונקציה AI.GENERATE_EMBEDDING, צריך את התפקידים הבאים בממשק לניהול הזהויות והרשאות הגישה (IAM):
- יצירה ושימוש במערכי נתונים, בטבלאות ובמודלים של BigQuery:
התפקיד "עריכת נתונים ב-BigQuery" (
roles/bigquery.dataEditor) בפרויקט. יצירה, הקצאה ושימוש בחיבורים ל-BigQuery: התפקיד "אדמין של חיבורים ל-BigQuery" (
roles/bigquery.connectionsAdmin) בפרויקט.אם לא הגדרתם חיבור כברירת מחדל, אתם יכולים ליצור ולהגדיר חיבור כחלק מהרצת ההצהרה
CREATE MODEL. כדי לעשות את זה, צריך להיות לכם תפקיד אדמין ב-BigQuery (roles/bigquery.admin) בפרויקט. מידע נוסף זמין במאמר הגדרת החיבור שמוגדר כברירת מחדל.נותנים הרשאות לחשבון השירות של החיבור: אדמין של IAM בפרויקט (
roles/resourcemanager.projectIamAdmin) בפרויקט שמכיל את נקודת הקצה של Gemini Enterprise Agent Platform. זה הפרויקט הנוכחי של מודלים מרוחקים שיוצרים על ידי ציון שם המודל כנקודת קצה. זה הפרויקט שמזוהה בכתובת ה-URL של מודלים מרוחקים שאתם יוצרים על ידי ציון כתובת URL כנקודת קצה.יצירת משימות ב-BigQuery: התפקיד "משתמש במשימות BigQuery" (
roles/bigquery.jobUser) בפרויקט.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לבצע את המשימות שמפורטות במאמר הזה. כדי לראות את ההרשאות הנדרשות, מרחיבים את הקטע Required Permissions:
ההרשאות הנדרשות
- יצירת מערך נתונים:
bigquery.datasets.create - יצירה, הקצאה ושימוש בחיבור:
bigquery.connections.* - מגדירים את ההרשאות של חשבון השירות:
resourcemanager.projects.getIamPolicyו-resourcemanager.projects.setIamPolicy - יוצרים מודל ומריצים הסקה:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
- נתוני טבלת השאילתות:
bigquery.tables.getData
יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
לפני שמתחילים
-
בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים?
-
מפעילים את ממשקי ה-API של BigQuery, של BigQuery Connection ושל Agent Platform API, אם הם עדיין לא מופעלים.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
יצירת קבוצת נתונים
יוצרים מערך נתונים ב-BigQuery שיכיל את המשאבים:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית השמאלית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, לוחצים על שם הפרויקט.
לוחצים על View actions > Create dataset.
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID, מקלידים שם למערך הנתונים.
בקטע Location type, בוחרים באפשרות Region או Multi-region.
- אם בחרתם באפשרות Region, בוחרים מיקום מהרשימה Region.
- אם בחרתם באפשרות מספר אזורים, בחרו באפשרות US או Europe מהרשימה מספר אזורים.
לוחצים על Create dataset.
BQ
יצירת חיבור
יוצרים קישור למשאבים ב-Cloud ומקבלים את חשבון השירות של הקישור. יוצרים את החיבור באותו מיקום של מערך הנתונים שיצרתם בשלב הקודם.
אם הגדרתם חיבור כברירת מחדל או שיש לכם את התפקיד אדמין ב-BigQuery, אתם יכולים לדלג על השלב הזה.
בוחרים באחת מהאפשרויות הבאות:המסוף
נכנסים לדף BigQuery.
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את שם הפרויקט ולוחצים על Connections.
בדף Connections, לוחצים על Create connection.
בשדה Connection type, בוחרים באפשרות Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).
בשדה מזהה החיבור, נותנים שם לחיבור.
בשדה Location type, בוחרים מיקום לחיבור. החיבור צריך להיות באותו מיקום כמו המשאבים האחרים, למשל מערכי נתונים.
לוחצים על יצירת חיבור.
לוחצים על מעבר לחיבור.
בחלונית Connection info, מעתיקים את מזהה חשבון השירות כדי להשתמש בו בשלב מאוחר יותר.
SQL
משתמשים בהצהרה CREATE CONNECTION:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE CONNECTION [IF NOT EXISTS] `CONNECTION_NAME` OPTIONS ( connection_type = "CLOUD_RESOURCE", friendly_name = "FRIENDLY_NAME", description = "DESCRIPTION" );
מחליפים את מה שכתוב בשדות הבאים:
-
CONNECTION_NAME: שם החיבור בפורמטPROJECT_ID.LOCATION.CONNECTION_ID,LOCATION.CONNECTION_IDאוCONNECTION_ID. אם לא מציינים את הפרויקט או המיקום, הם נגזרים מהפרויקט ומהמיקום שבהם ההצהרה מופעלת. -
FRIENDLY_NAME(אופציונלי): שם תיאורי לחיבור. -
DESCRIPTION(אופציונלי): תיאור של החיבור.
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
בסביבה של שורת הפקודה, יוצרים חיבור:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
הפרמטר
--project_idמבטל את פרויקט ברירת המחדל.מחליפים את מה שכתוב בשדות הבאים:
-
REGION: אזור החיבור שלכם -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
CONNECTION_ID: מזהה לחיבור
כשיוצרים משאב חיבור, BigQuery יוצר חשבון שירות ייחודי של המערכת ומשייך אותו לחיבור.
פתרון בעיות: אם מופיעה שגיאת החיבור הבאה, עדכנו את Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
-
מאחזרים ומעתיקים את מזהה חשבון השירות כדי להשתמש בו בשלב מאוחר יותר:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
הפלט אמור להיראות כך:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Terraform
משתמשים במשאב google_bigquery_connection.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
בדוגמה הבאה נוצר קישור למשאבים ב-Cloud בשם my_cloud_resource_connection באזור US:
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
הקצאת תפקיד לחשבון השירות של החיבור למודל המרוחק
אתם צריכים להקצות לחשבון השירות של החיבור את התפקיד "משתמש בפלטפורמת הסוכנים".
אם אתם מתכננים לציין את נקודת הקצה ככתובת URL כשאתם יוצרים את המודל המרוחק, למשל endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/text-embedding-005', אתם צריכים להקצות את התפקיד הזה באותו פרויקט שציינתם בכתובת ה-URL.
אם אתם מתכננים לציין את נקודת הקצה באמצעות שם המודל כשאתם יוצרים את המודל המרוחק, למשל endpoint = 'text-embedding-005', הקצו את התפקיד הזה באותו פרויקט שבו אתם מתכננים ליצור את המודל המרוחק.
אם מקצים את התפקיד בפרויקט אחר, מופיעה השגיאה bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource.
כדי להקצות את התפקיד:
המסוף
נכנסים לדף IAM & Admin.
לוחצים על Grant access.
תיבת הדו-שיח Add principals נפתחת.
בשדה New principals, מזינים את מזהה חשבון השירות שהעתקתם קודם.
בשדה Select a role, מחפשים את Agent Platform User.
לוחצים על Save.
gcloud
משתמשים בפקודה gcloud projects add-iam-policy-binding:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
MEMBER: מזהה חשבון השירות שהעתקתם קודם
בחירת שיטת פריסה של מודל פתוח
אם אתם יוצרים מודל מרוחק על בסיס מודל פתוח נתמך, אתם יכולים לפרוס את המודל הפתוח באופן אוטומטי בזמן שאתם יוצרים את המודל המרוחק. כדי לעשות את זה, צריך לציין את מזהה המודל של Agent Platform Model Garden או של Hugging Face בהצהרת CREATE MODEL.
לחלופין, אתם יכולים לפרוס באופן ידני את המודל הפתוח קודם, ואז להשתמש במודל הפתוח הזה עם המודל המרוחק על ידי ציון נקודת הקצה של המודל בהצהרה CREATE MODEL. מידע נוסף זמין במאמר פריסת מודלים פתוחים.
יצירת מודל מרוחק של BigQuery ML
יוצרים מודל מרוחק:
מודלים של Agent Platform
נכנסים לדף BigQuery במסוף Google Cloud .
יוצרים מודל מרוחק באמצעות עורך ה-SQL:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS (ENDPOINT = 'ENDPOINT');
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET_ID: המזהה של קבוצת הנתונים שתכיל את המודל. מערך הנתונים הזה צריך להיות באותו מיקום של החיבור שבו אתם משתמשים. -
MODEL_NAME: שם המודל. -
REGION: האזור שבו משתמשים בחיבור. -
CONNECTION_ID: המזהה של החיבור ל-BigQuery.כדי לקבל את הערך הזה, מציגים את פרטי החיבור במסוף Google Cloud ומעתיקים את הערך בקטע האחרון של מזהה החיבור המלא שמוצג ב-Connection ID. לדוגמה,
projects/myproject/locations/connection_location/connections/myconnection. -
ENDPOINT: השם של מודל ההטמעה שבו רוצים להשתמש. מידע נוסף זמין במאמרENDPOINT.המודל של Agent Platform שאתם מציינים צריך להיות זמין במיקום שבו אתם יוצרים את המודל המרוחק. מידע נוסף זמין במאמר מיקומים.
מודלים פתוחים חדשים
נכנסים לדף BigQuery במסוף Google Cloud .
יוצרים מודל מרוחק באמצעות עורך ה-SQL:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( {HUGGING_FACE_MODEL_ID = 'HUGGING_FACE_MODEL_ID' | MODEL_GARDEN_MODEL_NAME = 'MODEL_GARDEN_MODEL_NAME'} [, HUGGING_FACE_TOKEN = 'HUGGING_FACE_TOKEN' ] [, MACHINE_TYPE = 'MACHINE_TYPE' ] [, MIN_REPLICA_COUNT = MIN_REPLICA_COUNT ] [, MAX_REPLICA_COUNT = MAX_REPLICA_COUNT ] [, RESERVATION_AFFINITY_TYPE = {'NO_RESERVATION' | 'ANY_RESERVATION' | 'SPECIFIC_RESERVATION'} ] [, RESERVATION_AFFINITY_KEY = 'compute.googleapis.com/reservation-name' ] [, RESERVATION_AFFINITY_VALUES = RESERVATION_AFFINITY_VALUES ] [, ENDPOINT_IDLE_TTL = ENDPOINT_IDLE_TTL ] );
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET_ID: המזהה של קבוצת הנתונים שתכיל את המודל. מערך הנתונים הזה צריך להיות באותו מיקום של החיבור שבו אתם משתמשים. -
MODEL_NAME: שם המודל. -
REGION: האזור שבו משתמשים בחיבור. -
CONNECTION_ID: המזהה של החיבור ל-BigQuery.כדי לקבל את הערך הזה, מציגים את פרטי החיבור במסוף Google Cloud ומעתיקים את הערך בקטע האחרון של מזהה החיבור המלא שמוצג ב-Connection ID. לדוגמה,
projects/myproject/locations/connection_location/connections/myconnection. -
HUGGING_FACE_MODEL_ID: ערךSTRINGשמציין את מזהה המודל של מודל Hugging Face נתמך, בפורמטprovider_name/model_name. לדוגמה,deepseek-ai/DeepSeek-R1. כדי לקבל את מזהה המודל, לוחצים על שם המודל ב-Hugging Face Model Hub ומעתיקים את מזהה המודל מהחלק העליון של כרטיס המודל. -
MODEL_GARDEN_MODEL_NAME: ערך מסוגSTRINGשמציין את מזהה המודל ואת גרסת המודל של מודל נתמך ב-Model Garden של Gemini Enterprise Agent Platform, בפורמטpublishers/publisher/models/model_name@model_version. לדוגמה,publishers/openai/models/gpt-oss@gpt-oss-120b. כדי לקבל את מזהה המודל, לוחצים על כרטיס המודל ב-Agent Platform Model Garden ואז מעתיקים את מזהה המודל מהשדה Model ID. כדי לקבל את גרסת ברירת המחדל של המודל, מעתיקים אותה מהשדה Version בכרטיס המודל. כדי לראות גרסאות אחרות של המודל שאפשר להשתמש בהן, לוחצים על Deploy model ואז על השדה Resource ID. -
HUGGING_FACE_TOKEN: ערךSTRINGשמציין את טוקן הגישה של המשתמש ב-Hugging Face שבו רוצים להשתמש. אפשר לציין ערך לאפשרות הזו רק אם מציינים גם ערך לאפשרותHUGGING_FACE_MODEL_ID.האסימון חייב להיות לפחות עם התפקיד
read, אבל אפשר גם להשתמש באסימונים עם היקף רחב יותר. האפשרות הזו נדרשת כשהמודל שזוהה על ידי הערךHUGGING_FACE_MODEL_IDהוא מודל פרטי או מודל עם גישה מוגבלת (gated) של Hugging Face.בחלק מהמודלים המוגבלים, צריך לאשר באופן מפורש את התנאים וההגבלות כדי לקבל גישה. כדי לאשר את התנאים האלה, צריך לפעול לפי השלבים הבאים:
- עוברים לדף של המודל באתר Hugging Face.
- מוצאים את התנאים וההגבלות של המודל וקוראים אותם. בדרך כלל, קישור להסכם השירות מופיע בכרטיס המודל.
- מאשרים את התנאים שמופיעים בדף.
-
MACHINE_TYPE: ערךSTRINGשמציין את סוג המכונה שבה משתמשים כשפורסים את המודל ב-Agent Platform. למידע על סוגי המכונות הנתמכים, קראו את המאמר סוגי מכונות. אם לא מציינים ערך לאפשרותMACHINE_TYPE, המערכת משתמשת בסוג המכונה שמוגדר כברירת מחדל למודל ב-Agent Platform Model Garden. -
MIN_REPLICA_COUNT: ערךINT64שמציין את המספר המינימלי של רפליקות של מכונות שבהן נעשה שימוש כשפורסים את המודל בנקודת קצה (endpoint) של Agent Platform. השירות מגדיל או מקטין את מספר הרפליקות לפי הצורך, בהתאם לעומס ההסקה בנקודת הקצה. מספר הרפליקות שבהן נעשה שימוש אף פעם לא נמוך מהערך שלMIN_REPLICA_COUNTואף פעם לא גבוה מהערך שלMAX_REPLICA_COUNT. הערך שלMIN_REPLICA_COUNTחייב להיות בטווח[1, 4096]. ערך ברירת המחדל הוא1. -
MAX_REPLICA_COUNT: ערךINT64שמציין את המספר המקסימלי של רפליקות של מכונות שבהן נעשה שימוש כשפורסים את המודל בנקודת קצה (endpoint) של Agent Platform. השירות מגדיל או מקטין את מספר הרפליקות לפי הצורך, בהתאם לעומס ההסקה בנקודת הקצה. מספר הרפליקות שבהן נעשה שימוש אף פעם לא נמוך מהערך שלMIN_REPLICA_COUNTואף פעם לא גבוה מהערך שלMAX_REPLICA_COUNT. הערך שלMAX_REPLICA_COUNTחייב להיות בטווח[1, 4096]. ערך ברירת המחדל הוא הערך שלMIN_REPLICA_COUNT. -
RESERVATION_AFFINITY_TYPE: קובע אם המודל שנפרס משתמש בהזמנות של Compute Engine כדי להבטיח את הזמינות של המכונה הווירטואלית (VM) בזמן הצגת החיזויים, ומציין אם המודל משתמש במכונות וירטואליות מכל ההזמנות הזמינות או רק מהזמנה ספציפית אחת. מידע נוסף זמין במאמר הגדרת מאפייני הזמנת מקום ב-Compute Engine.אפשר להשתמש רק בהזמנות של Compute Engine שמשותפות עם Agent Platform. מידע נוסף זמין במאמר אישור לשימוש בהזמנה.
הערכים הנתמכים הם:
-
NO_RESERVATION: לא נעשה שימוש בהזמנה כשפורסים את המודל בנקודת קצה של Agent Platform. הגדרתNO_RESERVATIONזהה לאי-הגדרה של זיקה להזמנה. -
ANY_RESERVATION: פריסת המודל של Agent Platform צורכת מכונות וירטואליות (VM) מהזמנות של Compute Engine שנמצאות בפרויקט הנוכחי או שמשותפות עם הפרויקט, ומוגדרות לצריכה אוטומטית. רק מכונות וירטואליות שעומדות בדרישות הבאות משמשות למשימה:- הם משתמשים בסוג המכונה שצוין בערך
MACHINE_TYPE. - אם מערך הנתונים ב-BigQuery שבו אתם יוצרים את המודל המרוחק נמצא באזור אחד, ההזמנה צריכה להיות באותו אזור. אם מערך הנתונים נמצא באזור
US, ההזמנה חייבת להיות באזורus-central1. אם מערך הנתונים נמצא באזורEU, ההזמנה צריכה להיות באזורeurope-west4.
אם אין מספיק קיבולת בהזמנות הזמינות, או אם לא נמצאו הזמנות מתאימות, המערכת מקצה מכונות וירטואליות של Compute Engine על פי דרישה כדי לעמוד בדרישות המשאבים.
- הם משתמשים בסוג המכונה שצוין בערך
-
SPECIFIC_RESERVATION: פריסת המודל של Agent Platform צורכת מכונות וירטואליות רק מההזמנה שציינתם בערךRESERVATION_AFFINITY_VALUES. צריך להגדיר את הבקשה לשימוש ספציפי. הפריסה תיכשל אם אין מספיק קיבולת בהזמנה שצוינה.
-
-
RESERVATION_AFFINITY_KEY: המחרוזתcompute.googleapis.com/reservation-name. צריך לציין את האפשרות הזו כשהערך שלRESERVATION_AFFINITY_TYPEהואSPECIFIC_RESERVATION. -
RESERVATION_AFFINITY_VALUES: ערךARRAY<STRING>שמציין את שם המשאב המלא של ההזמנה ב-Compute Engine, בפורמט הבא:
projects/myproject/zones/reservation_zone/reservations/reservation_nameלדוגמה,
RESERVATION_AFFINITY_values = ['projects/myProject/zones/us-central1-a/reservations/myReservationName'].אפשר לקבל את שם ההזמנה והאזור מהדף Reservations במסוף Google Cloud . מידע נוסף זמין במאמר הצגת הזמנות.
צריך לציין את האפשרות הזו כשהערך של
RESERVATION_AFFINITY_TYPEהואSPECIFIC_RESERVATION. -
ENDPOINT_IDLE_TTL: ערך מסוגINTERVALשמציין את משך הזמן של חוסר הפעילות שאחריו המודל הפתוח יוסר באופן אוטומטי מנקודת הקצה של Agent Platform.כדי להפעיל ביטול פריסה אוטומטי, מציינים ערך של ליטרל מרווח בין 390 דקות (6.5 שעות) ל-7 ימים. לדוגמה, אם מציינים
INTERVAL 8 HOUR, פריסת המודל תבוטל אחרי 8 שעות של חוסר פעילות. ערך ברירת המחדל הוא 390 דקות (6.5 שעות).חוסר פעילות של מודל מוגדר כמשך הזמן שחלף מאז שבוצעה אחת מהפעולות הבאות במודל:
- מריצים את ההצהרה
CREATE MODEL. - הרצת ההצהרה
ALTER MODELכשהארגומנטDEPLOY_MODELמוגדר כ-TRUE. - שליחת בקשת הסקה לנקודת הקצה של המודל. לדוגמה, על ידי הפעלת הפונקציה
AI.GENERATE_EMBEDDINGאוAI.GENERATE_TEXT.
כל אחת מהפעולות האלה מאפסת את טיימר חוסר הפעילות לאפס. האיפוס מופעל בתחילת המשימה ב-BigQuery שמבצעת את הפעולה.
אחרי ביטול הפריסה של המודל, בקשות להסקת מסקנות שנשלחות למודל מחזירות שגיאה. האובייקט של המודל ב-BigQuery לא משתנה, כולל המטא-נתונים של המודל. כדי להשתמש שוב במודל להסקת מסקנות, צריך לפרוס אותו מחדש על ידי הפעלת ההצהרה
ALTER MODELבמודל והגדרת האפשרותDEPLOY_MODELל-TRUE. - מריצים את ההצהרה
מודלים פתוחים שנפרסו
נכנסים לדף BigQuery במסוף Google Cloud .
יוצרים מודל מרוחק באמצעות עורך ה-SQL:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID' );
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET_ID: המזהה של קבוצת הנתונים שתכיל את המודל. מערך הנתונים הזה צריך להיות באותו מיקום של החיבור שבו אתם משתמשים. -
MODEL_NAME: שם המודל. -
REGION: האזור שבו משתמשים בחיבור. -
CONNECTION_ID: המזהה של החיבור ל-BigQuery.כדי לקבל את הערך הזה, מציגים את פרטי החיבור במסוף Google Cloud ומעתיקים את הערך בקטע האחרון של מזהה החיבור המלא שמוצג ב-Connection ID. לדוגמה,
projects/myproject/locations/connection_location/connections/myconnection. -
ENDPOINT_REGION: האזור שבו נפרס המודל הפתוח. -
ENDPOINT_PROJECT_ID: הפרויקט שבו נפרס המודל הפתוח. -
ENDPOINT_ID: המזהה של נקודת הקצה (endpoint) מסוג HTTPS שמשמשת את המודל הפתוח. כדי לקבל את מזהה נקודת הקצה, מאתרים את המודל הפתוח בדף Online prediction ומעתיקים את הערך בשדה ID.
יצירת הטמעות טקסט
יוצרים הטמעות טקסט באמצעות הפונקציה AI.GENERATE_EMBEDDING, על סמך נתוני טקסט מעמודה בטבלה או משאילתה.
בדרך כלל, משתמשים במודל הטמעת טקסט לתרחישים לדוגמה של טקסט בלבד, ובמודל הטמעה מולטי-מודאלי לתרחישים לדוגמה של חיפוש חוצה-מודלים, שבהם הטמעות של טקסט ותוכן חזותי נוצרות באותו מרחב סמנטי.
טקסט ב-Agent Platform
כדי ליצור הטמעות טקסט באמצעות מודל מרוחק במודל הטמעת טקסט של Agent Platform:
SELECT * FROM AI.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, STRUCT(TASK_TYPE AS task_type, OUTPUT_DIMENSIONALITY AS output_dimensionality) );
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET_ID: המזהה של קבוצת הנתונים שמכילה את המודל. -
MODEL_NAME: השם של המודל המרוחק מעל מודל הטמעה. -
TABLE_NAME: שם הטבלה שמכילה את הטקסט להטמעה. בטבלה הזו חייבת להיות עמודה בשםcontent, או שאפשר להשתמש בכינוי כדי להשתמש בעמודה עם שם אחר. -
CONTENT_QUERY: שאילתה שהתוצאה שלה מכילה עמודה מסוגSTRINGבשםcontent. -
TASK_TYPE: ערך מילולי מסוגSTRINGשמציין את האפליקציה הבאה בתור, כדי לעזור למודל ליצור הטמעות באיכות טובה יותר. TASK_TYPEמקבל את הערכים הבאים:-
RETRIEVAL_QUERY: מציין שהטקסט שניתן הוא שאילתה בהגדרה של חיפוש או אחזור. -
RETRIEVAL_DOCUMENT: מציין שהטקסט הנתון הוא מסמך בהגדרה של חיפוש או אחזור.כשמשתמשים בסוג המשימה הזה, כדאי לכלול את שם המסמך בהצהרת השאילתה כדי לשפר את איכות ההטמעה. כותרת המסמך צריכה להיות בעמודה בשם
titleאו עם הכינויtitle, לדוגמה:SELECT * FROM AI.GENERATE_EMBEDDING( MODEL
mydataset.embedding_model, (SELECT abstract as content, header as title, publication_number FROMmydataset.publications), STRUCT('RETRIEVAL_DOCUMENT' as task_type) );כשמציינים את עמודת הכותרת בשאילתת הקלט, המערכת מאכלסת את השדה
titleבגוף הבקשה שנשלח למודל. אם תציינו ערך שלtitleכשתשתמשו בסוג משימה אחר, המערכת תתעלם מהקלט הזה ולא תהיה לו השפעה על תוצאות ההטמעה. -
SEMANTIC_SIMILARITY: מציין שהטקסט שצוין ישמש ל-Semantic Textual Similarity (STS). -
CLASSIFICATION: מציין שההטמעות ישמשו לסיווג. -
CLUSTERING: מציין שההטמעות ישמשו לאשכולות. -
QUESTION_ANSWERING: מציין שההטמעות ישמשו למענה על שאלות. -
FACT_VERIFICATION: מציין שההטמעות ישמשו לאימות עובדות. -
CODE_RETRIEVAL_QUERY: מציין שההטמעות ישמשו לאחזור קוד.
-
-
OUTPUT_DIMENSIONALITY: ערך מסוגINT64שמציין את מספר המאפיינים שבהם צריך להשתמש כשיוצרים הטמעות. לדוגמה, אם מציינים256 AS output_dimensionality, עמודת הפלטembeddingמכילה הטמעה של 256 ממדים לכל ערך קלט.במודלים מרוחקים מסוג
gemini-embedding-2-previewאוgemini-embedding-001, הערך שלOUTPUT_DIMENSIONALITYצריך להיות בטווח[1, 3072]. ערך ברירת המחדל הוא3072. במודלים מרוחקים שלtext-embedding, הערך שלOUTPUT_DIMENSIONALITYחייב להיות בטווח[1, 768]. ערך ברירת המחדל הוא768.
דוגמה: הטמעת טקסט בטבלה
בדוגמה הבאה מוצגת בקשה להטמעת העמודה content בטבלה text_data:
SELECT * FROM AI.GENERATE_EMBEDDING( MODEL `mydataset.embedding_model`, TABLE mydataset.text_data, STRUCT('CLASSIFICATION' AS task_type) );
טקסט חופשי
הערה: כדי לשלוח משוב או לבקש תמיכה לגבי התכונה הזו, אפשר לפנות לכתובת bqml-feedback@google.com.
יצירת הטמעות טקסט באמצעות מודל מרוחק על מודל הטמעה פתוח:
SELECT * FROM AI.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, );
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET_ID: המזהה של קבוצת הנתונים שמכילה את המודל. -
MODEL_NAME: השם של המודל המרוחק מעל מודל הטמעה. -
TABLE_NAME: שם הטבלה שמכילה את הטקסט להטמעה. בטבלה הזו חייבת להיות עמודה בשםcontent, או שאפשר להשתמש בכינוי כדי להשתמש בעמודה עם שם אחר. -
CONTENT_QUERY: שאילתה שהתוצאה שלה מכילה עמודה מסוגSTRINGבשםcontent.
מודל מולטי-מודאלי ב-Agent Platform
כדי ליצור הטמעות טקסט באמצעות מודל מרוחק על מודל הטמעה מולטי-מודאלי של Agent Platform:
SELECT * FROM AI.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, STRUCT(OUTPUT_DIMENSIONALITY AS output_dimensionality) );
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET_ID: המזהה של קבוצת הנתונים שמכילה את המודל. -
MODEL_NAME: השם של המודל המרוחק מעל מודלmultimodalembedding@001. -
TABLE_NAME: שם הטבלה שמכילה את הטקסט להטמעה. בטבלה הזו חייבת להיות עמודה בשםcontent, או שאפשר להשתמש בכינוי כדי להשתמש בעמודה עם שם אחר. -
CONTENT_QUERY: שאילתה שהתוצאה שלה מכילה עמודה מסוגSTRINGבשםcontent. -
OUTPUT_DIMENSIONALITY: ערךINT64שמציין את מספר המאפיינים שבהם צריך להשתמש כשיוצרים הטמעות. הערכים התקינים הם128,256,512ו-1408. ערך ברירת המחדל הוא1408. לדוגמה, אם מציינים את הערך256 AS output_dimensionality, עמודת הפלטembeddingמכילה הטמעה של 256 ממדים לכל ערך קלט.
דוגמה: שימוש בהטמעות כדי לדרג דמיון סמנטי
בדוגמה הבאה מוטמע אוסף של ביקורות על סרטים, והן מסודרות לפי מרחק קוסינוס מהביקורת "הסרט הזה היה ממוצע" באמצעות הפונקציה VECTOR_SEARCH.
מרחק קטן יותר מצביע על דמיון סמנטי רב יותר.
מידע נוסף על חיפוש וקטורי ואינדקס וקטורי זמין במאמר מבוא לחיפוש וקטורי.
CREATE TEMPORARY TABLE movie_review_embeddings AS ( SELECT * FROM AI.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`, ( SELECT "This movie was fantastic" AS content UNION ALL SELECT "This was the best movie I've ever seen!!" AS content UNION ALL SELECT "This movie was just okay..." AS content UNION ALL SELECT "This movie was terrible." AS content ) ) ); WITH average_review_embedding AS ( SELECT embedding FROM AI.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`, (SELECT "This movie was average" AS content) ) ) SELECT base.content AS content, distance AS distance_to_average_review FROM VECTOR_SEARCH( TABLE movie_review_embeddings, "embedding", (SELECT embedding FROM average_review_embedding), distance_type=>"COSINE", top_k=>-1 ) ORDER BY distance_to_average_review;
התוצאה אמורה להיראות כך:
+------------------------------------------+----------------------------+ | content | distance_to_average_review | +------------------------------------------+----------------------------+ | This movie was just okay... | 0.062789813467745592 | | This movie was fantastic | 0.18579561313064263 | | This movie was terrible. | 0.35707466240930985 | | This was the best movie I've ever seen!! | 0.41844932504542975 | +------------------------------------------+----------------------------+
המאמרים הבאים
- איך משתמשים בהטמעות של טקסט ותמונות כדי לבצע חיפוש סמנטי של יצירת תמונות לפי טקסט
- איך משתמשים בהטמעות טקסט לחיפוש סמנטי ול-Retrieval-Augmented Generation (יצירה משולבת-אחזור, RAG)