跳转到主要内容

回退参数

搜索参数通常通过 GUC 进行配置。VectorChord 还提供了另一种方式,允许将这些参数直接绑定到索引上,作为索引存储参数的一部分保存。
since v1.1.0

搜索参数通常通过 GUC 进行配置。VectorChord 还提供了另一种方式,允许将这些参数直接绑定到索引上,而不是绑定到会话(session)或事务(transaction)上。换句话说,您可以将它们作为索引存储参数(storage parameters)的一部分保存下来。

在构建索引时,您可以使用以下语法设置 probes:

CREATE INDEX items_embedding_idx ON items USING vchordrq (embedding vector_l2_ops) WITH (options = $$
build.internal.lists = [1000]
$$, probes = '10');

现在,您无需设置 GUC 即可直接执行搜索:

--- probes = '10'
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;

如果索引已经构建完成,您可以像这样修改 probes:

ALTER INDEX items_embedding_idx SET (probes = '100');

您仍然可以通过 GUC 设置搜索参数。当设置了 GUC 时,GUC 的优先级高于索引存储参数。这使您能够在不锁定索引的情况下,在当前会话或事务中临时覆盖这些设置。

SET vchordrq.probes TO '100';
--- probes = '100'
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;

这种语法在以下场景中非常有用:

  • 当存在多个索引且需要不同参数时。
  • 当您不希望设置 GUC 时。
  • 当您希望离线配置搜索参数时。

只要设置了 GUC(哪怕是在系统级别或数据库级别设置的),它都会覆盖索引上的存储参数设置。因此,为了避免难以排查的问题,我们建议仅使用一种方式来设置搜索参数:要么统一通过 GUC 设置,要么统一通过索引存储参数设置。

并非所有参数都支持此功能。有关支持此功能的全部参数,请参阅参考。

参考

索引存储参数(vchordrq)

vchordrq

probes

since v1.1.0
  • 说明:vchordrq.probes 的回退值。
  • 类型:整数列表(list of integers)
  • 默认值:

epsilon

since v1.1.0
  • 说明:vchordrq.epsilon 的回退值。
  • 类型:实数(real)
  • 默认值:1.9
  • 取值范围:[0.0, 4.0]

maxsim_refine

since v1.1.0
  • 说明:vchordrq.maxsim_refine 的回退值。
  • 类型:整数(integer)
  • 默认值:0
  • 取值范围:[0, 2147483647]

maxsim_threshold

since v1.1.0
  • 说明:vchordrq.maxsim_threshold 的回退值。
  • 类型:整数(integer)
  • 默认值:0
  • 取值范围:[0, 2147483647]

索引存储参数(vchordg)

vchordg

since v1.1.0
  • 说明:vchordg.ef_search 的回退值。
  • 类型:整数(integer)
  • 默认值:64
  • 取值范围:[1, 65535]