您可以使用相同的查询条件,根据量化向量评估ANN搜索结果与ENN搜索结果的匹配程度,从而衡量MongoDB Vector Search查询的准确性。也就是说,您可以将 ANN 搜索结果与 ENN 搜索结果进行比较,并衡量 ANN 搜索结果在 ENN 搜索结果中包含最近邻的频率。
用例
如果您有以下任一情况,则可能需要衡量结果的准确性:
量化向量
大量向量
低维向量
先决条件
要试用此页面上的示例,您需要满足以下条件:
一个包含示例数据集(可选)的集群。
步骤
要评估$vectorSearch 查询结果的准确性,您必须执行以下操作:
在向量字段以及要作为数据预筛选依据的任何其他字段上创建MongoDB Vector Search索引。
我们建议使用量化向量来改进向量的存储和查询速度。 如果您没有量化向量,则可以在为
vector类型字段索引时启用自动量化。构建并运行ENN查询,然后运行 ANN查询。
将 ANN查询结果与 ENN查询结果进行比较,以评估结果的异同。
本部分演示如何对 sample_mflix.embedded_movies集合中的数据执行前面的 3 步骤。 如果您不希望使用示例数据集,则可以对自己的数据执行这些过程。
创建MongoDB Vector Search 索引
本部分演示如何创建MongoDB Vector Search索引以运行MongoDB Vector Search ANN 和 ENN 查询。
运行查询
比较结果
示例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 聚合管道阶段。