调节参数
以下索引参数和数据库标志可结合使用,以便在召回率和 QPS 之间取得适当的平衡。
调优参数 | 说明 | 选项类型 |
---|---|---|
max_num_levels |
K-means 聚类树的形心级别数量上限。
|
索引创建 (可选) |
num_leaves |
要应用于此索引的分区数量。创建索引时所应用的分区数量会影响索引性能。通过为一定数量的向量增加分区,您可以创建更精细的索引,从而提高召回率和查询性能。不过,这会以延长索引创建时间为代价。 由于三级树的构建速度比二级树更快,因此您可以在创建三级树索引时增加 num_leaves_value ,以实现更好的性能。
|
索引创建 (必需) |
quantizer |
您要用于 K-means 树的量化器的类型。默认值设置为 SQ8 ,这可在召回率损失最小(通常低于 1-2%)的情况下提供更好的查询性能。如果需要 99% 或更高的召回率,请将其设置为 FLAT 。 |
索引创建 (可选) |
scann.enable_pca |
启用主成分分析 (PCA),这是一种降维技术,用于尽可能自动缩减嵌入的大小。此选项默认处于启用状态。 如果您发现召回率下降,请将其设置为 false 。 |
索引创建 (可选) |
scann.pct_leaves_to_search (Preview) |
借助此数据库标志,您可以 [自动管理要搜索的叶或分区的数量](/alloydb/omni/kubernetes/16.3.0/docs/ai/maintain-vector-indexes#manage-leave-to-search-split-partitions)。将此值设置为当前分区数量。例如,如需搜索当前分区数量的 1%,请将此值设置为 1 。您可以将此参数设置为 0 到 100 之间的任何值。默认值为 0 ,这会停用此参数并使用 `scann.num_leaves_to_search` 来计算要搜索的叶数量。默认情况下,此参数处于已停用状态。 |
查询运行时 (可选) |
scann.num_leaves_to_search |
此数据库标志控制要搜索的叶或分区的绝对数量,可让您在召回率和 QPS 之间进行权衡。默认值为 num_leaves 中设置的值的 1%。值越高,召回率越高,但 QPS 越低。同样,值越低,召回率越低,但 QPS 越高。 |
查询运行时 (可选) |
scann.pre_reordering_num_neighbors |
在进行设置后,该数据库标志会指定在初始搜索确定一组候选项后,在重新排序阶段要考虑的候选近邻项的数量。请将此参数设置为一个大于您希望查询返回的近邻项数量的值。 值越高,召回率越高,但 QPS 越低。将此值设置为 0 可停用重新排序。如果在创建索引期间未启用 PCA,则默认值为 0 。否则,默认值为 50 x K ,其中 K 是查询中指定的 LIMIT。 |
查询运行时 (可选) |
scann.num_search_threads |
用于多线程搜索的搜索程序线程数。这可以在延迟时间敏感型应用中使用多个线程进行 ScaNN ANN 搜索,从而帮助缩短单个查询的延迟时间。如果数据库已受限于 CPU,此设置不会缩短单个查询的延迟时间。默认值为 2 。 |
查询运行时 (可选) |