ベクトル索引のステータス、チェックポイントおよびアドバイザのプロシージャ

DBMS_VECTOR PL/SQLパッケージで使用可能なGET_INDEX_STATUSENABLE_CHECKPOINTDISABLE_CHECKPOINTおよびINDEX_VECTOR_MEMORY_ADVISORプロシージャの概要を示します。

GET_INDEX_STATUS

用途: ベクトル索引作成のステータスを問い合せます。

構文:

DBMS_VECTOR.GET_INDEX_STATUS ('USER_NAME','INDEX_NAME');

使用上のノート:

  • GET_INDEX_STATUSプロシージャを使用できるのは、ベクトル索引の作成時のみです。

  • Percentage値は、Hierarchical Navigable Small World (HNSW)索引の場合にのみ出力に表示されます(Inverted File Flat (IVF)索引の場合には表示されません)。

  • DB_DEVELOPER_ROLE権限とともに、VECSYS.VECTOR$INDEX$BUILD$表への読取りアクセス権が必要です。

  • 次の問合せを使用すると、すべての補助表を表示できます:

    select IDX_AUXILIARY_TABLES from vecsys.vector$index;
    • HNSW索引の場合:

      rowid_vid_mapには、行IDとベクトルIDの間のマッピングが格納されます。shared_journal_change_logには、HNSWグラフにまだ取り込まれていないDML変更が格納されます。

    • IVF索引の場合:

      centroidsには、各重心の位置が格納されます。centroid_partitionsには、各ベクトルの最も近い重心が格納されます。

  • HNSWベクトル索引に使用できるStageの値は、次のとおりです:

    説明

    HNSW Index Initialization

    HNSWベクトル索引作成の初期化フェーズ

    HNSW Index Auxiliary Tables Creation

    HNSW近傍グラフ・ベクトル索引の内部補助表の作成

    HNSW Index Graph Allocation

    HNSWグラフのベクトル・メモリー・プールからのメモリーの割当て

    HNSW Index Loading Vectors

    ベクトル・プール・メモリーへの実表ベクトルのロード

    HNSW Index Graph Construction

    以前にロードされたベクトルを使用した多層HNSWグラフの作成

    HNSW Index Creation Completed

    HNSWベクトル索引の作成が終了しました

  • IVFベクトル索引に使用できるStageの値は、次のとおりです:

    説明

    IVF Index Initialization

    IVFベクトル索引作成の初期化フェーズ

    IVF Index Centroids Creation

    実表のベクトルのサンプルでクラスタの重心を計算するK-meansクラスタリング・フェーズ

    IVF Index Centroid Partitions Creation

    実表ベクトルの重心割当フェーズ

    IVF Index Creation Completed

    IVFベクトル索引の作成が完了しました

:

exec DBMS_VECTOR.GET_INDEX_STATUS('VECTOR_USER','VIDX_HNSW');

Index objn: 74745 
Stage: HNSW Index Loading Vectors 
Percentage: 80%

ENABLE_CHECKPOINT

用途: 特定のHNSW索引ユーザーおよびHNSW索引名に対してチェックポイント機能を有効にします。

ノート:

このプロシージャでは、索引のチェックポイント作成のみが許可されます。チェックポイントは、HNSWグラフの次のリフレッシュの一部として作成されます。

INDEX_NAME句はオプションです。索引名を指定しない場合、このプロシージャは、指定されたユーザーのすべてのHNSW索引に対してチェックポイント機能を有効にします。

構文:

DBMS_VECTOR.ENABLE_CHECKPOINT('INDEX_USER',['INDEX_NAME']);

例1: 索引名および索引ユーザーの使用:

DBMS_VECTOR.ENABLE_CHECKPOINT('VECTOR_USER','VIDX1');

例2: 索引ユーザーの使用:

DBMS_VECTOR.ENABLE_CHECKPOINT('VECTOR_USER');

ノート:

デフォルトでは、HNSWでのチェックポイント作成は有効です。DBMS_VECTOR.DISABLE_CHECKPOINTプロシージャを使用して無効にできます。

DISABLE_CHECKPOINT

用途: 古いチェックポイント・データをすべてパージします。このプロシージャは、特定のHNSW索引ユーザーおよびHNSW索引名に対するチェックポイント機能を無効にします。また、HNSWグラフのリフレッシュの一部としての今後のチェックポイントの作成も無効にします。

INDEX_NAME句はオプションです。索引名を指定しない場合、このプロシージャは、指定されたユーザーのすべてのHNSW索引に対するチェックポイント機能を無効にします。

構文:

DBMS_VECTOR.DISABLE_CHECKPOINT('INDEX_USER',['INDEX_NAME']);

例1: 索引名および索引ユーザーの使用:

DBMS_VECTOR.DISABLE_CHECKPOINT('VECTOR_USER','VIDX1');

例2: 索引ユーザーの使用:

DBMS_VECTOR.DISABLE_CHECKPOINT('VECTOR_USER');

INDEX_VECTOR_MEMORY_ADVISOR

用途: 特定のベクトル索引に必要なベクトル・メモリーのサイズを判断します。これにより、シミュレートされた各ベクトル・メモリー・サイズに適合する索引(HNSWまたはIVF)の数を評価できます。

構文:

  • ベクトル索引に格納するベクトルの次元の数およびタイプを使用する場合:

    DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISOR(
        INDEX_TYPE, 
        NUM_VECTORS, 
        DIM_COUNT, 
        DIM_TYPE, 
        PARAMETER_JSON, 
        RESPONSE_JSON);
  • ベクトル索引を作成する表列およびベクトル列を使用する場合:

    DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISOR(
        TABLE_OWNER, 
        TABLE_NAME, 
        COLUMN_NAME, 
        INDEX_TYPE, 
        PARAMETER_JSON, 
        RESPONSE_JSON);

INDEX_TYPEは、次のいずれかです:

  • IVF: IVFベクトル索引の場合

  • HNSW: HNSWベクトル索引の場合

PARAMETER_JSONには、次のいずれかの形式のみを指定できます:

  • PARAMETER_JSON=>{"accuracy":value}

  • INDEX_TYPE=>IVF, parameter_json=>{"neighbor_partitions":value}

  • INDEX_TYPE=>HNSW, parameter_json=>{"neighbors":value}

ノート:

neighbor_partitionsまたはneighborsとともにaccuracyの値を指定することはできません。

例1: パラメータ・リストでの近傍の使用:

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

例2: パラメータ・リストでの精度の使用:

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

例3: ベクトル索引を作成する表列およびベクトル列を使用する場合:

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

関連トピック