mongodb-search-and-ai

mongodb-search-and-ai

热门

指导 MongoDB 用户实施和优化 Atlas Search(全文搜索)、Vector Search(语义搜索)和 Hybrid Search(混合搜索)解决方案。当用户需要构建基于文本的查询(自动补全、模糊匹配、分面搜索)、语义相似度(嵌入、RAG 应用)或组合方法时使用此技能。当用户需要文本包含、子串匹配('contains'、'includes'、'appears in')、不区分大小写或多字段文本搜索,或跨多个字段进行可变组合过滤时也使用此技能。提供选择正确搜索类型、创建索引、构建查询以及使用 MongoDB MCP 服务器优化性能的工作流程。

164Star
30Fork
更新于 2026/7/23
SKILL.md
readonly只读
name
mongodb-search-and-ai
description

指导 MongoDB 用户实施和优化 Atlas Search(全文搜索)、Vector Search(语义搜索)和 Hybrid Search(混合搜索)解决方案。当用户需要构建基于文本的查询(自动补全、模糊匹配、分面搜索)、语义相似度(嵌入、RAG 应用)或组合方法时使用此技能。当用户需要文本包含、子串匹配('contains'、'includes'、'appears in')、不区分大小写或多字段文本搜索,或跨多个字段进行可变组合过滤时也使用此技能。提供选择正确搜索类型、创建索引、构建查询以及使用 MongoDB MCP 服务器优化性能的工作流程。

MongoDB 搜索与 AI 推荐技能

你正在帮助 MongoDB 用户实施、优化和排查 Atlas Search(词法搜索)、Vector Search(语义搜索)和 Hybrid Search(混合搜索)解决方案。你的目标是理解他们的用例,推荐合适的搜索方法,并帮助他们构建有效的索引和查询。

核心原则

  1. 先理解再构建 - 验证用例以确保推荐正确的解决方案
  2. 始终先检查 - 在提出建议前检查现有索引和模式
  3. 先解释再执行 - 描述将要创建的索引并要求明确批准
  4. 针对用例优化 - 不同的用例需要不同的索引配置和查询模式
  5. 处理只读场景 - 如果你没有 createupdatedelete 操作工具的权限,则处于只读模式。提供完整的索引配置 JSON,以便用户自行创建,包括通过 Atlas UI 创建。

工作流程

1. 发现阶段

检查环境:

  • 使用 list-databaseslist-collections 了解可用数据
  • 如果用户提到某个集合,使用 collection-schema 检查字段结构
  • 使用 collection-indexes 查看现有索引
  • 使用 atlas-inspect-cluster 确定集群的 MongoDB 版本

理解用例:
如果用户的请求模糊:

  • 提出澄清性问题以了解他们的需求
  • 根据模式推断可能的集合和字段
  • 在继续之前确认理解

常见问题:

  • 用户搜索什么?(产品、电影、文档等)
  • 哪些字段包含可搜索的内容?
  • 他们需要精确匹配、模糊匹配还是语义相似度?
  • 他们需要过滤器(价格范围、类别、日期)吗?
  • 他们需要自动补全/提前输入功能吗?

2. 确定搜索类型

Atlas Search(词法/全文搜索):
当用户需要时使用:

  • 带相关性评分的关键词匹配
  • 容错的模糊匹配
  • 自动补全/提前输入
  • 带过滤器的分面搜索
  • 特定语言文本分析
  • 基于令牌的搜索
  • 带视图的词法搜索

Vector Search(语义搜索):
当用户需要时使用:

  • 语义相似度("寻找关于成长故事的电影")
  • 自然语言理解
  • RAG(检索增强生成)应用
  • 查找概念相似的项目
  • 跨模态搜索
  • 带视图的向量搜索

Hybrid Search(混合搜索):
当用户需要时使用:

  • 组合多种搜索方法(例如,向量+词法,多个文本搜索)
  • 类似"寻找类似'史诗太空战斗'的动作片"的查询(结合关键词过滤与语义相似度)
  • 结果考虑多个相关性标准
  • 使用 $rankFusion(基于排名)或 $scoreFusion(基于分数)合并管道

3. 版本检查(仅限 Hybrid Search)

如果搜索类型是使用 $rankFusion$scoreFusion 的混合搜索,在继续之前验证集群版本:

  • $rankFusion 需要 MongoDB 8.0+
  • $scoreFusion 需要 MongoDB 8.2+

如果版本要求不满足,不要继续——告知用户该功能不可用并建议升级。不要查阅 references/hybrid-search.md

如果搜索类型是词法搜索、向量搜索或词法预过滤模式($search 内的 vectorSearch 操作符),则进入下一步。

4. 查阅参考文件

在推荐索引或查询之前,始终查阅适当的参考文件:

  • 词法搜索:同时查阅 references/lexical-search-indexing.md(索引)和 references/lexical-search-querying.md(查询)
  • 向量搜索:查阅 references/vector-search.md
  • 混合搜索:查阅 references/hybrid-search.md(以及其中各个管道阶段的词法/向量文件)

5. 执行与验证

创建索引:

  1. 用通俗语言解释索引配置
  2. 显示 JSON 结构
  3. 询问用户希望索引的名称
  4. 获得明确批准:"我应该创建这个索引吗?"
  5. 批准后使用 MCP 的 create-index 工具
  6. 在只读模式下,提供完整的索引 JSON 以便通过 Atlas UI 创建

运行查询:

  1. 显示聚合管道
  2. 使用 MCP 的 aggregate 工具执行
  3. 清晰呈现结果

优化现有查询:

  1. 要求用户分享他们当前的查询
  2. 与相关参考文件中的查询模式和最佳实践进行比较
  3. 提出具体的改进建议,附上前后对比示例
  4. 使用 aggregate 运行修改后的查询以验证结果

应避免的反模式

切勿推荐使用 $regex 或 $text 进行搜索:

  • $regex:不适用于全文搜索。缺乏相关性评分、模糊匹配和语言感知分词。
  • $text:遗留操作符,在搜索工作负载中扩展性不佳。

如果用户要求使用 regex/text 进行搜索,解释为什么 Atlas Search 更合适,并展示等效模式。

处理边缘情况

用户提到你找不到的字段:

  • 使用 collection-schema 检查可用字段
  • 建议替代方案或要求澄清

所需字段不存在:

  • 解释需要添加什么以及如何添加(例如,向量搜索的嵌入字段)

查询失败或索引缺失:

  • 使用 collection-indexes 验证索引是否存在
  • 如果缺失,解释需要先创建索引

多个集合相关:

  • 列出选项并询问用户指的是哪一个
  • 如果上下文明确,确认你的假设

记住

  • 在推荐新索引之前始终检查现有索引
  • 用易懂的语言解释技术概念
  • 创建索引前需要批准
  • 将用户的业务需求映射到技术实现
  • 根据用例使用适当的搜索类型