如需获取有关如何从头到尾实现向量搜索的分步教程,请参阅如何执行向量搜索指南。
调优参数
以下索引和查询参数用于在召回率和每秒查询次数 (QPS) 之间取得适当的平衡。
| 调优参数 | 说明 | 选项类型 |
|---|---|---|
mode |
将 ScaNN 索引定义为自动调优索引或手动调优
索引。可用选项如下:
如需了解详情,请参阅 创建 ScaNN 索引。 |
索引创建 (可选) |
max_num_levels |
K-means 聚类树的形心级别数量上限。如需获得有关设置此值的指导,请参阅对 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 和 搜索结果。如需了解详情,请参阅 自动维护索引。 |
索引创建 (可选) |
scann.pct_leaves_to_search |
自动管理向量索引 搜索的分区数量。如需了解详情,请参阅 搜索分区百分比。 | |
scann.num_leaves_to_search
|
要搜索的分区的绝对数量。这可让您在
查询召回率和 QPS 之间进行权衡。默认值为
值越高,查询召回率越高,但 QPS 越低。同样, 值越低,查询召回率越低,但 QPS 越高。 |
查询运行时 (可选) |
scann.pre_reordering_num_neighbors
|
指定在初始搜索确定一组候选项后,在重新排序阶段要考虑的候选近邻项的数量。将此参数设置为高于您希望查询返回的近邻项数量的值。值越高,召回率越高,但 QPS 越低。
默认值为 |
查询运行时 (可选) |
scann.num_search_threads |
用于多线程搜索的搜索程序线程数。这可以在延迟时间敏感型应用中使用多个线程进行 ScaNN ANN 搜索,从而帮助缩短单个查询的延迟时间。如果数据库已受限于 CPU,此设置不会缩短单个查询的延迟时间。默认值为 2。 |
查询运行时 (可选) |
|
设置为 relaxed_order 时,数据库标志会解决召回率不足的问题。当查询的观测召回率低于目标召回率时,可能会出现召回率不足的情况,在使用过滤条件时更有可能出现这种情况。此设置允许向量扫描继续搜索超出 num_leaves_to_search 限制,直到找到足够多的结果,从而帮助实现目标召回率。 |
查询运行时 (可选) |
|
此数据库标志会为启用了 scann.satisfy_limit 的查询设置可访问的总叶节点的百分比上限。这是唯一可用的上限 GUC,适用于自动和手动搜索模式。它可以防止搜索超出范围,这可能会显著降低性能。当 scann.satisfy_limit 处于开启状态时,此设置适用。您可以将此参数设置为 0 到 100 之间的任何值。默认值为 15%。此默认值基于以下理由:如果搜索需要检查超过 15% 的叶节点,则过滤条件可能足够具有选择性,以至于近似最近邻 (ANN) 搜索无法提供优势,因此预过滤 K 最近邻 (KNN) 搜索是更合适的选择。 |
查询运行时 (可选) |