REBUILD_INDEX プロシージャは、ベクトルインデックスをフル更新(つまり再構築)するために使用されます。
構文
PROCEDURE rebuild_index(
IN idx_name VARCHAR(65535),
IN table_name VARCHAR(65535),
IN idx_vector_col VARCHAR(65535) DEFAULT NULL,
IN delta_rate_threshold FLOAT DEFAULT 0.2,
IN idx_organization VARCHAR(65535) DEFAULT NULL,
IN idx_distance_metrics VARCHAR(65535) DEFAULT 'EUCLIDEAN',
IN idx_parameters LONGTEXT DEFAULT NULL,
IN idx_parallel_creation INT DEFAULT 1);
パラメータ説明
パラメータ |
説明 |
必須 |
|---|---|---|
| idx_name | インデックス名。 | 必須 |
| table_name | テーブル名。 | 必須 |
| idx_vector_col | ベクトル列名。 | 必須 |
| delta_rate_threshold | 増分データの割合。デフォルト値は 0.2、取り得る範囲は [0, 1]。 |
任意 |
| idx_organization | インデックスタイプ。デフォルトは NULL、カスタムパラメータはサポートされていません。任意 |
|
| idx_distance_metrics | 距離タイプ。デフォルトは NULL、カスタムパラメータはサポートされていません。 |
任意 |
| idx_parameters | インデックスパラメータ。テーブル作成時に使用されたベクトルインデックスのパラメータ文字列で、例えば distance=l2, type=hnsw, lib=vsag のようになります。詳細なパラメータについては、ベクトルインデックスのパフォーマンス最適化を参照してください。 |
任意 |
| idx_parallel_creation | インデックスの並列構築における並列度。 | 任意 |
注意事項は以下のとおりです。
- インデックスを再構築する際には、テーブル名、インデックス名、インデックス列を指定する必要があります。
delta_rate_thresholdを指定しない場合、インデックスの再構築が実際にはトリガーされない可能性があります。強制的に再構築するには、delta_rate_threshold=0を指定する必要があります。- 並列度を設定することで、インデックスの再構築を高速化できます。
例
テストテーブルを作成します。
CREATE TABLE vector_index_test(c1 INT, c2 VECTOR(3), PRIMARY KEY(c1), VECTOR INDEX idx1(c2) WITH (distance=l2, type=hnsw, lib=vsag));
テストデータを書き込みます。
INSERT INTO vector_index_test VALUES(1, '[0.203846,0.205289,0.880265]');
INSERT INTO vector_index_test VALUES(2, '[0.484526,0.669954,0.986755]');
INSERT INTO vector_index_test VALUES(3, '[0.327936,0.048756,0.084670]');
INSERT INTO vector_index_test VALUES(4, '[0.148869,0.878546,0.028024]');
INSERT INTO vector_index_test VALUES(5, '[0.334970,0.857377,0.886132]');
INSERT INTO vector_index_test VALUES(6, '[0.117582,0.302352,0.471198]');
INSERT INTO vector_index_test VALUES(7, '[0.551185,0.231134,0.075354]');
INSERT INTO vector_index_test VALUES(8, '[0.185221,0.315131,0.558301]');
INSERT INTO vector_index_test VALUES(9, '[0.928764,0.254038,0.272721]');
更新をトリガーします。
-- フル更新をトリガーします。
-- パラレル度を8に設定します。
CALL DBMS_VECTOR.REBUILD_INDEX('idx1','vector_index_test','c2','','','','',8);
-- パラレル度を設定しません。
CALL DBMS_VECTOR.REBUILD_INDEX('idx1','vector_index_test','c2');