跳到主要内容

REBUILD_INDEX

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');

相关文档