AlloyDB Omni ScaNN 索引参考

选择文档版本:

本页面详细介绍了 AlloyDB Omni 中可扩容最近邻 (ScaNN) 索引的调优参数。

如需获取有关如何从头到尾实现向量搜索的分步教程,请参阅如何执行向量搜索指南。

调优参数

以下索引和查询参数用于在召回率和每秒查询次数 (QPS) 之间取得适当的平衡。

调优参数 说明 选项类型
mode 将 ScaNN 索引定义为自动调优索引或手动调优 索引。可用选项如下:
  • AUTO:自动调优索引
  • MANUAL:手动调优索引

如需了解详情,请参阅 创建 ScaNN 索引

索引创建

(可选)

max_num_levels K-means 聚类树的形心级别数量上限。如需获得有关设置此值的指导,请参阅对 ScaNN 索引进行调优

可用值如下:

  • 1:二级 ScaNN 索引
  • 2:三级 ScaNN 索引
  • 3:四级 ScaNN 索引(预览版

如果您将 max_num_levels 设置为 3,则还必须 将 scann.max_allowed_num_levels 设置为 3。如需了解详情,请参阅调优 ScaNN 索引的最佳实践

索引创建

(可选)

num_leaves 要应用于此索引的分区数量。最大值为 30000000。如需详细了解如何选择此值,请参阅 对 ScaNN 索引进行调优调优 ScaNN 索引的最佳实践

索引创建

手动调优 索引必需)

quantizer 您要用于 K-means 树的量化器的类型。默认值设置为 SQ8,这可在召回率损失最小(通常低于 1-2%)的情况下提供更好的查询性能。

如果需要 99% 或更高的召回率,请将其设置为 FLAT
索引创建
(可选)
scann.enable_pca 启用主成分分析 (PCA),这是一种降维技术,用于尽可能自动缩减嵌入的大小。此选项默认处于启用状态。

如果您发现召回率下降,请将其设置为 false
索引创建
(可选)
auto_maintenance 自动维护 ScaNN 索引,以便在数据集不断增长时, AlloyDB Omni 会分析和更新形心,并 拆分大型离群值分区。这会自动提高 QPS 和 搜索结果。如需了解详情,请参阅 自动维护索引

索引创建

(可选)

自动管理向量索引 搜索的分区数量。如需了解详情,请参阅 搜索分区百分比

要搜索的分区的绝对数量。这可让您在 查询召回率和 QPS 之间进行权衡。默认值为 num_leaves 的 1%。

值越高,查询召回率越高,但 QPS 越低。同样, 值越低,查询召回率越低,但 QPS 越高。

查询运行时

(可选)

scann.pre_reordering_num_neighbors

指定在初始搜索确定一组候选项后,在重新排序阶段要考虑的候选近邻项的数量。将此参数设置为高于您希望查询返回的近邻项数量的值。值越高,召回率越高,但 QPS 越低。

默认值为 0,这会停用重新排序。如果在创建索引期间启用了 PCA,则默认值为 50 x K,其中 K 是查询中指定的 LIMIT。

查询运行时

(可选)

scann.num_search_threads 用于多线程搜索的搜索程序线程数。这可以在延迟时间敏感型应用中使用多个线程进行 ScaNN ANN 搜索,从而帮助缩短单个查询的延迟时间。如果数据库已受限于 CPU,此设置不会缩短单个查询的延迟时间。默认值为 2 查询运行时
(可选)

scann.satisfy_limit预览版

设置为 relaxed_order 时,数据库标志会解决召回率不足的问题。当查询的观测召回率低于目标召回率时,可能会出现召回率不足的情况,在使用过滤条件时更有可能出现这种情况。此设置允许向量扫描继续搜索超出 num_leaves_to_search 限制,直到找到足够多的结果,从而帮助实现目标召回率。 查询运行时
(可选)
此数据库标志会为启用了 scann.satisfy_limit 的查询设置可访问的总叶节点的百分比上限。这是唯一可用的上限 GUC,适用于自动和手动搜索模式。它可以防止搜索超出范围,这可能会显著降低性能。当 scann.satisfy_limit 处于开启状态时,此设置适用。
您可以将此参数设置为 0100 之间的任何值。默认值为 15%。此默认值基于以下理由:如果搜索需要检查超过 15% 的叶节点,则过滤条件可能足够具有选择性,以至于近似最近邻 (ANN) 搜索无法提供优势,因此预过滤 K 最近邻 (KNN) 搜索是更合适的选择。
查询运行时
(可选)

后续步骤