MongoDB$rankFusion 聚合阶段支持输入管道内的$vectorSearch 。您可以使用$rankFusion $vectorSearch在同一管道中合并针对同一集合的多个 查询。$rankFusion 首先独立执行所有输入管道,然后对输入管道结果进行去重并将其组合成最终的排名结果设立。要对单个管道中的多个集合运行多个$vectorSearch 查询,请使用$unionWith 。
用例与优势
您可以使用 $rankFusion 管道运行以下类型的 $vectorSearch 查询:
针对同一字段运行多个
$vectorSearch查询相似术语。这使您能够对数据集进行全面搜索,以在同一查询中查找相似术语。
针对多个字段运行多个
$vectorSearch查询同一术语。这使您能够在数据集中搜索多个字段,以确定哪些字段为查询返回最佳结果。
针对来自不同嵌入模型的嵌入运行多个
$vectorSearch查询同一术语。这使您使用不同嵌入模型生成的嵌入向量进行搜索,以确定不同模型在语义解释上的差异。
关于教程
本教程演示如何对 sample_mflix 数据库中的集合运行不同的 $vectorSearch 查询。您可以使用 embedded_movies 集合中的向量嵌入来尝试示例查询,也可以使用自动嵌入为示例数据生成嵌入。
先决条件
在开始之前,请确保您的集群符合 先决条件中描述的要求。此外,您还必须安装以下内容:
创建MongoDB Vector Search 索引
在本节中,您将在 sample_mflix.embedded_movies 命名空间中创建 MongoDB 向量搜索索引。本节展示了可用于运行各种查询的索引定义。
运行MongoDB Vector Search 查询
重新排序结果
在本节中,您将使用 $rerank 阶段对查询结果进行重新排序。