יצירה אוטונומית של הטמעת נתונים

במאמר הזה מוסבר איך להשתמש ביצירה אוטונומית של הטמעות לנתונים שלכם, שמאפשרת ל-BigQuery לתחזק עמודה של הטמעות בטבלה על סמך עמודת מקור. טיפוס הנתונים בעמודת המקור חייב להיות STRING או ObjectRef. כשמוסיפים נתונים בעמודת המקור או משנים אותם, BigQuery יוצר או מעדכן באופן אוטומטי את עמודת ההטמעה של הנתונים האלה באמצעות מודל הטמעה של Agent Platform. האפשרות הזו שימושית אם רוצים לאפשר ל-BigQuery לתחזק את ההטמעות כשנתוני המקור מתעדכנים באופן קבוע.

הטמעות שימושיות באפליקציות מודרניות של AI גנרטיבי כמו Retrieval Augmented Generation (יצירה משולבת-אחזור, RAG), אבל יכול להיות שיהיה מורכב ליצור, לנהל ולשאול אותן. אתם יכולים להשתמש ביצירת הטמעה אוטונומית כדי לפשט את התהליך של יצירה, תחזוקה ושאילתות של הטמעות לשימוש בחיפושים של דמיון ובאפליקציות אחרות של AI גנרטיבי.

לדוגמה, אפשר להשתמש בשאילתות דומות לאלה כדי ליצור טבלה עם הטמעה אוטונומית, להוסיף נתונים ואז לבצע חיפוש סמנטי:

CREATE TABLE mydataset.products (
  name STRING,
  description STRING,
  description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
    GENERATED ALWAYS AS (
      AI.EMBED(description, connection_id => 'us.example_connection',
        endpoint => 'text-embedding-005')
      # Alternatively, you can use the syntax for a built-in model.
      # AI.EMBED(description, model => 'embeddinggemma-300m')
    ) STORED OPTIONS( asynchronous = TRUE ));

# Values in the description_embedding column are automatically generated.
INSERT INTO mydataset.products (name, description) VALUES
  ('Super slingers', 'An exciting board game for the whole family'), ...;

SELECT * FROM AI.SEARCH(TABLE mydataset.products, 'description', 'A really fun toy');

לפני שמתחילים

כדי להפעיל יצירה אוטונומית של הטמעה בטבלה, צריכות להיות לכם ההרשאות והחיבור הדרושים, ועליכם להפעיל את Vertex AI API בפרויקט.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות בשביל להפעיל יצירה אוטונומית של הטמעה, אתם צריכים לבקש מהאדמין לתת לכם את תפקידי ה-IAM הבאים:

  • כדי להשתמש במשאב חיבור: BigQuery Connections User (roles/bigquery.connectionUser) on the connection
  • כדי ליצור או לשנות טבלה: BigQuery Data Editor (roles/bigquery.dataEditor) בטבלה
  • צריך להעניק לחשבון השירות של החיבור את התפקיד הבא כדי שהוא יוכל לגשת למודלים שמארחים בנקודות קצה של Agent Platform:‏ Agent Platform User (roles/aiplatform.user) בפרויקט שבו מוגדר החיבור.

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

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

יצירת חיבור והענקת הרשאה לחשבון שירות

כדי להפעיל יצירה אוטונומית של הטמעה בטבלה, צריך ליצור קישור למשאבים ב-Cloud. לאחר מכן, מעניקים את התפקיד 'משתמש ב-Agent Platform' (roles/aiplatform.user) לחשבון השירות שנוצר כשיוצרים את החיבור.

יצירת עמודה של הטמעה שנוצרת באופן אוטומטי

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

יצירת טבלה עם עמודה להטמעה שנוצרת באופן אוטומטי

אפשר להשתמש ביצירת הטמעה אוטונומית כדי ליצור הטמעות באמצעות הפונקציה AI.EMBED בהצהרת CREATE TABLE.

SQL

משתמשים בהצהרת CREATE TABLE כדי ליצור טבלה עם עמודת הטמעה שנוצרת באופן אוטומטי. כדי ליצור את הטבלה, פועלים לפי השלבים הבאים:

  1. במסוף Cloud de Confiance , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE TABLE DATASET_ID.TABLE (
      [COLUMN, ...]
      SOURCE_COL { STRING | ObjectRef },
      EMBEDDING_COL_NAME STRUCT<result ARRAY<FLOAT64>, status STRING>
        GENERATED ALWAYS AS (
          AI.EMBED(
            SOURCE_COL,
            {
              connection_id => CONNECTION_ID,
              endpoint => ENDPOINT |
              model => MODEL
            })
        )
        STORED OPTIONS (asynchronous = TRUE)
    );

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫DATASET_ID: השם של מערך הנתונים שבו רוצים ליצור את הטבלה.
    • ‫TABLE: השם של הטבלה שעליה רוצים ליצור הטמעה אוטונומית.
    • ‫COLUMN, ...: כל העמודות שהטבלה צריכה לכלול, בנוסף לעמודה שרוצים להטמיע באופן אוטומטי.
    • ‫SOURCE_COL: השם של העמודה STRING או ObjectRef שרוצים להטמיע אוטומטית.
    • ‫EMBEDDING_COL_NAME: השם של עמודת ההטמעה שנוצרה אוטומטית.
    • ‫CONNECTION_ID: ערך STRING שמכיל את השם של חיבור לשימוש, כמו my_project.us.example_connection. צריך להעניק את התפקיד Agent Platform User לחשבון השירות של החיבור בפרויקט שבו יוצרים את הטבלה.
    • ‫ENDPOINT: ערך STRING שמציין נקודת קצה של מודל הטמעת טקסט נתמך ב-Agent Platform, שמשמשת ליצירת הטמעת הטקסט. ערך נקודת הקצה שאתם מציינים צריך לכלול את גרסת המודל, לדוגמה, text-embedding-005. אם מציינים את שם המודל במקום כתובת URL, מערכת BigQuery ML מזהה את המודל באופן אוטומטי ומשתמשת בנקודת הקצה המלאה של המודל.
    • ‫MODEL (Preview): ערך STRING שמציין מודל הטמעת טקסט מובנה. הערך הנתמך היחיד הוא embeddinggemma-300m דגם. אם מציינים את הפרמטר הזה, אי אפשר לציין את הפרמטרים endpoint או connection_id. כשמציינים את הפרמטר MODEL, הנתונים נשארים ב-BigQuery ויחידות הקיבולת (Slots) משמשות ליצירת ההטמעות. לא נשלחים נתונים ל-Agent Platform ולא חלים חיובים ב-Agent Platform.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי ליצור טבלה עם עמודת הטמעה שנוצרת באופן אוטומטי באמצעות כלי שורת הפקודה של BigQuery, משתמשים בפקודה bq mk עם קובץ סכימת JSON שמגדיר את סכימת הטבלה:

  1. יוצרים קובץ סכימת JSON. בדוגמה הבאה מוצגת סכימה שיוצרת עמודת הטמעה על סמך עמודת מקור. בדוגמה הזו נעשה שימוש בנקודת קצה של Agent Platform ליצירת הטמעה.

    [
      {
        "name": "SOURCE_COL",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "REPEATED",
            "name": "result",
            "type": "FLOAT"
          },
          {
            "name": "status",
            "type": "STRING"
          }
        ],
        "generatedColumn": {
          "generationExpressionInfo": {
            "asynchronous": true,
            "generationExpression": "AI.EMBED(SOURCE_COL, connection_id => 'CONNECTION_ID', endpoint => 'ENDPOINT')",
            "stored": true
          },
          "generatedMode": "GENERATED_ALWAYS"
        },
        "name": "EMBEDDING_COL_NAME",
        "type": "RECORD"
      }
    ]
    

    אם אתם משתמשים במודל מובנה במקום בנקודת קצה של Agent Platform, אתם צריכים להשתמש בתחביר שדומה לזה שמופיע בהמשך עבור generationExpression: "AI.EMBED(SOURCE_COL, model => 'MODEL')"

    מידע על הערכים שבהם צריך להשתמש מופיע בתיאורים של SOURCE_COL,‏ EMBEDDING_COL_NAME,‏ CONNECTION_ID,‏ ENDPOINT ו-MODEL בכרטיסייה SQL.

  2. שומרים את הסכימה בקובץ, למשל schema.json.

  3. יוצרים את הטבלה באמצעות הפקודה bq mk --table:

    bq mk --table DATASET_ID.TABLE schema.json
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DATASET_ID: השם של מערך הנתונים שבו רוצים ליצור את הטבלה.
  • ‫TABLE: שם הטבלה שבה רוצים ליצור הטמעה אוטונומית.
  • ‫COLUMN, ...: כל העמודות שהטבלה צריכה להכיל, בנוסף לעמודה שרוצים להטמיע באופן אוטומטי.
  • ‫STRING_COL: השם של העמודה STRING שרוצים להטמיע באופן אוטומטי.
  • ‫EMBEDDING_COL_NAME: השם של עמודת ההטמעה שנוצרה באופן אוטומטי.
  • ‫CONNECTION_ID: ערך STRING שמכיל את השם של חיבור לשימוש, כמו my_project.us.example_connection. צריך להעניק לחשבון השירות של החיבור את התפקיד Agent Platform User בפרויקט שבו יוצרים את הטבלה.
  • ‫ENDPOINT: ערך STRING שמציין נקודת קצה של מודל הטמעת טקסט ב-Agent Platform שנתמכת ומשמשת להטמעת טקסט. ערך נקודת הקצה שאתם מציינים צריך לכלול את גרסת המודל, לדוגמה text-embedding-005. אם מציינים את שם המודל במקום כתובת URL, מערכת BigQuery ML מזהה את המודל באופן אוטומטי ומשתמשת בנקודת הקצה המלאה של המודל.
  • ‫MODEL (תצוגה מקדימה): ערך STRING שמציין מודל הטמעת טקסט מובנה. הערך הנתמך היחיד הוא embeddinggemma-300m דגם. אם מציינים את הפרמטר הזה, אי אפשר לציין את הפרמטרים endpoint או connection_id.

    כשמציינים את הפרמטר MODEL, הנתונים נשארים ב-BigQuery ויחידות הקיבולת (Slots) משמשות ליצירת ההטמעות. הנתונים לא נשלחים ל-Agent Platform ולא חלים חיובים ב-Agent Platform.

הוספה של עמודת הטמעה שנוצרת באופן אוטומטי לטבלה קיימת

אפשר גם להוסיף עמודה של הטמעה שנוצרה באופן אוטומטי לטבלה קיימת באמצעות הצהרת ALTER TABLE ADD COLUMN.

SQL

אפשר להשתמש בהצהרת ALTER TABLE ADD COLUMN כדי להוסיף עמודה מוטמעת שנוצרה באופן אוטומטי לטבלה קיימת. כדי להוסיף את העמודה:

  1. במסוף Cloud de Confiance , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    ALTER TABLE DATASET_ID.TABLE
      ADD COLUMN EMBEDDING_COL_NAME
        STRUCT<result ARRAY<FLOAT64>, status STRING>
        GENERATED ALWAYS AS (
          AI.EMBED(
            SOURCE_COL,
            {
              connection_id => CONNECTION_ID,
              endpoint => ENDPOINT |
              model => MODEL
            })
        )
        STORED OPTIONS (asynchronous = TRUE)
    ;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫DATASET_ID: השם של מערך הנתונים שמכיל את הטבלה.
    • ‫TABLE: שם הטבלה שרוצים להוסיף לה את עמודת ההטמעה שנוצרה אוטומטית.
    • ‫EMBEDDING_COL_NAME: השם של עמודת ההטמעה שנוצרה אוטומטית.
    • ‫SOURCE_COL: השם של העמודה STRING או ObjectRef שרוצים להטמיע אוטומטית.
    • ‫CONNECTION_ID: ערך STRING שמכיל את השם של חיבור לשימוש, כמו my_project.us.example_connection.
    • ‫ENDPOINT: ערך STRING שמציין נקודת קצה של מודל הטמעת טקסט נתמך ב-Agent Platform, שמשמשת ליצירת הטמעת הטקסט.
    • ‫MODEL (Preview): ערך STRING שמציין מודל הטמעת טקסט מובנה. הערך הנתמך היחיד הוא embeddinggemma-300m דגם. אם מציינים את הפרמטר הזה, אי אפשר לציין את הפרמטרים endpoint או connection_id. כשמציינים את הפרמטר MODEL, הנתונים נשארים ב-BigQuery ויחידות הקיבולת (Slots) משמשות ליצירת ההטמעות. לא נשלחים נתונים ל-Agent Platform ולא חלים חיובים ב-Agent Platform.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי להוסיף עמודת הטמעה שנוצרת באופן אוטומטי לטבלה קיימת באמצעות כלי שורת הפקודה של BigQuery, משתמשים בפקודה bq update עם קובץ סכימת JSON שמגדיר את סכימת הטבלה המעודכנת:

  1. מקבלים את הסכימה הנוכחית של הטבלה ושומרים אותה בקובץ, למשל schema.json:
    bq show --schema --format=prettyjson DATASET_ID.TABLE > schema.json
    
  2. עורכים את schema.json כדי להוסיף את ההגדרה של עמודת הווקטורים החדשה שנוצרה אוטומטית. בדוגמה הבאה מוצגת ההגדרה של עמודת הטמעה שמבוססת על עמודת מקור. בדוגמה הזו נעשה שימוש בנקודת קצה של Agent Platform ליצירת הטמעה.

    [
      {
        "name": "SOURCE_COL",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "REPEATED",
            "name": "result",
            "type": "FLOAT"
          },
          {
            "name": "status",
            "type": "STRING"
          }
        ],
        "generatedColumn": {
          "generationExpressionInfo": {
            "asynchronous": true,
            "generationExpression": "AI.EMBED(SOURCE_COL, connection_id => 'CONNECTION_ID', endpoint => 'ENDPOINT')",
            "stored": true
          },
          "generatedMode": "GENERATED_ALWAYS"
        },
        "name": "EMBEDDING_COL_NAME",
        "type": "RECORD"
      }
    ]
    

    אם אתם משתמשים במודל מובנה במקום בנקודת קצה של Agent Platform, אתם צריכים להשתמש בתחביר שדומה לזה שמופיע בהמשך עבור generationExpression: "AI.EMBED(SOURCE_COL, model => 'MODEL')"

    מידע על הערכים שבהם צריך להשתמש מופיע בתיאורים של SOURCE_COL,‏ EMBEDDING_COL_NAME,‏ CONNECTION_ID,‏ ENDPOINT ו-MODEL בכרטיסייה SQL.

  3. מעדכנים את הטבלה באמצעות הפקודה bq update --table:

    bq update --table DATASET_ID.TABLE schema.json
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫DATASET_ID: השם של מערך הנתונים שמכיל את הטבלה.
    • ‫TABLE: שם הטבלה שרוצים להוסיף לה את עמודת ההטמעה שנוצרה אוטומטית.

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

כדי לעקוב אחרי התקדמות יצירת ההטמעה, אפשר להשתמש בשאילתה דומה לזו:

SELECT
  COUNT(*) AS total_num_rows,
  COUNTIF(description_embedding IS NOT NULL
          AND description_embedding.status = '') AS total_num_generated_embeddings
FROM
  PROJECT_ID.DATASET_ID.TABLE;

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

דוגמה

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

קודם יוצרים מערך נתונים:

CREATE SCHEMA mydataset;

לאחר מכן, יוצרים טבלה עם הפעלה של יצירת הטמעה אוטונומית כדי להכיל את פרטי המוצרים. העמודה שנוצרת באופן אוטומטי נקראת description_embedding והיא מבוססת על העמודה description.

# Create a table of products and descriptions with a generated embedding column.
CREATE TABLE mydataset.products (
  name STRING,
  description STRING,
  description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
    GENERATED ALWAYS AS (
      AI.EMBED(description, connection_id => 'us.example_connection',
        endpoint => 'text-embedding-005')
      # Alternatively, you can use the syntax for a built-in model.
      # AI.EMBED(description, model => 'embeddinggemma-300m')
    ) STORED OPTIONS( asynchronous = TRUE )
);

השאילתה הבאה מוסיפה לטבלה שמות ותיאורים של מוצרים. לא מציינים ערך למאפיין description_embedding כי הוא נוצר באופן אוטומטי.

# Insert product descriptions into the table.
# The description_embedding column is automatically updated.
INSERT INTO mydataset.products (name, description) VALUES
  ("Lounger chair", "A comfortable chair for relaxing in."),
  ("Super slingers", "An exciting board game for the whole family."),
  ("Encyclopedia set", "A collection of informational books.");

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

CREATE VECTOR INDEX my_index
ON mydataset.products(description_embedding)
OPTIONS(index_type = 'IVF');

לבסוף, אפשר להשתמש בפונקציה AI.SEARCH כדי לבצע חיפוש סמנטי של המוצרים שלכם ולמצוא צעצוע כיפי:

# Search for products that are fun to play with.
SELECT base.name, base.description, distance
FROM AI.SEARCH(TABLE mydataset.products, 'description', "A really fun toy");

/*------------------+----------------------------------------------+----------------------+
 | name             | description                                  | distance             |
 +------------------+----------------------------------------------+----------------------+
 | Super slingers   | An exciting board game for the whole family. | 0.80954913893618929  |
 | Lounger chair    | A comfortable chair for relaxing in.         | 0.938933930620146    |
 | Encyclopedia set | A collection of informational books.         | 1.1119297739353384   |
 +------------------+----------------------------------------------+----------------------*/

נוצרו הטמעות מObjectRef עמודות

אפשר להוסיף עמודות של הטמעה שנוצרו עבור עמודה ObjectRef בטבלה.

בדוגמה הבאה מוצג אופן יצירת טבלה עם עמודה ObjectRef והוספה של עמודת הטמעה שנוצרה עבור העמודה הזו:

# Create a table with ObjectRef columns.
CREATE TABLE mydataset.images AS
SELECT
  REGEXP_EXTRACT(ref.uri, r'.*/(.*).jpg$') AS name,
  ref
FROM mydataset.object_table;

# Add a generated embedding column for the ObjectRef column.
ALTER TABLE mydataset.images
ADD COLUMN image_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
GENERATED ALWAYS AS (
  AI.EMBED(
    ref,
    connection_id => "us.my_connection",
    endpoint => "multimodalembedding@001")
)
STORED OPTIONS (asynchronous = true);

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

כדי לוודא שעמודה היא עמודת הטמעה שנוצרה באופן אוטומטי, שולחים שאילתה לתצוגה INFORMATION_SCHEMA.COLUMNS.

השאילתה הבאה מציגה מידע על כל עמודות ההטמעה שנוצרו באופן אוטומטי:

SELECT *
FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.COLUMNS
WHERE is_generated = 'ALWAYS';

בשדה generation_expression מוצגת הקריאה לפונקציה AI.EMBED שמשמשת ליצירת ההטמעות בעמודה.

שימוש בהזמנה שלכם

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

מכסות

כשמשתמשים בנקודת קצה של Agent Platform כדי ליצור הטמעות על ידי ציון הפרמטר endpoint בפונקציה AI.EMBED,‏ BigQuery שולח בקשות ל-Agent Platform כדי ליצור הטמעות. הבקשות האלה כפופות למכסות של Agent Platform. המכסה של בקשות לדקה עבור מודל ההטמעה משפיעה ישירות על קצב העברת הנתונים של משימות ליצירת הטמעה ברקע. אם יצירת ההטמעה איטית, אפשר לבקש להגדיל את המכסה של Agent Platform. לשם כך, פועלים לפי ההוראות במאמר איך מבקשים להגדיל את המכסות. אם מציינים את הפרמטר model בפונקציה AI.EMBED, הווקטורים מוטמעים ב-BigQuery ולא נשלחות בקשות ל-Agent Platform, ולכן המכסות של Agent Platform לא חלות.

פתרון בעיות

עמודת ההטמעה שנוצרת מכילה שני שדות: result ו-status. אם מתרחשת שגיאה כש-BigQuery מנסה ליצור הטמעה לשורה מסוימת בטבלה, השדה result הוא NULL והשדה status מתאר את השגיאה. לדוגמה, אם עמודת המקור היא NULL, ההטמעה של result היא גם NULL והסטטוס הוא NULL value is not supported for embedding generation.

שגיאה חמורה יותר עלולה לעצור את יצירת ההטמעה. במקרה כזה, אפשר לשלוח שאילתה לעמודה async_generation_status בתצוגה INFORMATION_SCHEMA.COLUMNS כדי לזהות את השגיאה שחוסמת את הפעולה.

שגיאות חסימה יכולות לכלול את השגיאות הבאות:

  • שגיאות מסוג 'ההרשאה נדחתה'
  • שגיאות מסוג 'לא נמצא'
  • שגיאות בנקודת הקצה של מודל הטמעה שלא נתמך
  • שגיאות שקשורות ל-Vertex AI API שלא הופעל

אחרי שההרצה של משימת ההטמעה מהדור הבא מסתיימת בהצלחה, העמודה async_generation_statusמתרוקנת.

השאילתה הבאה מראה איך לבדוק אם יש שגיאות חסימה:

SELECT
  column_name,
  async_generation_status
FROM
  mydataset.INFORMATION_SCHEMA.COLUMNS
WHERE
  table_name = 'images';

אם בעמודה image_embedding יש שגיאה שמונעת את ההעלאה, התוצאה תהיה דומה לתוצאה הבאה:

[
  {
    "column_name": "image_embedding",
    "async_generation_status": {
      "blocking_error": {
        "message": "<service_account> does not have the permission to access resources used by AI.EMBED. Please follow https://cloud.google.com/bigquery/docs/permissions-for-ai-functions to set up permissions.",
        ...
      }
    }
  }
]

אפשר גם להריץ שאילתה על התצוגה INFORMATION_SCHEMA.JOBS של משימת הרקע ולבדוק את המידע בשדה error_result. מזהה המשימה של משימת הטמעה ברקע מתחיל בקידומת gc_. לדוגמה, השאילתה הבאה מחלצת את כל המשימות ברקע שתוצאת השגיאה שלהן היא לא NULL:

SELECT * FROM `region-REGION.INFORMATION_SCHEMA.JOBS` j
WHERE EXISTS (
  SELECT 1
  FROM unnest(j.referenced_tables) t
  WHERE
    j.project_id = 'PROJECT_ID'
    AND t.dataset_id = 'DATASET_ID'
    AND t.table_id = 'TABLE'
)
AND starts_with(job_id, 'gc')
AND error_result IS NOT NULL
ORDER BY j.creation_time DESC;

מעקב אחרי עלויות

העלויות של יצירת הטמעה אוטונומית נחלקות לקטגוריות הבאות.

עלויות של DML ברקע ב-BigQuery

ההטמעות שנוצרות נכתבות לטבלה באמצעות עבודות DML ברקע. כברירת מחדל, BigQuery משתמש במשבצות זמן על פי דרישה כדי לטפל במשימות האלה. החיוב על הפרויקט של הטבלה מתבצע בהתאם למודל החיוב לפי דרישה של DML.

אפשרות אחרת היא ליצור הזמנה ולהגדיר את job_type ל-BACKGROUND כדי להבטיח ביצועים צפויים ועקביים. אם יש הזמנה ברקע, BigQuery משתמש בה כדי להריץ את עבודות ה-DML ברקע. בנוסף, יחויב על הזמנת המקום ברקע על השימוש בזמן ההפעלה של יחידות הקיבולת (Slot) ממשימות ה-DML ברקע.

כדי לעקוב אחרי הערכים total_slot_ms ו-total_bytes_billed של עבודות DML ברקע בטבלה, שולחים שאילתה לתצוגה INFORMATION_SCHEMA.JOBS לגבי עבודות עם הקידומת job_id של gc_:

SELECT
  job_id,
  creation_time,
  reservation_id,
  total_slot_ms,
  total_bytes_processed,
  total_bytes_billed
FROM
  `region-REGION.INFORMATION_SCHEMA.JOBS` j
WHERE
  EXISTS (
    SELECT 1
    FROM UNNEST(j.referenced_tables) t
    WHERE
      j.project_id = 'PROJECT_ID'
      AND t.dataset_id = 'DATASET_ID'
      AND t.table_id = 'TABLE'
  )
  AND STARTS_WITH(job_id, 'gc_')
ORDER BY
  j.creation_time DESC;

מחליפים את מה שכתוב בשדות הבאים:

  • ‫REGION: האזור של מערך הנתונים שמכיל את הטבלה, לדוגמה, us.
  • ‫PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה.
  • ‫DATASET_ID: השם של מערך הנתונים שמכיל את הטבלה.
  • ‫TABLE: השם של הטבלה שבה מופעלת יצירה אוטונומית של הטמעה.

אם מציינים את המודל המובנה embeddinggemma-300m באמצעות הפרמטר model בפונקציה AI.EMBED, ‏ BigQuery גם יוצר את ההטמעות ישירות בעבודות ה-DML האלה ברקע באמצעות משבצות BigQuery. לא נשלחות בקשות ל-Agent Platform ולא מתבצעים חיובים על Agent Platform. מידע נוסף זמין במאמר בנושא בחירת מודל.

עלויות של Gemini Enterprise Agent Platform

כשמציינים מודל של Gemini Enterprise Agent Platform באמצעות הפרמטר endpoint בפונקציה AI.EMBED, יצירת הטמעה אוטונומית שולחת בקשות ל-Gemini Enterprise Agent Platform, ועלולות לחול עלויות. כדי לעקוב אחרי העלויות של Agent Platform שנובעות מעבודות הטמעה ברקע, פועלים לפי השלבים הבאים:

  1. הצגת דוחות החיוב בחיוב ב-Cloud.
  2. להשתמש במסננים כדי לצמצם את התוצאות.

    בשדה 'שירותים', בוחרים באפשרות Vertex AI.

  3. כדי לראות את החיובים על עבודה ספציפית, מסננים לפי תווית.

    מגדירים את המפתח לערך bigquery_ml_job ואת הערך למזהה המשרה של משרת ההטמעה. לכל משימות ההטמעה ברקע יש קידומת של gc_.

יכול להיות שיחלפו עד 24 שעות עד שחלק מהחיובים יופיעו בחיוב ב-Cloud.

מגבלות

  • כל טבלה תומכת בעמודת הטמעה אחת לכל היותר שנוצרת באופן אוטומטי.
  • פעולות DML בו-זמניות עלולות לגרום לעיכובים ולכשלים זמניים ביצירת ההטמעה. כדי לשפר את הביצועים ולצמצם את העלויות, מומלץ להחדיר נתונים באצוות ולהימנע מעדכוני DML תכופים.
  • אם אתם משתמשים בגרסה הקודמת של Streaming API כדי להטמיע נתונים, יכול להיות שיהיו עיכובים לפני שהטמעת הנתונים תתחיל.
  • כשמשתמשים ב-BigQuery Storage Write API‏ (gRPC), יכול להיות שייכשלו משימות ליצירת הטמעה ברקע אם משימת כתיבה בהזרמה פועלת במקביל. במקרה כזה, המכסה ב-Agent Platform והעלויות של DML ברקע מתבזבזות. שימוש ב-Storage Write API ‏ (gRPC) גורם גם הוא להפעלת משימות מקבילות של יצירת הטמעה בטבלה, אבל BigQuery מטפל בזה ולא מתבזבזת מכסת Agent Platform או עלויות של DML ברקע.
  • כדי להשיג תפוקה גבוהה יותר בנקודות קצה מרוחקות של Agent Platform, מומלץ להשתמש במודלים להטמעת טקסט במקום במודלים של Gemini. למידע נוסף, ראו מכסות.
  • כשמציגים את הסכימה של טבלה באמצעות Cloud de Confiance המסוף או השדה ddl של התצוגה INFORMATION_SCHEMA.TABLES, לא מצוין אם עמודה נוצרה באופן אוטומטי.
  • אם יוצרים עותק, שיבוט או תמונת מצב של טבלה שיש בה עמודת הטמעה שנוצרה, רק הנתונים מועתקים. הגדרת היצירה לא חלה על הטבלה החדשה, ועדכונים בעמודת המקור של הטבלה החדשה לא יובילו להטמעות חדשות.
  • אם משחזרים מטבלה שהופעלה בה יצירה אוטונומית של הטמעה מתמונת מצב, הגדרות יצירת ההטמעה לא משוחזרות.
  • כשמשתמשים ב-BigQuery API, אפשר לציין את המאפיין generatedColumn רק כשיוצרים עמודה חדשה. אי אפשר להוסיף, לעדכן או להסיר את המאפיין generatedColumn בעמודה קיימת.
  • אחרי שיוצרים את עמודת הווקטורים שנוצרה, חלות המגבלות הבאות:

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

  • אי אפשר לכתוב ישירות לעמודות של הטמעות שנוצרו באמצעות השיטות הבאות:

    • DML
    • כתיבה בסטרימינג
    • bq insert
    • bq load
    • bq copy -a
  • טבלאות עם עמודות של הטמעה שנוצרו לא תומכות במדיניות אבטחה ברמת העמודה, כמו תגי מדיניות.

  • כשמפעילים פונקציית חיפוש, כמו VECTOR_SEARCH או AI.SEARCH, החיפוש מדלג על שורות עם הטמעות חסרות במסד הנתונים הטבלאי.

  • אי אפשר ליצור אינדקס וקטורי עם מחיצות בטבלה שמופעל בה יצירה אוטונומית של הטמעה.

  • אם יוצרים אינדקס וקטורי בעמודת ההטמעה שנוצרה באופן אוטומטי, האימון של האינדקס מתחיל אחרי שלפחות 80% מהשורות יצרו הטמעות. כדי לבדוק את התקדמות יצירת ההטמעה:

    שאילתה לגבי אחוז ההטמעות בטבלה שנוצרו:

    SELECT
      COUNTIF(description_embedding IS NOT NULL
      AND description_embedding.status = '') * 100.0 / COUNT(*) AS percent
    FROM PROJECT_ID.DATASET_ID.TABLE;
    

המאמרים הבאים