Docs 菜单
Docs 主页
/ /

运行向量搜索查询

MongoDB Vector Search查询采用 $vectorSearch聚合管道的形式,该管道使用 作为第一阶段。本页介绍了$vectorSearch 阶段的语法、选项和行为。

$vectorSearch

$vectorSearch 阶段采用包含以下字段的文档:

定义$vectorSearch 阶段时,可以使用exact 字段指定运行 ANN 搜索还是 ENN搜索。

$vectorSearch 必须是其所在的任何管道中的第一阶段。

$vectorSearch 不能用于视图定义和后续管道阶段:

  • $lookup 子管道 [1]

  • $facet 管道阶段

[1] 您可以将 $vectorSearch 的结果传递给此阶段。

要学习;了解有关这些MongoDB Vector Search字段类型的更多信息,请参阅如何为向量搜索的字段创建索引。

MongoDB Vector Search 为其返回的每个文档分配一个分数,该分数在 01 之间的固定范围内(其中 0 表示低相似度,1 表示高相似度)。

每个返回的文档都包含分数作为元数据。要返回每个文档的分数以及结果设立,请在聚合管道中使用 $project 阶段并将 score 配置为要项目的字段。在 score 字段中,指定值为 vectorSearchScore$meta 表达式。语法如下:

1db.<collection>.aggregate([
2 {
3 "$vectorSearch": {
4 <query-syntax>
5 }
6 },
7 {
8 "$project": {
9 "<field-to-include>": 1,
10 "<field-to-exclude>": 0,
11 "score": { "$meta": "vectorSearchScore" }
12 }
13 }
14])

注意

只有在$vectorSearch 管道阶段之后,才能将 vectorSearchScore用作score $meta 表达式。如果您在任何其他查询后使用 vectorSearchScore,则从MongoDB v8.2 开始,MongoDB会日志一条警告。

注意

对数据进行预筛选不会影响MongoDB Vector Search 使用 vectorSearchScore 进行$vectorSearch 查询返回的分数。

$vectorSearchfilter 选项匹配 BSON 布尔值、日期、objectId、数值、字符串和 UUID 值,包括这些类型的数组。

必须将要用于过滤数据的字段作为 vectorSearch 类型索引定义中的过滤 类型进行索引。过滤数据有助于缩小语义搜索的范围,并确保不会考虑将所有向量进行比较。

MongoDB Vector Search$vectorSearchfilter 支持以下MQL操作符的 选项:

类型
MQL 操作符

相等

范围

在集合中

Existence

逻辑

  • MongoDB Vector Search 支持 $eq 的简写形式。在简写形式中,您无需在查询中指定 $eq

    例如,考虑以下带有 $eq 的过滤器:

    "filter": { "_id": { "$eq": ObjectId("5a9427648b0beebeb69537a5") }

    这相当于以下过滤器,它使用 $eq 的简写形式:

    "filter": { "_id": ObjectId("5a9427648b0beebeb69537a5") }
  • 您可以使用 $and MQL 操作符在单个查询中指定过滤器数组。

    例如,考虑以下预过滤器,用于 genres 字段等于 Actionyear 字段值为 199920002001 的文档:

    "filter": {
    "$and": [
    { "genres": "Action" },
    { "year": { "$in": [ 1999, 2000, 2001 ] } }
    ]
    }
  • 对于模糊搜索、短语匹配、位置过滤器和其他分析文本等高级过滤器功能,请在 阶段使用 vectorSearch $search操作符。

在运行这些示例之前,请执行以下操作:

  • 将数据集添加到集群。

  • 为集合创建MongoDB Vector Search 搜索索引。有关说明,请参阅创建MongoDB 向量搜索 索引过程,并以所需语言复制基本或过滤器示例的配置。

注意

如果您使用 mongosh,将示例代码中的 queryVector 粘贴到您的终端可能需要一段时间,具体取决于您的设备。

后退

索引参考

获得技能徽章

免费掌握“向量搜索基础知识”!

了解详情

在此页面上