对于 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搜索使用近似值来加快搜索速度,这可能会改变文档的分数。如果增加numCandidates ANN查询中的 值,则结果将与 ENN查询结果更加匹配。但是,这会消耗额外的计算资源,并可能降低查询速度。 结果中的第十个文档反映了准确性和速度之间的权衡。

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

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

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

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

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