ScaNN 向量查询性能概览

本页面从概念上简要介绍了如何使用 ScaNN 索引提高向量查询性能。

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

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

当前一代高维嵌入模型的一个共同特征是,它们可以在维度大大降低的情况下仍然保留大量信息,例如只需 20% 的嵌入维度即可保留 90% 的信息。为了帮助加快此类数据集的速度,AlloyDB ScaNN 会使用主成分分析(请参阅下文中的 scann.enable_pca)对已编制索引的向量自动执行降维,从而进一步减少向量搜索的 CPU 和内存用量。由于降维仍然会导致索引中出现轻微的召回率损失,因此 AlloyDB ScaNN 通过以下方式进行补偿:首先从索引中对经过 PCA 处理的数量较多的向量候选项进行初始排序,然后按原始向量对它们进行重排序(请参阅 scann.pre_reordering_num_neighbors)。

后续步骤