如需查看有关如何从头到尾实现向量搜索的分步教程,请参阅有关如何执行向量搜索的指南。
调参参数
以下索引和查询参数可用于在召回率和每秒查询次数 (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) 搜索是更合适的选择。 |
查询运行时 (可选) |