תצוגת VECTOR_INDEXES

התצוגה INFORMATION_SCHEMA.VECTOR_INDEXES מכילה שורה אחת לכל אינדקס וקטורי בקבוצת נתונים.

ההרשאות הנדרשות

כדי לראות את המטא-נתונים של אינדקס וקטורי, צריך הרשאה לניהול זהויות והרשאות גישה (IAM) bigquery.tables.get או bigquery.tables.list בטבלה עם האינדקס. כל אחד מתפקידי ה-IAM המוגדרים מראש הבאים כולל לפחות אחת מההרשאות האלה:

  • roles/bigquery.admin
  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.dataViewer
  • roles/bigquery.metadataViewer
  • roles/bigquery.user

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

סכימה

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

לתצוגה INFORMATION_SCHEMA.VECTOR_INDEXES יש את הסכימה הבאה:

שם העמודה סוג נתונים ערך
index_catalog STRING שם הפרויקט שמכיל את מערך הנתונים.
index_schema STRING השם של מערך הנתונים שמכיל את האינדקס.
table_name STRING שם הטבלה שבה נוצר האינדקס.
index_name STRING השם של אינדקס הווקטורים.
index_status STRING סטטוס האינדקס: ACTIVE,‏ PENDING DISABLEMENT,‏ TEMPORARILY DISABLED או PERMANENTLY DISABLED.
  • ACTIVE מציין שאפשר להשתמש באינדקס או שהוא נמצא בתהליך יצירה. אפשר לעיין בcoverage_percentage כדי לראות את התקדמות היצירה של האינדקס.
  • PENDING DISABLEMENT מציין שהגודל הכולל של הטבלאות שנוספו לאינדקס חורג מהמגבלה של הארגון, והאינדקס נוסף לתור למחיקה. בזמן שהאינדקס במצב הזה, אפשר להשתמש בו בשאילתות של חיפוש וקטורי, ותחויבו על אחסון האינדקס הווקטורי.
  • TEMPORARILY DISABLED מציין שהגודל הכולל של הטבלאות שעברו אינדוקס חורג מהמגבלה של הארגון, או שהטבלה שעברה אינדוקס קטנה מ-10MB. במצב הזה, המערכת לא משתמשת באינדקס בשאילתות של חיפוש וקטורי, ולא תחויבו על אחסון האינדקס הווקטורי.
  • PERMANENTLY DISABLED מציין שיש שינוי לא תואם בסכימה בטבלה המאונדקסת.
creation_time TIMESTAMP השעה שבה נוצר האינדקס.
last_modification_time TIMESTAMP הפעם האחרונה שבה שונתה הגדרת האינדקס. לדוגמה, מחיקה של עמודה עם אינדקס.
last_refresh_time TIMESTAMP הפעם האחרונה שבה נתוני הטבלה נוספו לאינדקס. הערך NULL מציין שהאינדקס עדיין לא זמין.
disable_time TIMESTAMP השעה שבה הוגדר סטטוס האינדקס ל-DISABLED. הערך הוא NULL אם סטטוס האינדקס הוא לא DISABLED.
disable_reason STRING הסיבה להשבתת האינדקס. NULL אם סטטוס האינדקס הוא לא DISABLED.
DDL STRING הצהרת שפת הגדרת הנתונים (DDL) ששימשה ליצירת האינדקס.
coverage_percentage INTEGER האחוז המשוער של נתוני הטבלה שעברו אינדוקס. הערך 0% מציין שלא ניתן להשתמש באינדקס בשאילתת VECTOR_SEARCH, גם אם חלק מהנתונים כבר עברו אינדוקס.
unindexed_row_count INTEGER מספר השורות בטבלה שלא עברו אינדוקס.
total_logical_bytes INTEGER מספר הבייטים הלוגיים לחיוב באינדקס.
total_storage_bytes INTEGER מספר הבייטים של נפח האחסון שחויבו עבור האינדקס.
last_index_alteration_info RECORD הפרטים של השינוי האחרון באינדקס שהופעל על ידי משתמש, כולל השדות הבאים:
  • status: ערך STRING שמציין את סטטוס השינוי. הערכים האפשריים הם NULL (הושלם), IN_PROGRESS ו-FAILED.
  • message: שדה STRUCT שמכיל את פרטי הסטטוס FAILED כאובייקט ErrorProto. הערך הוא NULL לסטטוסים אחרים.
  • new_coverage_percentage: ערך INT64 שמכיל את אחוז הנתונים המשוער בטבלה שעברו אינדוקס לצורך השינוי.
  • start_time: חותמת הזמן שבה החל השינוי.
  • end_time: חותמת הזמן שבה השינוי נכנס לסטטוס FAILED.
  • ddl: הצהרת שפת הגדרת הנתונים (DDL) שמשמשת לשינוי האינדקס.
last_model_build_time TIMESTAMP שעת ההתחלה של הבנייה האחרונה של מודל האינדקס.

כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.

היקף ותחביר

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

שם התצוגה המפורטת היקף המשאבים היקף האזור
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.VECTOR_INDEXES רמת מערך הנתונים מיקום מערך הנתונים

מחליפים את מה שכתוב בשדות הבאים:
  • אופציונלי: PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
  • DATASET_ID: המזהה של מערך הנתונים. מידע נוסף מופיע במאמר בנושא מאפיין מסנן של מערך נתונים.

דוגמה

-- Returns metadata for vector indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.VECTOR_INDEXES;

דוגמה

בדוגמה הבאה מוצגים כל האינדקסים הפעילים של וקטורים בטבלאות במערך הנתונים my_dataset, שנמצא בפרויקט my_project. הוא כולל את השמות שלהם, את הצהרות ה-DDL ששימשו ליצירתם ואת אחוז הכיסוי שלהם. אם טבלת בסיס עם אינדקס קטנה מ-10MB, האינדקס שלה לא יאוכלס, ובמקרה כזה הערך של coverage_percentage יהיה 0.

SELECT table_name, index_name, ddl, coverage_percentage
FROM my_project.my_dataset.INFORMATION_SCHEMA.VECTOR_INDEXES
WHERE index_status = 'ACTIVE';

התוצאה אמורה להיראות כך:

+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+
| table_name | index_name | ddl                                                                                             | coverage_percentage |
+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+
| table1     | indexa     | CREATE VECTOR INDEX `indexa` ON `my_project.my_dataset.table1`(embeddings)                      | 100                 |
|            |            | OPTIONS (distance_type = 'EUCLIDEAN', index_type = 'IVF', ivf_options = '{"num_lists": 100}')   |                     |
+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+
| table2     | indexb     | CREATE VECTOR INDEX `indexb` ON `my_project.my_dataset.table2`(vectors)                         | 42                  |
|            |            | OPTIONS (distance_type = 'COSINE', index_type = 'IVF', ivf_options = '{"num_lists": 500}')      |                     |
+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+
| table3     | indexc     | CREATE VECTOR INDEX `indexc` ON `my_project.my_dataset.table3`(vectors)                         | 98                  |
|            |            | OPTIONS (distance_type = 'DOT_PRODUCT', index_type = 'TREE_AH',                                 |                     |
|            |            |          tree_ah_options = '{"leaf_node_embedding_count": 1000, "normalization_type": "NONE"}') |                     |
+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+