ScaNN 向量查询性能概览

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

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

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

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

后续步骤