对于 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 ANNENN 查询。

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

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

在根据 ENN 参考标准对结果进行定量评估后,我们建议以相同的方式测试一设立100 查询,并计算“jaccard 相似度”结果集之间。 Jaccard 相似度可以通过将两个集合之间的交集(即重叠项目)除以设立的总大小来计算。这可以了解 ANN 查询的召回性能,包括针对量化向量执行的召回性能。

如果您发现 ENN ANN查询结果之间存在较大差异,我们建议您调整 numCandidates 值,以便在应用应用程序的准确性和速度之间达到理想的平衡。

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

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

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