diff --git a/content/docs-lite/zh/docs/BriefTutorial/PQ.md b/content/docs-lite/zh/docs/BriefTutorial/PQ.md index 045950dd5c9877b24c659bd961aad8c4fad6aaed..a5760606a2086d287f36e251cebae77e31a44f7a 100644 --- a/content/docs-lite/zh/docs/BriefTutorial/PQ.md +++ b/content/docs-lite/zh/docs/BriefTutorial/PQ.md @@ -40,8 +40,6 @@ openGauss=# CREATE INDEX [INDEX_NAME] ON [TABLE_NAME] USING hnsw (COLUMN_NAME [TYPE]_[DISTANCE_FUN]_ops) with (m=, ef_construction=, enable_pq = on, pq_m = , pq_ksub = ); - -openGauss=# SET hnsw_earlystop_threshold = ``` - `INDEX_NAME` - 索引名称 @@ -87,21 +85,23 @@ openGauss=# CREATE INDEX ON items USING hnsw (embedding vector_l2_ops) WITH (ena 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) +- `pq_ksub` - 每个子空间的聚类中心数量 1~256(默认为256)
+ +**设置建议:** +- pq_m:切分子空间越多,精度越高,同时性能越低。该值必须要能整除数据集维度,否则索引无法创建成功,推荐值为`维度/4`。 +- pq_ksub:聚类中心越多,精度越高,但同时性能越低。推荐值为`256`。 +- 其余参数设置与[向量索引](../SQLReference/向量索引.md)中HNSW索引中相同。 #### GUC参数 - `hnsw_earlystop_threshold` - 设置图搜索的最大连续迭代次数 160~INT32_MAX-1 (默认INT32_MAX) -**示例:** 使用L2距离计算创建HNSWPQ索引并设置`m = 16, ef_construction = 64, pq_m=32`。 +**示例:** 使用L2距离计算创建HNSWPQ索引并设置`m = 16, ef_construction = 64, pq_m=32`,并设置`hnsw_earlystop_threshold`为320。 ``` openGauss=# CREATE INDEX ON items USING hnsw (embedding vector_l2_ops) WITH (m = 16, ef_construction = 64, enable_pq=on, pq_m=32); -``` -**设置建议:** -- pq_m:切分子空间越多,精度越高,同时性能越低。该值必须要能整除数据集维度,否则索引无法创建成功,推荐值为`维度/4`。 -- pq_ksub:聚类中心越多,精度越高,但同时性能越低。推荐值为`256`。 -- 其余参数设置与[向量索引](../SQLReference/向量索引.md)中HNSW索引中相同。 +openGauss=# SET hnsw_earlystop_threshold = 320; +``` ### IVFPQ diff --git "a/content/docs-lite/zh/docs/DatabaseReference/DataVec\345\220\221\351\207\217\345\274\225\346\223\216\345\217\202\346\225\260.md" "b/content/docs-lite/zh/docs/DatabaseReference/DataVec\345\220\221\351\207\217\345\274\225\346\223\216\345\217\202\346\225\260.md" index 0bc9e3ee8b2514874f54f845cf73fb812f55cc03..93e151c2a751c7fab148131d4afb4e28c29dec6b 100644 --- "a/content/docs-lite/zh/docs/DatabaseReference/DataVec\345\220\221\351\207\217\345\274\225\346\223\216\345\217\202\346\225\260.md" +++ "b/content/docs-lite/zh/docs/DatabaseReference/DataVec\345\220\221\351\207\217\345\274\225\346\223\216\345\217\202\346\225\260.md" @@ -48,9 +48,9 @@ **参数说明**: HNSW索引开启PQ时,在早停策略中设置图搜索的最大连续迭代次数。 -该参数属于USERSET类型参数,请参考[表1](../DatabaseAdministrationGuide/重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +该参数仅支持[表1](../DatabaseAdministrationGuide/重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应方法三进行设置。 -**取值范围**: 整型,160~INT32_MAX-1 +**取值范围**: 整型,160~INT32_MAX **默认值**: INT32_MAX 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 2a161ddc9e8d5e1d6849a113f536769d3164b503..e38dac511069c3d89488d8556741fb35721df803 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" @@ -96,6 +96,9 @@ openGauss=# SET hnsw_ef_search = 100; openGauss=# ALTER TABLE items SET(parallel_workers=32); ``` +>![](public_sys-resources/icon-note.png) **说明:** +> hnsw构建图索引时会概率性出现某些数据点不可达的情况,这就导致索引查询返回数据量有误差。该情况和数据集、参数m、ef_construction有关,当增大m时会有改善。建议全量数据查找使用ivfflat索引,hnsw适用于limit远小于整体数据量的场景。 + ## IVFFlat ``` CREATE INDEX [INDEX_NAME] diff --git a/content/zh/docs/BriefTutorial/PQ.md b/content/zh/docs/BriefTutorial/PQ.md index ee0ad1b865d6f324c7a6b0a514f61e50719ef2c2..8c16a9a85070741c6168004198f0487183f4c7d5 100644 --- a/content/zh/docs/BriefTutorial/PQ.md +++ b/content/zh/docs/BriefTutorial/PQ.md @@ -41,8 +41,6 @@ openGauss=# CREATE INDEX [INDEX_NAME] ON [TABLE_NAME] USING hnsw (COLUMN_NAME [TYPE]_[DISTANCE_FUN]_ops) with (m=, ef_construction=, enable_pq = on, pq_m = , pq_ksub = ); - -openGauss=# SET hnsw_earlystop_threshold = ``` - `INDEX_NAME` - 索引名称 @@ -88,21 +86,24 @@ openGauss=# CREATE INDEX ON items USING hnsw (embedding vector_l2_ops) WITH (ena 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) +- `pq_ksub` - 每个子空间的聚类中心数量 1~256(默认为256)
+ +**设置建议:** + +- pq_m:切分子空间越多,精度越高,同时性能越低。该值必须要能整除数据集维度,否则索引无法创建成功,推荐值为`维度/4`。 +- pq_ksub:聚类中心越多,精度越高,但同时性能越低。推荐值为`256`。 +- 其余参数设置与[向量索引](../SQLReference/向量索引.md)中HNSW索引中相同。 #### GUC参数 - `hnsw_earlystop_threshold` - 设置图搜索的最大连续迭代次数 160~INT32_MAX-1 (默认INT32_MAX) -**示例:** 使用L2距离计算创建HNSWPQ索引并设置`m = 16, ef_construction = 64, pq_m=32`。 +**示例:** 使用L2距离计算创建HNSWPQ索引并设置`m = 16, ef_construction = 64, pq_m=32`,并设置`hnsw_earlystop_threshold`为320。 ``` openGauss=# CREATE INDEX ON items USING hnsw (embedding vector_l2_ops) WITH (m = 16, ef_construction = 64, enable_pq=on, pq_m=32); -``` -**设置建议:** -- pq_m:切分子空间越多,精度越高,同时性能越低。该值必须要能整除数据集维度,否则索引无法创建成功,推荐值为`维度/4`。 -- pq_ksub:聚类中心越多,精度越高,但同时性能越低。推荐值为`256`。 -- 其余参数设置与[向量索引](../SQLReference/向量索引.md)中HNSW索引中相同。 +openGauss=# SET hnsw_earlystop_threshold = 320; +``` ### IVFPQ diff --git "a/content/zh/docs/DatabaseReference/DataVec\345\220\221\351\207\217\345\274\225\346\223\216\345\217\202\346\225\260.md" "b/content/zh/docs/DatabaseReference/DataVec\345\220\221\351\207\217\345\274\225\346\223\216\345\217\202\346\225\260.md" index a0fe4bcb4cb1bdfd63212a3820d362c8644acf42..3b0e8895928066582cb4ff739fb69d8e13a2ed6d 100644 --- "a/content/zh/docs/DatabaseReference/DataVec\345\220\221\351\207\217\345\274\225\346\223\216\345\217\202\346\225\260.md" +++ "b/content/zh/docs/DatabaseReference/DataVec\345\220\221\351\207\217\345\274\225\346\223\216\345\217\202\346\225\260.md" @@ -48,9 +48,9 @@ **参数说明**: HNSW索引开启PQ时,在早停策略中设置图搜索的最大连续迭代次数。 -该参数属于USERSET类型参数,请参考[表1](../DatabaseAdministrationGuide/重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +该参数仅支持[表1](../DatabaseAdministrationGuide/重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应方法三进行设置。 -**取值范围**: 整型,160~INT32_MAX-1 +**取值范围**: 整型,160~INT32_MAX **默认值**: INT32_MAX 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 82a8b188bcf5d8429641c0b8f0b8376c78b88e18..8ee2047cd81a03a35bd0e513767bfde2e9b30088 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" @@ -96,6 +96,9 @@ openGauss=# SET hnsw_ef_search = 100; openGauss=# ALTER TABLE items SET(parallel_workers=32); ``` +>![](public_sys-resources/icon-note.png) **说明:** +> hnsw构建图索引时会概率性出现某些数据点不可达的情况,这就导致索引查询返回数据量有误差。该情况和数据集、参数m、ef_construction有关,当增大m时会有改善。建议全量数据查找使用ivfflat索引,hnsw适用于limit远小于整体数据量的场景。 + ## IVFFlat ``` CREATE INDEX [INDEX_NAME]