选择向量索引

选择文档版本:

您必须为向量搜索选择一种索引类型,以在查询延迟时间和结果准确率之间取得平衡。有效的索引编制会直接影响查询速度和检索通过召回率衡量的真正相关匹配项的能力。

关键词

在决定索引策略之前,您必须了解以下术语:

  • 召回率:定义搜索如何有效地检索给定查询的所有相关项。例如,如果您有 100 张图片,其中 10 张是猫图片(即真正匹配),而您搜索“猫”后返回了 6 张猫图片,则召回率为 6 张/10 张,即 60%。在针对向量索引的近似最近邻 (ANN) 搜索中,召回率是通过将使用 ANN 索引获得的结果与通过暴力搜索获得的真正匹配结果进行比较来衡量的。
  • 查询延迟时间:定义搜索结果的生成速度。例如,延迟时间是根据您提交查询后搜索返回 6 张猫图片所用时间来计算的。

搜索策略

您必须选择以下其中一个搜索策略。请考虑一个包含客户数据的示例表,其中包含交易记录、偏好设置和受众特征等详细信息,以了解两种算法之间的区别:

  • K 最近邻 (KNN) 是一种算法,用于查找相对于给定查询数据点的 k 个最近邻数据点。对于前面的示例,为了运行查询,以根据类似客户的偏好向新客户推荐产品,KNN 会使用距离指标计算新客户数据点与表中每个客户的数据点之间的距离。KNN 会根据距离确定符合条件的 k 位客户,然后向新客户推荐这些客户 (k) 喜欢的产品。

    对于较小的数据集,建议使用包含距离指标(例如欧几里得距离或余弦相似度)的 KNN 查询。如果您的应用场景需要 100% 的准确率,且您可以容忍更长的查询延迟时间,那么我们建议您使用 KNN。如需详细了解如何执行 KNN 搜索,请参阅执行相似度搜索

  • 基于近似最近邻 (ANN) 算法的索引有助于加快查询速度,但可能会影响查询准确率或召回率。在前面的示例中,为了运行查询,以根据类似客户的偏好向新客户推荐商品,ANN 会根据相似度将现有客户数据点划分为小组。添加新的客户数据点时,ANN 会先从多个群组中确定该数据点所属的群组,然后仅使用该群组中的距离指标计算距离。此过滤可减少显示推荐所需的计算次数。

    Google 建议您在拥有大型数据集时创建一个实施 ANN 索引的向量索引,因为它可更快地发现相似度,且资源占用较少,但会降低准确率。如需详细了解如何使用 ANN 索引进行相似度搜索,请参阅使用 ScaNN 创建索引和查询向量。如需使用向量索引实现 KNN 准确率,请将搜索参数设置为等于分区数量。此策略有助于在平衡查询延迟时间的情况下实现 KNN 准确率。

使用以下流程图作为指导,根据您的数据集和要求决定哪种索引类型是最佳的。

选择索引策略

后续步骤