向量数据库参数
diskann_probe_ncandidates
参数说明:指定利用gsdiskann索引检索向量时的候选集合大小。
参数类型:整型
参数单位:无
取值范围:1 ~ 32768
默认值:128
设置方式:该参数属于USERSET类型参数,请参见《参考》中的“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:
- 推荐使用默认值,建议在使用中通过实验获得最优的参数配置。
- diskann_probe_ncandidates参数可以对于个别使用gsdiskann索引的查询进行设置和生效,建议只在会话中用set进行设置,不建议使用gs_guc进行全局设置。
设置不当的风险与影响:该参数设置过大会导致查询性能下降;设置过小会导致召回率不足。
diskann_hybrid_search_type
参数说明:指定向标混合场景下的查询策略。该参数可以对向标混合场景的查询进行设置和生效。
本参数为会话级生效,建议使用《参考》中“数据库运行参数说明 > 设置参数”中方式二进行GUC设置,否则DN端无法选择指定策略。
参数类型:字符串
参数单位:无
取值范围:
- "AUTO":默认参数,根据diskann_hybrid_pre_filter_selectivity和diskann_hybrid_flat_upper_bound的值选取策略。
- "PRE_FILTER_FLAT":表示指定为先过滤后暴搜策略。
- "PRE_FILTER_ANN":表示指定为先过滤后图搜策略。
- "POST_FILTER_ANN":表示指定为先图搜后过滤策略。
默认值:"AUTO"
设置方式:该参数属于USERSET类型参数,请参见《参考》中“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:推荐使用默认值,建议在使用中通过实验获得最优的参数配置。
设置不当的风险与影响:不同数据集场景下该参数设置不当可能会导致召回率不足或查询性能下降。
diskann_hybrid_pre_filter_selectivity
参数说明:指定向标混合场景下前过滤策略的选择率阈值。当选择率小于该阈值时执行前过滤查询,大于等于该阈值执行后过滤查询。
- 当diskann_hybrid_search_type参数非默认值时,本参数不生效。
- 本参数为会话级生效,建议使用《参考》中“数据库运行参数说明 > 设置参数”中方式二进行guc设置,否则DN端无法选择指定策略。
参数类型:浮点型
参数单位:无
取值范围:0 ~ 1
默认值:0.15
设置方式:该参数属于USERSET类型参数,请参见《参考》中“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:推荐使用默认值,建议在使用中通过实验获得最优的参数配置。
设置不当的风险与影响:该参数设置不当会导致召回率不足或查询性能下降。
diskann_hybrid_pullup_selectivity
参数说明:指定向标混合前过滤场景下,将部分前过滤条件上提到后过滤的选择率阈值。该参数设置越小,越容易将更多前过滤条件上提到后过滤。默认1.0取值下,前过滤条件不会上提到后过滤。
- 上提后过滤条件时,会将最外层由AND连接的每个子条件视为一个整体,决定是否上提。例如A > 5 AND (B > 3 OR C > 3)中,A > 5是一个整体,(B > 3 OR C > 3)是一个整体。(B > 3 OR C > 3)要么统一放在前过滤,要么统一放在后过滤,不会拆开。
- 该参数的优先级低于diskann_hybrid_search_type参数和diskann_hybrid_pre_filter_selectivity参数。只有当diskann_hybrid_search_type设置为默认值,且过滤条件的整体选择率<diskann_hybrid_pre_filter_selectivity时,才有可能触发前过滤上提后过滤。
- 算法会按照选择率从高到低的顺序,尽可能将更多条件从前过滤上提至后过滤,直到不再满足后过滤选择率 > diskann_hybrid_pullup_selectivity且后过滤选择率 >= diskann_hybrid_pre_filter_selectivity的约束条件。
- 整体过滤条件选择率为0时,本参数不生效。
- diskann_hybrid_pullup_selectivity < diskann_hybrid_pre_filter_selectivity的行为等价于diskann_hybrid_pullup_selectivity = diskann_hybrid_pre_filter_selectivity的行为。
- 算法保证不会将所有前过滤条件上提为后过滤。
参数类型:浮点型
参数单位:无
取值范围:0 ~ 1
默认值:1
设置方式:该参数属于USERSET类型参数,请参见《参考》中“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:前过滤爆搜/前过滤图搜策略中,根据过滤条件生成bitmap的开销和数据集大小*每个过滤条件的选择率累加和成正比。因此当数据集大小*选择率累加和过大,导致先过滤策略查询时延过高时,可以适当调小该参数,让部分先过滤条件上提到后过滤,减小bitmap生成开销。
设置不当的风险与影响:该参数设置会引起执行计划变更,设置不当可能导致查询没有走最优的执行计划。
diskann_hybrid_flat_upper_bound
参数说明:指定向标混合前过滤场景下暴搜策略最大数据量阈值。小于该数据量时执行暴力搜索,大于该数据量时执行向量检索。
- 当该参数设置为0时,arm64架构下实际生效值为8000,其他架构下实际生效值为11000。
- 当diskann_hybrid_search_type参数非默认值时,本参数不生效。
- 本参数为会话级生效,建议使用《参考》手册的“数据库运行参数说明 > 设置参数”中方式二进行guc设置,否则DN端无法选择指定策略。
参数类型:整型
参数单位:无
取值范围:0 ~ 1000000
默认值:0
设置方式:该参数属于USERSET类型参数,请参见《参考》手册的“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:推荐使用默认值,建议在使用中通过实验获得最优的参数配置。
设置不当的风险与影响:该参数设置不当会导致召回率不足或查询性能下降。
diskann_hybrid_neighbor_search_prune_factor
参数说明:向标混合索引选择前过滤后ANN策略场景下,在搜索过程中,对不符合查询条件的邻居的裁剪比例因子。0为不裁剪,参数值越大,裁剪比例越高,1为全裁剪。
参数类型:浮点型
参数单位:无
取值范围:0 ~ 1
默认值:0。
设置方式:该参数属于USERSET类型参数,请参见《参考》手册的“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:
- 推荐使用0.3,一般场景下,裁剪因子越大,可以提升查询性能,但会损失召回率,反之,召回率提升,损失查询性能,建议在使用中通过实验获得最优的参数配置。
- 本参数为会话级生效,建议使用《参考》手册的“数据库运行参数说明 > 设置参数”中方式二进行guc设置,否则DN端无法使用指定过滤。
设置不当的风险与影响:该参数设置过大会导致召回率不足。
diskann_hybrid_enable_lazy_flip_bitmap
参数说明:控制是否开启lazy flip bitmap特性。在前过滤爆搜或前过滤图搜策略下,对于一个选择率大于50%的标量查询或IS NOT NULL查询条件,如果其选择率大于50%,lazy flip bitmap就会计算它的补集,以此减少向bitmap插入数据的开销。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启。
- off:表示关闭。
默认值:on
设置方式:该参数属于USERSET类型参数,请参见《参考》手册的“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
gsivfflat_probes
参数说明:指定利用gsivfflat索引检索向量时待搜索的倒排列表的数量,超过gsivfflat索引的倒排列表总数时执行全表搜索。gsivfflat索引的倒排列表总数由创建索引时参数ivf_nlist指定。
参数类型:整型
参数单位:无
取值范围:1 ~ 32768
默认值:5
设置方式:该参数属于USERSET类型参数,请参见《参考》手册的“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:推荐设置为索引创建时参数ivf_nlist取值的3%。建议在使用中通过实验获得最优的参数配置。
设置不当的风险与影响:该参数设置越大,搜索时间越长,但结果越准确。
gsivfflat_secondary_probes
参数说明:指定利用gsivfflat索引检索向量时待搜索的二级倒排列表的数量,超过二级倒排列表总数时执行全表搜索。二级倒排列表总数由创建索引时参数ivf_nlist2指定。
参数类型:整型
参数单位:无
取值范围:1 ~ 32768
默认值:5
设置方式:该参数属于USERSET类型参数,请参见《参考》手册的“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:推荐设置为索引创建时参数ivf_nlist2取值的1/4~1/2之间。建议在使用中通过实验获得最优的参数配置。
设置不当的风险与影响:该参数设置越大,搜索时间越长,但结果越准确。
gsivfflat_secondary_probes效果和gsivfflat_probes相同,只有向量索引为双层索引时生效,可以有效加速查询速度。建议在使用中通过实验获得最优的参数配置。
enable_vectordb
参数说明:表示是否允许创建向量索引,是否允许对向量索引增加、修改和查询。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示允许。
- off:表示不允许。
默认值:off
设置方式:该参数属于SIGHUP类型参数,请参见《参考》手册的“数据库运行参数说明 > 设置参数”中对应设置方法进行设置。
设置建议:当不允许用户使用向量索引等向量数据库功能时,请设置为off,否则请设置为on。
设置不当的风险与影响:参数取值决定了用户能否使用向量数据库的功能,设置错误会导致用户使用数据库功能范围错误。
| GUC参数名 | 级别 | 取值范围(默认值) | 描述 |
|---|---|---|---|
| maintenance_work_mem | 会话级(session) | [1024,2147483647]/[1MB,2048GB) (65536/64MB) | 指定在维护性操作中使用的最大的内存量。默认单位是KB。 |
| diskann_probe_ncandidates | 会话级(session) | [1, 32768](128) | 表示利用gsdiskann索引检索向量时的候选集合大小。 |
| gsivfflat_probes | 会话级(session) | [1, 32768](5) | 表示待搜索的倒排列表的数量,超过倒排列表总数时执行全表搜索。 |
| gsivfflat_secondary_probes | 会话级(session) | [1, 32768](5) | 表示待搜索的二级倒排列表的数量,超过二级倒排列表总数时执行全表搜索。 |
| enable_vectordb | 全局参数(SIGHUP) | [off,on](off) | 高阶特性,表示是否允许创建向量索引,是否允许对向量索引增加、修改和查询。 |