Vector Index Status, Checkpoint, and Advisor Procedures
Review these high-level details on the GET_INDEX_STATUS, ENABLE_CHECKPOINT, DISABLE_CHECKPOINT, and INDEX_VECTOR_MEMORY_ADVISOR procedures that are available with the DBMS_VECTOR PL/SQL package.
GET_INDEX_STATUS
Purpose: To query the status of a vector index creation.
Syntax:
DBMS_VECTOR.GET_INDEX_STATUS ('USER_NAME','INDEX_NAME');Usage Notes:
-
You can use the
GET_INDEX_STATUSprocedure only during a vector index creation. -
The
Percentagevalue is shown in the output only for Hierarchical Navigable Small World (HNSW) indexes (and not for Inverted File Flat (IVF) indexes). -
Along with the
DB_DEVELOPER_ROLEprivilege, you must have read access to theVECSYS.VECTOR$INDEX$BUILD$table. -
You can use the following query to view all auxiliary tables:
select IDX_AUXILIARY_TABLES from vecsys.vector$index;-
For HNSW indexes:
rowid_vid_mapstores the mapping between a row ID and vector ID.shared_journal_change_logstores the DML changes that are yet to be incorporated into an HNSW graph. -
For IVF indexes:
centroidsstores the location for each centroid.centroid_partitionsstores the closest centroid for each vector.
-
-
The possible values of
Stagefor HNSW vector indexes are:Value Description HNSW Index InitializationInitialization phase for the HNSW vector index creation
HNSW Index Auxiliary Tables CreationCreation of the internal auxiliary tables for the HNSW Neighbor Graph vector index
HNSW Index Graph AllocationAllocation of memory from the vector memory pool for the HNSW graph
HNSW Index Loading VectorsLoading of the base table vectors into the vector pool memory
HNSW Index Graph ConstructionCreation of the multi-layered HNSW graph with the previously loaded vectors
HNSW Index Creation CompletedHNSW vector index creation finished
-
The possible values of
Stagefor IVF vector indexes are:Value Description IVF Index InitializationInitialization phase for the IVF vector index creation
IVF Index Centroids CreationThe K-means clustering phase that computes the cluster centroids on a sample of base table vectors
IVF Index Centroid Partitions CreationCentroids assignment phase for the base table vectors
IVF Index Creation CompletedIVF vector index creation completed
Example:
exec DBMS_VECTOR.GET_INDEX_STATUS('VECTOR_USER','VIDX_HNSW');
Index objn: 74745
Stage: HNSW Index Loading Vectors
Percentage: 80%ENABLE_CHECKPOINT
Purpose: To enable the Checkpoint feature for a given HNSW index user and HNSW index name.
Note:
This procedure only allows the index to create checkpoints. The checkpoint is created as part of the next HNSW graph refresh.The INDEX_NAME clause is optional. If you do not specify the index name, then this procedure enables the Checkpoint feature for all HNSW indexes under the given user.
Syntax:
DBMS_VECTOR.ENABLE_CHECKPOINT('INDEX_USER',['INDEX_NAME']);Example 1: Using index name and index user:
DBMS_VECTOR.ENABLE_CHECKPOINT('VECTOR_USER','VIDX1');Example 2: Using index user:
DBMS_VECTOR.ENABLE_CHECKPOINT('VECTOR_USER');Note:
By default, HNSW checkpointing is enabled. You can disable it using theDBMS_VECTOR.DISABLE_CHECKPOINT procedure.
DISABLE_CHECKPOINT
Purpose: To purge all older checkpoint data. This procedure disables the Checkpoint feature for a given HNSW index user and HNSW index name. It also disables the creation of future checkpoints as part of the HNSW graph refresh.
The INDEX_NAME clause is optional. If you do not specify the index name, then this procedure disables the Checkpoint feature for all HNSW indexes under the given user.
Syntax:
DBMS_VECTOR.DISABLE_CHECKPOINT('INDEX_USER',['INDEX_NAME']);Example 1: Using index name and index user:
DBMS_VECTOR.DISABLE_CHECKPOINT('VECTOR_USER','VIDX1');Example 2: Using index user:
DBMS_VECTOR.DISABLE_CHECKPOINT('VECTOR_USER');INDEX_VECTOR_MEMORY_ADVISOR
Purpose: To determine the vector memory size needed for a particular vector index. This helps you evaluate the number of indexes (HNSW or IVF) that can fit for each simulated vector memory size.
Syntax:
-
Using the number and type of vector dimensions that you want to store in your vector index.
DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISOR( INDEX_TYPE, NUM_VECTORS, DIM_COUNT, DIM_TYPE, PARAMETER_JSON, RESPONSE_JSON); -
Using the table and vector column on which you want to create your vector index:
DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISOR( TABLE_OWNER, TABLE_NAME, COLUMN_NAME, INDEX_TYPE, PARAMETER_JSON, RESPONSE_JSON);
INDEX_TYPE can be one of the following:
-
IVFfor IVF vector indexes -
HNSWfor HNSW vector indexes
PARAMETER_JSON can have only one of the following form:
-
PARAMETER_JSON=>{"accuracy":value} -
INDEX_TYPE=>IVF, parameter_json=>{"neighbor_partitions":value} -
INDEX_TYPE=>HNSW, parameter_json=>{"neighbors":value}
Note:
You cannot specify values foraccuracy along with neighbor_partitions or neighbors.
Example 1: Using neighbors in the parameters list:
exec DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISOR(
INDEX_TYPE=>'HNSW',
NUM_VECTORS=>10000,
DIM_COUNT=>768,
DIM_TYPE=>'FLOAT32',
PARAMETER_JSON=>'{"neighbors":128}',
RESPONSE_JSON=>:response_json);
Suggested vector memory pool size: 59918628 BytesExample 2: Using accuracy in the parameters list:
exec DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISOR(
INDEX_TYPE=>'HNSW',
NUM_VECTORS=>10000,
DIM_COUNT=>768,
DIM_TYPE=>'FLOAT32',
PARAMETER_JSON=>'{"accuracy":90}',
RESPONSE_JSON=>:response_json);
Suggested vector memory pool size: 53926765 BytesExample 3: Using the table and vector column on which you want to create the vector index:
exec DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISOR(
'VECTOR_USER',
'VECTAB',
'DATA_VECTOR',
'HNSW',
RESPONSE_JSON=>:response_json);
Using default accuracy: 90%
Suggested vector memory pool size: 76396251 Bytes Related Topics
Parent topic: Manage the Different Categories of Vector Indexes