experimental_hnsw_index

experimental_hnsw_index 系统变量控制是否启用 HNSW(Hierarchical Navigable Small World)向量索引插件。设为 0(默认值)时,CREATE INDEX ... USING hnsw 语句将被 拒绝。在创建或重建 HNSW 索引之前将其设为 1,以对向量列执行近似最近邻(ANN)搜索。 这是由会话级别标志控制的实验性功能。

experimental_hnsw_index 系统变量控制 MatrixOne 中 HNSW 向量索引算法的访问权限。HNSW 是一种基于图的算法,为向量数据提供高性能的近似最近邻搜索。由于这是实验性功能,该变量默 认值为 0,必须显式启用才能使用。

语法

SET GLOBAL experimental_hnsw_index = 0; SET SESSION experimental_hnsw_index = 1;

查询当前值:

SHOW VARIABLES LIKE ‘experimental_hnsw_index’; SELECT @@experimental_hnsw_index;

参数说明

属性

变量类型

bool

作用域

Both

是否动态

默认值

0

可选值

01

示例

DROP DATABASE IF EXISTS hnsw_demo;
CREATE DATABASE hnsw_demo;
USE hnsw_demo;

SET experimental_hnsw_index = 1;

CREATE TABLE h(a BIGINT PRIMARY KEY, v VECF32(3));
INSERT INTO h VALUES (1, '[1,1,1]'), (2, '[2,2,2]'), (3, '[3,3,3]'), (4, '[8,8,8]');

CREATE INDEX ix USING hnsw ON h(v) OP_TYPE "vector_l2_ops" MAX_INDEX_CAPACITY 1000000;

SELECT a FROM h ORDER BY L2_DISTANCE(v, '[1,1,1]') ASC LIMIT 2;

SET experimental_hnsw_index = 0;

DROP TABLE h;
DROP DATABASE hnsw_demo;

限制

  • experimental_hnsw_index 默认为 0。在此变量为 0 时尝试 CREATE INDEX ... USING hnsw 会导致操作失败。

  • HNSW 是纯 CPU 算法,不需要 GPU 硬件。

  • HNSW 索引支持以下构建参数:mef_constructionef_searchmax_index_capacity。这些参数可以在 CREATE INDEXALTER TABLE ... ALTER REINDEX 语句中指定。

  • 这是实验性功能。其行为、性能特性和 API 在未来的版本中可能会发生变化。