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:

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 the DBMS_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:

INDEX_TYPE can be one of the following:

PARAMETER_JSON can have only one of the following form:

Note: You cannot specify values for accuracy 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 Bytes

Example 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 Bytes

Example 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

See Also: