对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

如何衡量查询结果的准确性

您可以使用相同的查询条件,根据量化向量评估ANN搜索结果与ENN搜索结果的匹配程度,从而衡量MongoDB Vector Search查询的准确性。也就是说,您可以将 ANN 搜索结果与 ENN 搜索结果进行比较,并衡量 ANN 搜索结果在 ENN 搜索结果中包含最近邻的频率。

如果您有以下任一情况,则可能需要衡量结果的准确性:

  • 量化向量

  • 大量向量

  • 低维向量

要试用此页面上的示例,您需要满足以下条件:

  • 一个包含示例数据集(可选)的集群。

要评估$vectorSearch 查询结果的准确性,您必须执行以下操作:

  1. 在向量字段以及要作为数据预筛选依据的任何其他字段上创建MongoDB Vector Search索引。

    我们建议使用量化向量来改进向量的存储和查询速度。 如果您没有量化向量,则可以在为 vector 类型字段索引时启用自动量化。

  2. 构建并运行ENN查询,然后运行 ANN查询。

  3. 将 ANN查询结果与 ENN查询结果进行比较,以评估结果的异同。

本部分演示如何对 sample_mflix.embedded_movies集合中的数据执行前面的 3 步骤。 如果您不希望使用示例数据集,则可以对自己的数据执行这些过程。

本部分演示如何创建MongoDB Vector Search索引以运行MongoDB Vector Search ANN 和 ENN 查询。

示例ENN 和 ANN查询结果中的前 9 个文档相同,并且具有相同的分数。这表明查询的热门结果具有高度相似性。 但是,ENN 和 ANN查询结果中的第 10 个文档不同,这反映了精确最近邻搜索和近似最近邻搜索中的细微差别。

精确最近邻 (ENN) 搜索检查所有可能的候选对象,并基于相似度分数返回与查询最接近的匹配项。近似最近邻 (ANN) 搜索使用近似值加快搜索速度,这可能会改变文档的分数。如果增加 近似最近邻 (ANN) 查询中的 numCandidates 值,结果将与 精确最近邻 (ENN) 查询结果更加匹配。但是,这会消耗额外的计算资源,还可能会降低查询速度。结果中的第十个文档反映了准确性与速度之间的权衡。

在对结果对比 精确最近邻 (ENN) 基准真值进行定量评估后,我们建议以相同方式测试一组 100 查询,并计算结果集之间的 "jaccard similarity"。杰卡德相似度可以通过将两个集合的交集(即重叠项)除以总集合大小来计算得出。这可以了解 近似最近邻 (ANN) 查询的回忆性能,包括针对量化向量执行的查询。

如果您发现精确最近邻 (ENN) 和近似最近邻 (ANN) 查询结果之间存在较大差异,我们建议调整numCandidates 值,以在准确性和速度之间为您的应用程序实现理想平衡。

我们建议您使用判断列表,以结构化的形式列出查询及其理想结果,用于近似最近邻 (ANN) 查询或精确最近邻 (ENN) 真实值。您可以将 ENN 查询结果作为基准判断列表,然后将 ANN 查询结果与该判断列表进行对比,以评估召回率、重叠度和性能。判断列表提供了一种方法来评估 ANN 查询是否达到与 ENN 基线相比的预期准确率或召回率阈值。使用 LLM 生成示例查询。

为提高 $vectorSearch 结果的准确性,您可以根据与查询的语义相关性对其进行重新排序。重新排序会对结果进行重新排序,以优先显示最相关的文档。您可以在$rerank 阶段后应用$vectorSearch 阶段,以使用重新排序模型对结果进行重新排序。

要了解更多信息,请参阅$rerank 聚合管道阶段。