VECTOR_INDEXES 视图
对于数据集中的每个矢量索引,INFORMATION_SCHEMA.VECTOR_INDEXES
视图都会包含一个与之相对应的行。
所需权限
如需查看矢量索引元数据,您需要对具有相应索引的表拥有 bigquery.tables.get
或 bigquery.tables.list
Identity and Access Management (IAM) 权限。以下每个预定义的 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 。 |
creation_time |
TIMESTAMP |
索引的创建时间。 |
last_modification_time |
TIMESTAMP |
上次修改索引配置的时间。例如,删除编入索引的列。 |
last_refresh_time |
TIMESTAMP |
上次将表数据编入索引的时间。NULL 值表示索引尚不可用。 |
disable_time |
TIMESTAMP |
索引状态设置为 DISABLED 的时间。如果索引状态不是 DISABLED ,则值为 NULL 。 |
disable_reason |
STRING |
索引停用的原因。如果索引状态不是 DISABLED ,则为 NULL 。 |
DDL |
STRING |
用于创建索引的数据定义语言 (DDL) 语句。 |
coverage_percentage |
INTEGER |
已编入索引的表数据的近似百分比。
0% 表示索引在 VECTOR_SEARCH 查询中不可用,即使部分数据已编入索引也是如此。 |
unindexed_row_count |
INTEGER |
表中尚未编入索引的行数。 |
total_logical_bytes |
INTEGER |
索引的可计费逻辑字节数。 |
total_storage_bytes |
INTEGER |
索引的可计费存储字节数。 |
范围和语法
针对此视图的查询必须具有数据集限定符。下表说明了此视图的区域范围:
视图名称 | 资源范围 | 区域范围 |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.VECTOR_INDEXES |
数据集级 | 数据集位置 |
可选:PROJECT_ID
:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
DATASET_ID
:您的数据集的 ID。如需了解详情,请参阅数据集限定符。
示例
-- Returns metadata for vector indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.VECTOR_INDEXES;
示例
以下示例展示了位于项目 my_project
的数据集 my_dataset
中表的所有活跃矢量索引。它包括索引名称、用于创建索引的 DDL 语句以及索引覆盖率百分比。如果编入索引的基表小于 10 MB,则系统不会填充其索引,在这种情况下,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"}') | | +------------+------------+-------------------------------------------------------------------------------------------------+---------------------+