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

במאמר הזה מוסבר איך להשתמש ביצירה אוטונומית של הטמעות לנתונים שלכם, שמאפשרת ל-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 User (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 והמשבצות משמשות ליצירת ההטמעות. לא נשלחים נתונים ל-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 model. אם מציינים את הפרמטר הזה, אי אפשר לציין את הפרמטרים 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 והמשבצות משמשות ליצירת ההטמעות. לא נשלחים נתונים ל-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 כדי לזהות את השגיאה שחוסמת את הפעולה.

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

  • שגיאות מסוג Permission denied
  • שגיאות מסוג 'לא נמצא'
  • שגיאות בנקודת הקצה של מודל הטמעה שלא נתמך
  • שגיאות שקשורות ל-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 ברקע. בנוסף, יחויב על הזמנת הרקע על השימוש בזמן המשבצת ממשימות ה-DML ברקע.

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

יצירת הטמעה אוטונומית שולחת בקשות ל-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, יכול להיות שמשימות ליצירת הטמעה ברקע ייכשלו אם משימת כתיבה של סטרימינג פועלת במקביל. במקרה כזה, המכסה ב-Agent Platform והעלויות של DML ברקע יבוזבזו. שימוש ב-Storage Write API גורם גם ליצירה של משימות הטמעה מקבילות בטבלה, אבל 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;
    

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