Vista VECTOR_INDEXES

A vista INFORMATION_SCHEMA.VECTOR_INDEXES contém uma linha para cada índice de vetor num conjunto de dados.

Autorizações necessárias

Para ver os metadados do índice vetorial, precisa da autorização bigquery.tables.get ou bigquery.tables.list de gestão de identidade e de acesso (IAM) na tabela com o índice. Cada uma das seguintes funções do IAM predefinidas inclui, pelo menos, uma destas autorizações:

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

Para mais informações sobre as autorizações do BigQuery, consulte o artigo Controlo de acesso com a IAM.

Esquema

Quando consulta a vista INFORMATION_SCHEMA.VECTOR_INDEXES, os resultados da consulta contêm uma linha para cada índice de vetor num conjunto de dados.

A vista INFORMATION_SCHEMA.VECTOR_INDEXES tem o seguinte esquema:

Nome da coluna Tipo de dados Valor
index_catalog STRING O nome do projeto que contém o conjunto de dados.
index_schema STRING O nome do conjunto de dados que contém o índice.
table_name STRING O nome da tabela na qual o índice é criado.
index_name STRING O nome do índice vetorial.
index_status STRING O estado do índice: ACTIVE, PENDING DISABLEMENT, TEMPORARILY DISABLED ou PERMANENTLY DISABLED.
  • ACTIVE significa que o índice está utilizável ou a ser criado. Consulte o coverage_percentage para ver o progresso da criação do índice.
  • PENDING DISABLEMENT significa que o tamanho total das tabelas indexadas excede o limite da sua organização. O índice é colocado em fila para eliminação. Enquanto estiver neste estado, o índice é utilizável em consultas de pesquisa vetorial e é-lhe cobrado o armazenamento do índice vetorial.
  • TEMPORARILY DISABLED significa que o tamanho total das tabelas indexadas excede o limite da sua organização ou que a tabela indexada é inferior a 10 MB. Enquanto estiver neste estado, o índice não é usado em consultas de pesquisa vetorial e não lhe é cobrado o armazenamento do índice vetorial.
  • PERMANENTLY DISABLED significa que existe uma alteração do esquema incompatível na tabela indexada.
creation_time TIMESTAMP A hora em que o índice foi criado.
last_modification_time TIMESTAMP A última vez que a configuração do índice foi modificada. Por exemplo, eliminar uma coluna indexada.
last_refresh_time TIMESTAMP A última vez que os dados da tabela foram indexados. Um valor NULL significa que o índice ainda não está disponível.
disable_time TIMESTAMP A hora em que o estado do índice foi definido como DISABLED. O valor é NULL se o estado do índice não for DISABLED.
disable_reason STRING O motivo pelo qual o índice foi desativado. NULL se o estado do índice não for DISABLED.
DDL STRING A declaração de linguagem de definição de dados (LDD) usada para criar o índice.
coverage_percentage INTEGER A percentagem aproximada de dados da tabela que foram indexados. 0% significa que o índice não é utilizável numa consulta VECTOR_SEARCH, mesmo que alguns dados já tenham sido indexados.
unindexed_row_count INTEGER O número de linhas na tabela que não foram indexadas.
total_logical_bytes INTEGER O número de bytes lógicos faturáveis para o índice.
total_storage_bytes INTEGER O número de bytes de armazenamento faturáveis para o índice.

Âmbito e sintaxe

As consultas nesta vista têm de ter um qualificador de conjunto de dados. A tabela seguinte explica o âmbito da região para esta vista:

Nome da vista Âmbito do recurso Âmbito da região
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.VECTOR_INDEXES Nível do conjunto de dados Localização do conjunto de dados

Substitua o seguinte:
  • Opcional: PROJECT_ID: o ID do seu projeto do Trusted Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido.
  • DATASET_ID: o ID do seu conjunto de dados. Para mais informações, consulte o artigo Qualificador de conjunto de dados.

Exemplo

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

Exemplo

O exemplo seguinte mostra todos os índices vetoriais ativos em tabelas no conjunto de dados my_dataset, localizados no projeto my_project. Inclui os respetivos nomes, as declarações DDL usadas para os criar e a percentagem de cobertura. Se uma tabela base indexada tiver menos de 10 MB, o respetivo índice não é preenchido. Nesse caso, o valor coverage_percentage é 0.

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

O resultado é semelhante ao seguinte:

+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+
| 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"}') |                     |
+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+