VECTOR_INDEXES 视图

如需对此功能提供反馈或请求支持,请发送电子邮件至 bq-vector-search@google.com

对于数据集中的每个矢量索引,INFORMATION_SCHEMA.VECTOR_INDEXES 视图都会包含一个与之相对应的行。

所需权限

如需查看矢量索引元数据,您需要对具有相应索引的表拥有 bigquery.tables.getbigquery.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 索引的状态:ACTIVEPENDING DISABLEMENTTEMPORARILY DISABLEDPERMANENTLY DISABLED
  • ACTIVE 表示索引可用或正在创建。请参阅 coverage_percentage 以查看索引创建进度。
  • PENDING DISABLEMENT 表示已编入索引的表的总大小超过组织的限制;索引正在排队等待删除。处于此状态时,索引可用于矢量搜索查询,但您需要为矢量索引存储付费。
  • TEMPORARILY DISABLED 表示编入索引的表的总大小超过组织的限制,或者编入索引的表小于 10 MB。处于此状态时,索引不会用于矢量搜索查询,您也不需要为矢量索引存储付费。
  • 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 |
+-------------+-------------+-----------------------------------------------------------------------------------------------+---------------------+
| small_table | myindex1    | CREATE VECTOR INDEX `myindex1` ON `my_project.my_dataset.small_table`(embeddings)             | 100                 |
|             |             | OPTIONS (distance_type = 'EUCLIDEAN', index_type = 'IVF', ivf_options = '{"numLists": 3}')    |                     |
+-------------+-------------+-----------------------------------------------------------------------------------------------+---------------------+
| large_table | myindex2    | CREATE VECTOR INDEX `myindex2` ON `my_project.my_dataset.large_table`(vectors)                |  42                 |
|             |             | OPTIONS (distance_type = 'EUCLIDEAN', index_type = 'IVF', ivf_options = '{"numLists": 12}')   |                     |
+-------------+-------------+-----------------------------------------------------------------------------------------------+---------------------+