本页面介绍了使用
Kubernetes 部署选项的 AlloyDB Omni
15.12.0 版。
选择其他部署选项。
ScaNN 索引参考
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
选择文档版本:
本页面提供了 ScaNN 索引的参考资料。
调节参数
以下索引参数和数据库标志可结合使用,以便在召回率和 QPS 之间取得适当的平衡。
调优参数 |
说明 |
选项类型 |
max_num_levels |
K-means 聚类树的形心级别数量上限。
- 二级树索引:默认情况下,对于二级树(1 个形心级别 + 底层叶级别)设置为
1 。 - 三层树索引:默认情况下,对于三级树(2 个形心级别 + 底层叶级别)设置为
2 。 - 如果向量行数超过 1 亿行,请将该值设置为
2 。 - 如果向量行数少于 1,000 万行,请将该值设为
1 。 - 如果向量行数介于 1,000 万行和 1 亿行之间,请设置为
1 或 2 ,以便针对索引构建时间进行优化(设置为 2)或针对搜索召回率进行优化(设置为 1)。
|
索引创建 (可选) |
num_leaves |
要应用于此索引的分区数量。创建索引时所应用的分区数量会影响索引性能。通过为一定数量的向量增加分区,您可以创建更精细的索引,从而提高召回率和查询性能。不过,这会以延长索引创建时间为代价。
由于三级树的构建速度比二级树更快,因此您可以在创建三级树索引时增加 num_leaves_value ,以实现更好的性能。
- 二级索引:将此值设置为
1 到 1048576 之间的任意值。
对于需在快速索引构建和良好搜索性能之间实现平衡的索引,请在开始时使用 sqrt(ROWS) ,其中 ROWS 是向量行数。每个分区包含的向量数量通过
ROWS/sqrt(ROWS) = sqrt(ROWS) 进行计算。
由于可以对向量行数少于 1,000 万的数据集创建二级树索引,因此每个分区会包含少于 (sqrt(10M) ) 个向量(即 3200 个向量)。为获得最佳向量搜索质量,建议尽可能减少每个分区中的向量数量。建议的分区大小约为每个分区 100 个向量,因此请将 num_leaves 设置为 ROWS/100 。如果您有 1,000 万个向量,则应将 num_leaves 设置为 100,000。 - 三级索引:将此值设置为
1 到 1048576 之间的任意值。
如果您不确定要选择的确切值,请在开始时使用 power(ROWS, 2/3) ,其中 ROWS 是向量行数。每个分区包含的向量数量通过
ROWS/power(ROWS, 2/3) = power(ROWS, 1/3) 进行计算。
由于可以对向量行数超过 1 亿的数据集创建三级树索引,因此每个分区会包含超过 (power(100M, 1/3) ) 个向量(即 465 个向量)。为获得最佳向量搜索质量,建议尽可能减少每个分区中的向量数量。建议的分区大小约为每个分区 100 个向量,因此请将 num_leaves 设置为 ROWS/100 。如果您有 1 亿个向量,则应将 num_leaves 设置为 100 万。
|
索引创建 (必需) |
quantizer |
您要用于 K-means 树的量化器的类型。默认值设置为 SQ8 ,这可在召回率损失最小(通常低于 1-2%)的情况下提供更好的查询性能。
如果需要 99% 或更高的召回率,请将其设置为 FLAT 。 |
索引创建 (可选) |
scann.enable_inline_filtering |
支持内嵌过滤,可直接在向量相似性搜索操作中查询数据并应用过滤条件。这些向量相似度查询会使用同一数据库表中的过滤条件,并在计算最近邻项识别距离时完成过滤条件评估。此选项默认处于停用状态。
如需启用内嵌过滤,请将此参数设置为 true 。如果您发现性能下降,请将其设置为 false 。
此选项为预览版。 |
查询运行时 (可选) |
scann.enable_pca |
启用主成分分析 (PCA),这是一种降维技术,用于尽可能自动缩减嵌入的大小。此选项默认处于启用状态。
如果您发现召回率下降,请将其设置为 false 。 |
索引创建 (可选) |
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 。 |
查询运行时 (可选) |
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-09-03。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-09-03。"],[],[],null,[]]