LSG
介绍
LSG(Local Scaling Grapgh)是一种局部缩放算法,可以提升HNSW索引的查询效率和召回率。本章节主要介绍openGauss数据库DataVec向量引擎LSG特性的使用步骤,以指导用户顺利完成操作。
**说明**
LSG特性支持ARM/x86架构环境。
LSG特性暂时只支持HNSW索引。
LSG特性要求构建索引前插入一定量数据,否则会有报错提示。
LSG特性不支持和PQ以及RabitQ等量化方法一起使用,否则会有报错提示
兼容A/B/C/PG库。
支持并行构建。
安装准备
环境要求
LSG特性支持ARM和x86架构环境。
启用LSG特性
设置索引参数enable_lsg = on启用LSG特性
关闭LSG特性
设置索引参数enable_lsg = off关闭LSG特性
使用LSG
HNSW-LSG
openGauss=# CREATE INDEX [INDEX_NAME]
ON [TABLE_NAME]
USING hnsw (COLUMN_NAME [TYPE]_[DISTANCE_FUN]_ops)
with (m=<M>, ef_construction=<EF_CONSTRUCTION>, enable_lsg = on, lsg_degree=<REFINE_VALUE>, lsg_alpha=<REFINE_VALUE>);
INDEX_NAME- 索引名称TABLE_NAME- 表名COLUMN_NAME- 向量数据列名
HNSW-LSG索引操作符
HNSW索引操作符[TYPE]_[DISTANCE_FUN]_ops 格式:
TYPE- 向量类型- vector
HNSW-LSG索引支持向量数据维度:
| 名称 | 维度限制 |
|---|---|
| vector | 2,000 |
DISTANCE_FUN- 距离函数- l2
- ip
- cosine
索引操作符
| 索引操作符 | 描述 |
|---|---|
| vector_l2_ops | vector类型-L2距离 |
| vector_ip_ops | vector类型-内积 |
| vector_cosine_ops | vector类型-余弦距离 |
索引选项
-
m- 每个图层最大连接数 2~100(默认为16) -
ef_construction- 用于图形构造的动态候选集大小 4~1000,必须大于等于2*m(默认为64) -
enable_lsg- 开启HNSW索引LSG构图(默认off) -
lsg_degree- 定义计算HNSW索引节点孤立度时选取的最近邻节点个数。类型:整数,范围[32,128],默认为96。 -
lsg_alpha- 定义HSNW索引LSG缩放的平滑度。类型:浮点数,范围[0, 3.0],默认为2.0。示例: 使用L2距离创建HNSW-LSG索引,其中表items中向量为2000维vector数据类型。
openGauss=# CREATE INDEX ON items USING hnsw (embedding vector_l2_ops) WITH (enable_lsg=on, lsg_degree=96, lsg_alpha=2.0);
设置建议:
- 其余参数设置与向量索引中HNSW索引中相同。