From b1866c9f8627633d09fe4156fa0dbe2cf55b63f9 Mon Sep 17 00:00:00 2001 From: wangjingyuan <1577039175@qq.com> Date: Fri, 21 Feb 2025 10:06:38 +0800 Subject: [PATCH] =?UTF-8?q?HNSWPQ=E8=B5=84=E6=96=99=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\221\351\207\217\345\274\225\346\223\216.md" | 3 ++- content/docs-lite/zh/docs/BriefTutorial/PQ.md | 16 +++++++++++++--- ...0\221\351\207\217\347\264\242\345\274\225.md" | 3 ++- ...0\221\351\207\217\345\274\225\346\223\216.md" | 3 ++- content/zh/docs/BriefTutorial/PQ.md | 16 +++++++++++++--- ...0\221\351\207\217\347\264\242\345\274\225.md" | 3 ++- 6 files changed, 34 insertions(+), 10 deletions(-) diff --git "a/content/docs-lite/zh/docs/AboutopenGauss/DataVec\345\220\221\351\207\217\345\274\225\346\223\216.md" "b/content/docs-lite/zh/docs/AboutopenGauss/DataVec\345\220\221\351\207\217\345\274\225\346\223\216.md" index aa28c8037..679fa6c8a 100644 --- "a/content/docs-lite/zh/docs/AboutopenGauss/DataVec\345\220\221\351\207\217\345\274\225\346\223\216.md" +++ "b/content/docs-lite/zh/docs/AboutopenGauss/DataVec\345\220\221\351\207\217\345\274\225\346\223\216.md" @@ -31,6 +31,7 @@ DataVec能够无缝对接自研大模型。通过嵌入技术将非结构化数 ### 索引支持 - IVFFLAT - HNSW +- IVFPQ - HNSWPQ ### 架构设计 @@ -167,7 +168,7 @@ openGauss=# INSERT INTO items (val) VALUES ('[1,2,3]'), ('[4,5,6]'); ### 向量索引创建 -DataVec目前支持了IVFFLAT、HNSW及HNSWPQ等算法的[向量索引](../SQLReference/向量索引.md),基于openGauss中的ASTORE和USTORE存储实现,通过索引结构能够高效地检索出查询结果。 +DataVec目前支持了IVFFLAT、HNSW、IVFPQ及HNSWPQ等算法的[向量索引](../SQLReference/向量索引.md),基于openGauss中的ASTORE和USTORE存储实现,通过索引结构能够高效地检索出查询结果。 ``` CREATE INDEX [INDEX_NAME] diff --git a/content/docs-lite/zh/docs/BriefTutorial/PQ.md b/content/docs-lite/zh/docs/BriefTutorial/PQ.md index 39f74e8a8..045950dd5 100644 --- a/content/docs-lite/zh/docs/BriefTutorial/PQ.md +++ b/content/docs-lite/zh/docs/BriefTutorial/PQ.md @@ -5,7 +5,7 @@ 本章节主要介绍openGauss数据库DataVec向量引擎PQ(Product Quantization)特性的安装使用步骤,以指导用户顺利完成操作。本特性将DataVec向量引擎和自研PQ算法相结合,以提高向量检索的查询性能。 >![](public_sys-resources/icon-note.gif) **限制:
** >PQ特性暂时只支持ARM架构环境。
->PQ特性暂时只支持HNSW和IVFFLAT索引。
+>PQ特性暂时只支持HNSW和IVF索引。
>PQ特性暂时只支持vector数据类型,在其他向量数据类型构建HNSWPQ以及IVFPQ索引会导致执行失败。
>在创建PQ索引前需要先插入数据,无数据情况下会创建失败。 ## 安装准备 @@ -48,6 +48,8 @@ openGauss=# SET hnsw_earlystop_threshold = - `TABLE_NAME` - 表名 - `COLUMN_NAME` - 向量数据列名 +创建PQ索引时表中的数据量小于pq_ksub可以正常创建索引,但会提示参与训练码本的数据量较少,召回率可能会偏低。 + #### HNSWPQ索引操作符 HNSW索引操作符`[TYPE]_[DISTANCE_FUN]_ops` 格式: @@ -76,7 +78,15 @@ vector_cosine_ops | 余弦距离 - `m` - 每个图层最大连接数 2~100(默认为16) - `ef_construction` - 用于图形构造的动态候选集大小 4~1000,必须大于等于2*m(默认为64) - `enable_pq` - 开启pq量化压缩(默认off) -- `pq_m` - 切分的子空间数量 1~2000(默认为8) +- `pq_m` - 切分的子空间数量 1~2000(默认为8)。对于高维向量,pq_m的上限受页面大小限制,可能会在创建索引时报错,并给出当前向量维度对应pq_m的上限,还需结合pq_m的其他限制确定最终值。 + +**示例:** 使用L2距离创建HNSWPQ索引,其中表items中向量为2000维。 + +``` +openGauss=# CREATE INDEX ON items USING hnsw (embedding vector_l2_ops) WITH (enable_pq=on, pq_m=2000); +ERROR: vector and pqcode must on the same page, max pq_m is 72 +``` +对于HNSWPQ索引,2000维的vector pq_m的最大值是72,由于维度%pq_m=0的限制,pq_m的最大值是50。 - `pq_ksub` - 每个子空间的聚类中心数量 1~256(默认为256) #### GUC参数 @@ -133,7 +143,7 @@ vector_cosine_ops|<=>|余弦距离 - `lists` - 倒排表(单元格)聚类中心数量(默认为100) - `enable_pq` - 开启pq量化压缩(默认off) -- `pq_m` - 仅在`enable_pq`开启时有效,切分的子空间数量 1~2000(默认为8) +- `pq_m` - 仅在`enable_pq`开启时有效,切分的子空间数量 1~2000(默认为8)。对于高维向量,pq_m的上限受页面大小限制,可能会在创建索引时报错,并给出当前向量维度对应pq_m的上限,还需结合pq_m的其他限制确定最终值。 - `pq_ksub` - 仅在`enable_pq`开启时有效,每个子空间的聚类中心数量 1~256 (默认256) - `by_residual` - 仅在`enable_pq`开启时有效,启用残差运算(默认off) diff --git "a/content/docs-lite/zh/docs/SQLReference/\345\220\221\351\207\217\347\264\242\345\274\225.md" "b/content/docs-lite/zh/docs/SQLReference/\345\220\221\351\207\217\347\264\242\345\274\225.md" index 67298b5c4..2a161ddc9 100644 --- "a/content/docs-lite/zh/docs/SQLReference/\345\220\221\351\207\217\347\264\242\345\274\225.md" +++ "b/content/docs-lite/zh/docs/SQLReference/\345\220\221\351\207\217\347\264\242\345\274\225.md" @@ -228,10 +228,11 @@ openGauss=# REINDEX INDEX t_val_idx; >![](public_sys-resources/icon-note.png) **说明:** >修改向量索引参数后需使用`REINDEX`更新索引,并且REINDEX支持并行,并行度仍根据数据表中`parallel_workers`决定。 >不支持修改索引操作符,如vector_l2_ops到vector_cosine_ops。 +>alter index修改索引选项时,HNSWPQ、IVFPQ索引无法校验PQ相关参数,在reindex时进行校验。 ## 约束 - 向量索引仅支持普通行存表,临时表,Toast表,Unlogged表,段页式表等,其他表仅支持对向量数据创建btree和ubtree索引。 -- 若ALTER INDEX后不执行REINDEX,后插入的数据会根据新的索引选项构建索引,而索引中已存在的数据不会因此改变。 +- 若ALTER INDEX后不执行REINDEX,索引仍是原索引的选项配置,后插入的数据也会根据原索引选项构建索引。 - IVFFLAT索引不支持ustore存储。 - 构建带有向量表时可以使用INDEX子句构建默认btree、ubtree索引,无法指定向量索引。 - 未指定向量列维度时无法构建向量索引,只支持构建btree、ubtree索引。 diff --git "a/content/zh/docs/AboutopenGauss/DataVec\345\220\221\351\207\217\345\274\225\346\223\216.md" "b/content/zh/docs/AboutopenGauss/DataVec\345\220\221\351\207\217\345\274\225\346\223\216.md" index e09855cfd..4703f0799 100644 --- "a/content/zh/docs/AboutopenGauss/DataVec\345\220\221\351\207\217\345\274\225\346\223\216.md" +++ "b/content/zh/docs/AboutopenGauss/DataVec\345\220\221\351\207\217\345\274\225\346\223\216.md" @@ -31,6 +31,7 @@ DataVec能够无缝对接自研大模型。通过嵌入技术将非结构化数 ### 索引支持 - IVFFLAT - HNSW +- IVFPQ - HNSWPQ ### 架构设计 @@ -167,7 +168,7 @@ openGauss=# INSERT INTO items (val) VALUES ('[1,2,3]'), ('[4,5,6]'); ### 向量索引创建 -DataVec目前支持了IVFFLAT、HNSW及HNSWPQ等算法的[向量索引](../SQLReference/向量索引.md),基于openGauss中的ASTORE和USTORE存储实现,通过索引结构能够高效地检索出查询结果。 +DataVec目前支持了IVFFLAT、HNSW、IVFPQ及HNSWPQ等算法的[向量索引](../SQLReference/向量索引.md),基于openGauss中的ASTORE和USTORE存储实现,通过索引结构能够高效地检索出查询结果。 ``` CREATE INDEX [INDEX_NAME] diff --git a/content/zh/docs/BriefTutorial/PQ.md b/content/zh/docs/BriefTutorial/PQ.md index 542665409..ee0ad1b86 100644 --- a/content/zh/docs/BriefTutorial/PQ.md +++ b/content/zh/docs/BriefTutorial/PQ.md @@ -6,7 +6,7 @@ >![](public_sys-resources/icon-note.png) **限制:
** >PQ特性暂时只支持ARM架构环境。
->PQ特性暂时只支持HNSW和IVFFLAT索引。
+>PQ特性暂时只支持HNSW和IVF索引。
>PQ特性暂时只支持vector数据类型,在其他向量数据类型构建HNSWPQ以及IVFPQ索引会导致执行失败。
>在创建PQ索引前需要先插入数据,无数据情况下会创建失败。 ## 安装准备 @@ -49,6 +49,8 @@ openGauss=# SET hnsw_earlystop_threshold = - `TABLE_NAME` - 表名 - `COLUMN_NAME` - 向量数据列名 +创建PQ索引时表中的数据量小于pq_ksub可以正常创建索引,但会提示参与训练码本的数据量较少,召回率可能会偏低。 + #### HNSWPQ索引操作符 HNSW索引操作符`[TYPE]_[DISTANCE_FUN]_ops` 格式: @@ -77,7 +79,15 @@ vector_cosine_ops | 余弦距离 - `m` - 每个图层最大连接数 2~100(默认为16) - `ef_construction` - 用于图形构造的动态候选集大小 4~1000,必须大于等于2*m(默认为64) - `enable_pq` - 开启pq量化压缩(默认off) -- `pq_m` - 切分的子空间数量 1~2000(默认为8) +- `pq_m` - 切分的子空间数量 1~2000(默认为8)。对于高维向量,pq_m的上限受页面大小限制,可能会在创建索引时报错,并给出当前向量维度对应pq_m的上限,还需结合pq_m的其他限制确定最终值。 + +**示例:** 使用L2距离创建HNSWPQ索引,其中表items中向量为2000维。 + +``` +openGauss=# CREATE INDEX ON items USING hnsw (embedding vector_l2_ops) WITH (enable_pq=on, pq_m=2000); +ERROR: vector and pqcode must on the same page, max pq_m is 72 +``` +对于HNSWPQ索引,2000维的vector pq_m的最大值是72,由于维度%pq_m=0的限制,pq_m的最大值是50。 - `pq_ksub` - 每个子空间的聚类中心数量 1~256(默认为256) #### GUC参数 @@ -134,7 +144,7 @@ vector_cosine_ops|<=>|余弦距离 - `lists` - 倒排表(单元格)聚类中心数量(默认为100) - `enable_pq` - 开启pq量化压缩(默认off) -- `pq_m` - 仅在`enable_pq`开启时有效,切分的子空间数量 1~2000(默认为8) +- `pq_m` - 仅在`enable_pq`开启时有效,切分的子空间数量 1~2000(默认为8)。对于高维向量,pq_m的上限受页面大小限制,可能会在创建索引时报错,并给出当前向量维度对应pq_m的上限,还需结合pq_m的其他限制确定最终值。 - `pq_ksub` - 仅在`enable_pq`开启时有效,每个子空间的聚类中心数量 1~256 (默认256) - `by_residual` - 仅在`enable_pq`开启时有效,启用残差运算(默认off) diff --git "a/content/zh/docs/SQLReference/\345\220\221\351\207\217\347\264\242\345\274\225.md" "b/content/zh/docs/SQLReference/\345\220\221\351\207\217\347\264\242\345\274\225.md" index f7a344734..82a8b188b 100644 --- "a/content/zh/docs/SQLReference/\345\220\221\351\207\217\347\264\242\345\274\225.md" +++ "b/content/zh/docs/SQLReference/\345\220\221\351\207\217\347\264\242\345\274\225.md" @@ -228,10 +228,11 @@ openGauss=# REINDEX INDEX t_val_idx; >![](public_sys-resources/icon-note.png) **说明:** >修改向量索引参数后需使用`REINDEX`更新索引,并且REINDEX支持并行,并行度仍根据数据表中`parallel_workers`决定。 >不支持修改索引操作符,如vector_l2_ops到vector_cosine_ops。 +>alter index修改索引选项时,HNSWPQ、IVFPQ索引无法校验PQ相关参数,在reindex时进行校验。 ## 约束 - 向量索引仅支持普通行存表,临时表,Toast表,Unlogged表,段页式表等,其他表仅支持对向量数据创建btree和ubtree索引。 -- 若ALTER INDEX后不执行REINDEX,后插入的数据会根据新的索引选项构建索引,而索引中已存在的数据不会因此改变。 +- 若ALTER INDEX后不执行REINDEX,索引仍是原索引的选项配置,后插入的数据也会根据原索引选项构建索引。 - IVFFLAT索引不支持ustore存储。 - 构建带有向量表时可以使用INDEX子句构建默认btree、ubtree索引,无法指定向量索引。 - 未指定向量列维度时无法构建向量索引,只支持构建btree、ubtree索引。 -- Gitee