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) 搜索是更合适的选择。
查询运行时
(可选)

后续步骤