VECTOR_INDEXES view
The INFORMATION_SCHEMA.VECTOR_INDEXES
view contains one row for each vector
index in a dataset.
Required permissions
To see vector index metadata, you need the
bigquery.tables.get
or bigquery.tables.list
Identity and Access Management (IAM)
permission on the table with the index. Each of the following predefined
IAM roles includes at least one of these permissions:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.dataViewer
roles/bigquery.metadataViewer
roles/bigquery.user
For more information about BigQuery permissions, see
Access control with IAM.
Schema
When you query the
INFORMATION_SCHEMA.VECTOR_INDEXES
view, the query results
contain one row for each vector index in a dataset.
The INFORMATION_SCHEMA.VECTOR_INDEXES
view has the following schema:
Column name |
Data type |
Value |
index_catalog |
STRING |
The name of the project that contains the dataset. |
index_schema |
STRING |
The name of the dataset that contains the index. |
table_name |
STRING |
The name of the table that the index is created on. |
index_name |
STRING |
The name of the vector index. |
index_status |
STRING |
The status of the index: ACTIVE , PENDING
DISABLEMENT , TEMPORARILY DISABLED , or
PERMANENTLY DISABLED .
ACTIVE means that the index is
usable or being created. Refer to the coverage_percentage
to see the progress of index creation.
PENDING DISABLEMENT means that the total
size of indexed tables exceeds your organization's
limit; the index is
queued for deletion. While in this state, the index is usable in
vector search queries and you are charged for the vector index
storage.
TEMPORARILY DISABLED means that either the total
size of indexed tables exceeds your organization's
limit, or the
indexed table is smaller than 10 MB. While in this state, the
index isn't used in vector search queries and you aren't charged
for the vector index storage.
PERMANENTLY DISABLED means that there is an
incompatible schema change on the indexed table.
|
creation_time |
TIMESTAMP |
The time the index was created. |
last_modification_time |
TIMESTAMP |
The last time the index configuration was modified. For example,
deleting an indexed column. |
last_refresh_time |
TIMESTAMP |
The last time the table data was indexed. A NULL value
means the index is not yet available. |
disable_time |
TIMESTAMP |
The time the status of the index was set to DISABLED . The
value is NULL if the index status is not
DISABLED . |
disable_reason |
STRING |
The reason the index was disabled. NULL if the index
status is not DISABLED . |
DDL |
STRING |
The data definition language (DDL) statement used to create the
index. |
coverage_percentage |
INTEGER |
The approximate percentage of table data that has been indexed.
0% means the index is not usable in a VECTOR_SEARCH query,
even if some data has already been indexed.
|
unindexed_row_count |
INTEGER |
The number of rows in the table that have not been indexed. |
total_logical_bytes |
INTEGER |
The number of billable logical bytes for the index. |
total_storage_bytes |
INTEGER |
The number of billable storage bytes for the index. |
Scope and syntax
Queries against this view must have a dataset qualifier. The
following table explains the region scope for this view:
View Name |
Resource scope |
Region scope |
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.VECTOR_INDEXES |
Dataset level |
Dataset location |
Replace the following:
Example
-- Returns metadata for vector indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.VECTOR_INDEXES;
Example
The following example shows all active vector indexes on tables in the dataset
my_dataset
, located in the project my_project
. It includes their names, the
DDL statements used to create them, and their coverage percentage. If an
indexed base table is less than 10 MB, then its index is not populated, in
which case the coverage_percentage
value is 0.
SELECT table_name, index_name, ddl, coverage_percentage
FROM my_project.my_dataset.INFORMATION_SCHEMA.VECTOR_INDEXES
WHERE index_status = 'ACTIVE';
The result is similar to the following:
+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+
| 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"}') | |
+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-25 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eINFORMATION_SCHEMA.VECTOR_INDEXES\u003c/code\u003e view provides metadata for each vector index within a dataset, with each row representing a unique index.\u003c/p\u003e\n"],["\u003cp\u003eAccessing vector index metadata requires \u003ccode\u003ebigquery.tables.get\u003c/code\u003e or \u003ccode\u003ebigquery.tables.list\u003c/code\u003e IAM permissions, which are included in several predefined roles such as \u003ccode\u003eroles/bigquery.admin\u003c/code\u003e and \u003ccode\u003eroles/bigquery.dataViewer\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eVECTOR_INDEXES\u003c/code\u003e schema includes details like \u003ccode\u003eindex_name\u003c/code\u003e, \u003ccode\u003eindex_status\u003c/code\u003e (\u003ccode\u003eACTIVE\u003c/code\u003e, \u003ccode\u003ePENDING DISABLEMENT\u003c/code\u003e, \u003ccode\u003eTEMPORARILY DISABLED\u003c/code\u003e, or \u003ccode\u003ePERMANENTLY DISABLED\u003c/code\u003e), \u003ccode\u003ecreation_time\u003c/code\u003e, \u003ccode\u003ecoverage_percentage\u003c/code\u003e, and the \u003ccode\u003eDDL\u003c/code\u003e statement used to create the index.\u003c/p\u003e\n"],["\u003cp\u003eQueries on this view must include a dataset qualifier and the query execution location must match the region of the \u003ccode\u003eINFORMATION_SCHEMA\u003c/code\u003e view.\u003c/p\u003e\n"],["\u003cp\u003eAn index might not be populated if the indexed base table is less than 10MB, in which case the \u003ccode\u003ecoverage_percentage\u003c/code\u003e is 0, meaning it is not usable.\u003c/p\u003e\n"]]],[],null,["# VECTOR_INDEXES view\n===================\n\nThe `INFORMATION_SCHEMA.VECTOR_INDEXES` view contains one row for each vector\nindex in a dataset.\n\nRequired permissions\n--------------------\n\nTo see [vector index](/bigquery/docs/vector-index) metadata, you need the\n`bigquery.tables.get` or `bigquery.tables.list` Identity and Access Management (IAM)\npermission on the table with the index. Each of the following predefined\nIAM roles includes at least one of these permissions:\n\n- `roles/bigquery.admin`\n- `roles/bigquery.dataEditor`\n- `roles/bigquery.dataOwner`\n- `roles/bigquery.dataViewer`\n- `roles/bigquery.metadataViewer`\n- `roles/bigquery.user`\n\nFor more information about BigQuery permissions, see\n[Access control with IAM](/bigquery/docs/access-control).\n\nSchema\n------\n\nWhen you query the `INFORMATION_SCHEMA.VECTOR_INDEXES` view, the query results contain one row for each vector index in a dataset.\n\n\u003cbr /\u003e\n\nThe `INFORMATION_SCHEMA.VECTOR_INDEXES` view has the following schema:\n\nScope and syntax\n----------------\n\nQueries against this view must have a [dataset qualifier](/bigquery/docs/information-schema-intro#syntax). The\nfollowing table explains the region scope for this view:\n\n\u003cbr /\u003e\n\nReplace the following:\n\n- Optional: \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the ID of your Google Cloud project. If not specified, the default project is used.\n- \u003cvar translate=\"no\"\u003eDATASET_ID\u003c/var\u003e: the ID of your dataset. For more information, see [Dataset qualifier](/bigquery/docs/information-schema-intro#dataset_qualifier).\n\n \u003cbr /\u003e\n\n \u003cbr /\u003e\n\n | **Note:** You must use [a region qualifier](/bigquery/docs/information-schema-intro#region_qualifier) to query `INFORMATION_SCHEMA` views. The location of the query execution must match the region of the `INFORMATION_SCHEMA` view.\n\n\u003cbr /\u003e\n\n**Example** \n\n -- Returns metadata for vector indexes in a single dataset.\n SELECT * FROM myDataset.INFORMATION_SCHEMA.VECTOR_INDEXES;\n\nExample\n-------\n\nThe following example shows all active vector indexes on tables in the dataset\n`my_dataset`, located in the project `my_project`. It includes their names, the\nDDL statements used to create them, and their coverage percentage. If an\nindexed base table is less than 10 MB, then its index is not populated, in\nwhich case the `coverage_percentage` value is 0. \n\n```googlesql\nSELECT table_name, index_name, ddl, coverage_percentage\nFROM my_project.my_dataset.INFORMATION_SCHEMA.VECTOR_INDEXES\nWHERE index_status = 'ACTIVE';\n```\n\nThe result is similar to the following: \n\n```\n+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+\n| table_name | index_name | ddl | coverage_percentage |\n+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+\n| table1 | indexa | CREATE VECTOR INDEX `indexa` ON `my_project.my_dataset.table1`(embeddings) | 100 |\n| | | OPTIONS (distance_type = 'EUCLIDEAN', index_type = 'IVF', ivf_options = '{\"num_lists\": 100}') | |\n+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+\n| table2 | indexb | CREATE VECTOR INDEX `indexb` ON `my_project.my_dataset.table2`(vectors) | 42 |\n| | | OPTIONS (distance_type = 'COSINE', index_type = 'IVF', ivf_options = '{\"num_lists\": 500}') | |\n+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+\n| table3 | indexc | CREATE VECTOR INDEX `indexc` ON `my_project.my_dataset.table3`(vectors) | 98 |\n| | | OPTIONS (distance_type = 'DOT_PRODUCT', index_type = 'TREE_AH', | |\n| | | tree_ah_options = '{\"leaf_node_embedding_count\": 1000, \"normalization_type\": \"NONE\"}') | |\n+------------+------------+-------------------------------------------------------------------------------------------------+---------------------+\n```"]]