ScaNN 向量查询性能概览

选择文档版本:

本页面从概念上简要介绍了如何使用 AlloyDB AI 的可扩缩最近邻 (ScaNN) 索引提高向量查询性能。如需了解详情,请参阅创建索引和查询向量

ScaNN 索引使用基于树量化的索引编制,其中索引会学习搜索树以及量化(或哈希)函数。运行查询时,搜索树用于对搜索空间进行剪枝,而量化用于压缩索引大小。这种剪枝可以加快对查询向量与数据库向量之间的相似度(即距离)进行打分的速度。

如需在使用最近邻查询时实现较高的每秒查询次数速率 (QPS) 和较高的召回率,您必须以最适合您的数据和查询的方式对 ScaNN 索引的树进行分区。

高维嵌入模型可以在维度大大降低的情况下仍然保留大量信息。例如,只需 20% 的嵌入维度即可保留 90% 的信息。为了帮助加快此类数据集的速度,AlloyDB AI ScaNN 索引会自动使用主成分分析 (PCA) 对已编制索引的向量执行降维,从而进一步减少向量搜索的 CPU 和内存用量。如需了解详情,请参阅 scann.enable_pca

由于降维会导致索引中出现轻微的召回率损失,因此 AlloyDB AI ScaNN 索引会通过以下方式来补偿召回率损失:首先从索引中对经过 PCA 处理的数量较多的向量候选项进行排序。然后,ScaNN 会按原始向量对经过 PCA 处理的向量候选项进行重排序。如需了解详情,请参阅 scann.pre_reordering_num_neighbors

后续步骤