对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

MongoDB Search 和 MongoDB 向量搜索 变更日志

注意

适用于 Atlas 托管的 MongoDB Search 和 MongoDB 向量搜索

此变更日志仅适用于 Atlas 中托管的 MongoDB Search 和 MongoDB 向量搜索。要查找自管理的 Community 和 Enterprise 版本上的 MongoDB Search 和 MongoDB 向量搜索的发布说明,请参阅 自管理的 MongoDB Search 和向量搜索发布说明。

  • 支持 排序索引,可在索引时间对文档进行升序或降序预排序,而不是在查询时间进行排序。

  • 添加englishMinimalStemming令牌过滤器。

  • 通过 $rerank 聚合阶段添加原生重新排序,以使用 Voyage AI 的 重新排序模型 对输入文档进行重新排序。

  • 使 MongoDB 向量搜索索引中的嵌套嵌入支持全面可用。

  • 将数字和日期分面(Facet)的最大数据块数增加到 10000。
  • 将 string 分面(Facet)的最大桶数增加到 10000。
  • 增加对嵌入数组和包含向量的嵌入式文档数组的 $vectorSearch 的预览支持。
  • 为 MongoDB 向量搜索索引引入 storedSource 选项,以将源文档字段与索引一起存储,并使用 returnStoredSource 在 $vectorSearch 结果中返回这些字段。
  • 通过 indexingMethod 选项的 flat 值,增加了对 MongoDB 向量搜索中 平面索引的预览支持。平面索引可为多租户工作负载提供增强支持,从而提高性能、回忆和资源效率。

  • 如果将 concurrent 设置为 true,则可以在索引分区中同时执行查询。

  • 通过添加vectorSearch操作符和向量索引类型,添加对向量搜索的词法预过滤器的预览支持。这样,您就可以在执行向量相似度搜索之前,通过分析的文本功能(例如模糊搜索、短语匹配、位置筛选、通配符模式匹配等)来过滤文档。
  • 对使用 multi 进行索引的 string 字段进行去重的存储费用。

  • 修复了针对高关联基数字段时的 token字段类型问题。

  • 支持 预过滤器中的$exists $vectorSearch操作符。

  • 支持使用 returnScope将数组中的对象作为单个文档进行查询、过滤和检索。

    • 添加 hasRoot 操作符,用于在使用 returnScope 时查询根文档字段。

    • 添加 hasAncestor 操作符,用于在使用 returnScope 时查询更高级别或同级别的字段。

    • 支持将嵌套字段存储在对象数组中,使用storedSource进行检索,并使用returnStoredSource进行任何操作符的查询。

  • 添加对使用 typeSets 配置动态索引的支持。要了解更多信息,请参阅 配置 typeSet。

  • 从MongoDB 8.0.14 开始,returnStoredSource 和 scoreDetails 选项必须设立为 true 或 false。为这些选项指定 null 的查询将失败。

  • 新增支持在索引 string 字段时指定 stableTfl 或 boolean 相似算法,如 MongoDB Search string 和 autocomplete 类型。这些算法在查询时应用,用于使用 text、phrase、queryString 和 autocomplete 操作符计算 MongoDB Search 分数。要了解更多信息,请参阅 分数详情。

  • 支持在 MongoDB 向量搜索 预过滤器中将 $ne 操作符设置为 null。

  • 通过始终从基本string字段检索突出显示来改进突出显示加载。

  • 跳过下载超过配置期限阈值的快照。

  • 更新 blobstore 凭证处理以使用新的 refreshDate字段,而不是已弃用的 expirationDate字段。

  • 添加所需的内存使用量指标。

  • 添加了对自定义分析器的新词元过滤器类型 keywordRepeat 和 removeDuplicates 的支持。

  • 删除对 snowballStemming 词元过滤器类型中已弃用的 kp 和 lovins 词干分析器的支持。

  • 更改 german 词干分析器对变音符号的处理方式,使德语字母 ä、ö 和 ü 分别扩展为 ae、oe 和 ue。

  • german2 词干分析器现已过时。

  • MongoDB v8.1 支持:

    • 使用 mongosh 和驱动程序方法在视图上创建搜索索引。

    • 对标准视图执行 $search、$searchMeta 和 $vectorSearch 查询。

  • 将向量维度限制增加到8192 。
  • 支持标量量化功能,可将向量搜索的主内存要求降低约 75%。

  • 支持二进制量化功能,可将向量搜索的主内存要求降低约 97%。

  • 支持使用新的int1 BinDatavector 子类型摄取 向量。

  • Supports ENN search using int8 and int1 subtypes.

  • 修复了磁盘已满时导致搜索节点崩溃的问题。
  • 支持短语查询中的同义词。

  • 为文本操作符添加对 matchCriteria 字段的支持。

  • 更改了同义词映射失败的索引的行为,令不使用受影响的同义词映射的查询能够成功运行。

  • 修复了在将 searchAfter 或 searchBefore 与搜索节点一起使用时导致一致性问题的错误。

  • 将达到索引对象限制的索引转换为可查询的 STALE 状态。

  • 支持对嵌入式文档中的词元类型进行索引。

  • 支持使用 mongosh 命令或驱动程序辅助工具方法在 M0、M2 或 M5 Atlas 集群上 创建、检索、编辑 或 删除 MongoDB Search 索引。

  • 支持使用新的 BSON 向量类型提取 float32 和 int8 向量。

  • 支持使用带有所有操作符的数组进行预过滤。

  • 支持在MongoDB Vector Search 预筛选器中将 ObjectId 与范围操作符结合使用。

  • 支持在MongoDB Vector Search 预筛选器中将 UUID 值与所有操作符一起使用。

  • 支持在MongoDB Vector Search 预过滤器中使用 $not 操作符。

对于 MongoDB Search:

注意

Atlas 以滚动方式重新索引 Atlas 集群上所有现有的 MongoDB Search 索引。Atlas UI 将显示指示重新索引时间的警报。不使用独立搜索节点的集群可能会注意到,在重新索引过程中,磁盘和 CPU 利用率会临时增加。对于使用独立搜索节点的集群,Atlas 将临时免费部署额外节点以重新建立索引,因此,在完成新索引构建后,系统不会因为切换索引而停机。

  • 在 Search Tester 中引入 MongoDB Search Query Templates,使用预先编写的 $search 查询(包括 must 和 should、autocomplete 等条件子句)使查询变得更加容易,以实现输入时搜索体验、分面(Facet)等。要了解更多信息,请参阅定义您的查询。

  • Introduces changes to the MongoDB Search API endpoints. To learn more, see API Changelog for May 31 2024 Release.

  • 截断较大的 stringFacet 值。

  • 支持通过索引为 filter 类型的日期字段预过滤数据。

  • 修复了以下问题:使用 returnStoredSource 时, MongoDB Search 未在结果中包含某些文档的 _id字段。
  • 修复了以下问题: MongoDB Search 在某些 mongod 配置更改后触发虚假初始同步。

  • 在缺少定义版本的情况下重建索引。

  • 修复了当分数并列时MongoDB Search 没有为 searchAfter 或 searchBefore 查询生成结果的问题。

  • 增加了按空值和 UUID 值查询和排序的能力。

  • 更新 MongoDB Vector Search 查询,使其默认在 搜索节点上并行运行。
  • 修复了以下问题:运行 MongoDB v7.2.0 的分片 Atlas 集群会为包含 facet 收集器的 $searchMeta 阶段返回错误。
  • 支持在参考点之后或之前按顺序检索 $search 结果,您可以使用 $meta 关键字 searchSequenceToken 生成的令牌来指定参考点。要了解更多信息,请参阅 对结果进行分页。
  • Supports using equals, in, and range operators to perform exact matching and filtering on BSON strings indexed as the MongoDB Search token type.

注意

我们进程通过专用的MongoDB Vector Search索引定义推出新的MongoDB Vector Search 体验。它将在接下来的几天内或在下一个维护窗口之后在您的项目中可用。

引入 $vectorSearch,对运行 MongoDB 7.0.2 的 Atlas 集群中的数据执行语义搜索。

注意

MongoDB 向量搜索可作为预览功能使用,用于评估和收集用户反馈。不建议将其用于生产部署,因为在预览期间,该功能和相应文档可能会随时更改。

要了解更多信息,请参阅 MongoDB Vector Search 概述。

  • 支持在 Atlas 用户界面可视化编辑器中配置自定义分析器。

  • 支持在 Atlas 用户界面可视化编辑器中配置令牌类型。

  • 执行系统升级。您可能会注意到一些索引和查询性能变化。
  • 对于在embeddedDocument 操作符中指定的查询谓词,如果字段根据 文档 类型的父字段进行索引,则支持字段的 突出显示 。

  • 在某些使用分片的场景下,初始同步会自动启动。

  • 修复了导致 token 字段映射更改被忽略的错误。

  • 添加 排序 选项,该选项支持对您在 MongoDB Search 索引中定义的字段进行升序或降序排序。

    注意

    MongoDB Search 排序选项仅在运行 MongoDB v6.0+的分片集群中可用。

  • 将 knnBeta 操作符限制为顶级操作符。

  • 介绍使用 queryString 操作符对 string 字段执行文本、通配符、正则表达式、模糊和范围搜索的功能。

  • 提高了$search与$limit结合使用的性能。

  • 对于在 M10 或更高版本的集群上运行MongoDB 6.0.8 或更高版本的Atlas集群,引入了从 mongosh 和 NodeJS 驱动程序创建和管理MongoDB搜索索引的能力。

    注意

    此发布不允许使用 mongosh 命令或驱动程序辅助工具方法在 M0、M2 或 M5 Atlas 集群上 创建、检索、编辑 或 删除 MongoDB Search 索引。

  • 提供向量搜索预览,以使用 MongoDB Search 存储、索引和查询向量。
  • 添加了对从 M10 或更大集群的云备份快照恢复MongoDB Search 索引的支持。
  • 支持跟踪查询中的搜索术语,并在 M10 或更高版本的 Atlas 集群的 Atlas 用户界面中查看所跟踪搜索术语的查询分析。
  • 添加 in 操作符,该操作符可搜索值数组,并返回字段值等于指定数组中任何值的文档。

  • 将分面(Facet)收集器的 operator 选项更改为可选。facet 您在不使用 操作符 的情况下指定的查询会遍历所有已建立索引的文档。

  • 在Atlas用户界面的MongoDB Search 可视化编辑器配置模式中支持 embeddedDocuments 类型。
  • 升级到MongoDB Search,其中包括:

    • 查询改进

      • 支持在正则表达式查询中使用 \w、\W、\D、\s 和 \S 正则表达式。但是, MongoDB Search 在正则表达式查询中不会返回 s、S、w、W、d 和 D 以外的字符的结果。我们建议根据正则表达式标准使用反斜杠。

      • Updates to email tokenizer top-level domains from the IANA Root Zone Database.

    • 突出显示改进

      • 段落选择器会截断长片段以显示较短的片段,从而修复了当段落较长时查询失败的原因。
    • 某些查询的 explain 输出可能会有所不同。如果使用 explain,请验证更改不会破坏环境中的逻辑。

    除了前面的更改列表之外,您可能会注意到一些索引和查询性能变化。

  • 引入 moreLikeThis 操作符,用于检索与一个或多个输入文档相似的文档。

  • $elemMatch为类似 的搜索引入 嵌入式文档。
  • 优化内部批处理,在查询匹配大量文档(如 5,000 个或更多)时提高存储源查询的性能。
  • 引入新的Project Search Index Editor角色,以使用Atlas用户界面或API创建、查看、编辑和删除MongoDB搜索索引。

  • 如果新索引定义无效,则使用上一个有效索引处理查询。

  • 删除专用集群上 BooleanQuery 的 Lucene 默认子句限制 1024。

    注意

    我们将扩展对数字和日期字段分面(Facet)的支持,使用 number 和 date 类型,从 2022 年 8 月到 9 月。您必须在所有索引定义中迁移到 numberFacet 和 dateFacet 类型,以分别对数字和日期字段进行分面(Facet)。

  • 添加numberFacet和dateFacet数据类型,用于分别对数字和日期字段运行分面(Facet)查询。

    注意

    我们将扩展对数字和日期字段分面(Facet)的支持,使用 number 和 date 类型,从 2022 年 8 月到 9 月。您必须在所有索引定义中迁移到 numberFacet 和 dateFacet 类型,以分别对数字和日期字段进行分面(Facet)。

  • 添加 反向词元过滤器,用于反转每个 string 词元。

此版本中的自动完成改进:

  • 在 自动完成 的索引定义中添加对 分析器 的支持。

  • 增强 autocomplete 操作符中的精确匹配。

  • 添加 rightEdgeGram 分词策略,从单词的右侧(而不是左侧)开始创建类似 edgeGram 的词元。

此版本包含的错误修复:

  • 修复objectId突出显示错误。
  • 允许索引进入恢复状态并在遇到某些复制错误后保持可用。
  • Adds support for synonyms, which can be defined in a source collection and mapped to search indexes via the Atlas API.
  • 添加停用词词元过滤器,用于删除与指定停用词匹配的词元。
  • 支持 $search 查询的 解释。
  • 修复了与 ObjectID 相等操作符结合使用时,突出显示会引发错误的问题。
  • 提高初始同步索引的性能。
  • 为 突出显示添加 maxNumPassages 和 maxCharsToExamine。
  • 提高稳定状态索引的性能。
  • 删除重建修改的索引定义时的停机时间要求。
  • 增加了对通配符路径的支持。
  • 添加一个新的 索引选项 以排除norms 字段,允许搜索索引在对搜索结果进行评分时忽略字段长度。

  • 将 tokenOrder 选项 添加到 autocomplete 操作符中,支持搜索查询中的无序术语。

  • 改进了错误消息以利于查询调试,包括消除堆栈跟踪和其他特定于 Java 的消息。

注意

要查看4 月 2020之前发布的MongoDB Search发布说明,请参阅Atlas Changelog。