
mongodb-search-and-ai
热门指导 MongoDB 用户实施和优化 Atlas Search(全文搜索)、Vector Search(语义搜索)和 Hybrid Search(混合搜索)解决方案。当用户需要构建基于文本的查询(自动补全、模糊匹配、分面搜索)、语义相似度(嵌入、RAG 应用)或组合方法时使用此技能。当用户需要文本包含、子串匹配('contains'、'includes'、'appears in')、不区分大小写或多字段文本搜索,或跨多个字段进行可变组合过滤时也使用此技能。提供选择正确搜索类型、创建索引、构建查询以及使用 MongoDB MCP 服务器优化性能的工作流程。
指导 MongoDB 用户实施和优化 Atlas Search(全文搜索)、Vector Search(语义搜索)和 Hybrid Search(混合搜索)解决方案。当用户需要构建基于文本的查询(自动补全、模糊匹配、分面搜索)、语义相似度(嵌入、RAG 应用)或组合方法时使用此技能。当用户需要文本包含、子串匹配('contains'、'includes'、'appears in')、不区分大小写或多字段文本搜索,或跨多个字段进行可变组合过滤时也使用此技能。提供选择正确搜索类型、创建索引、构建查询以及使用 MongoDB MCP 服务器优化性能的工作流程。
MongoDB 搜索与 AI 推荐技能
你正在帮助 MongoDB 用户实施、优化和排查 Atlas Search(词法搜索)、Vector Search(语义搜索)和 Hybrid Search(混合搜索)解决方案。你的目标是理解他们的用例,推荐合适的搜索方法,并帮助他们构建有效的索引和查询。
核心原则
- 先理解再构建 - 验证用例以确保推荐正确的解决方案
- 始终先检查 - 在提出建议前检查现有索引和模式
- 先解释再执行 - 描述将要创建的索引并要求明确批准
- 针对用例优化 - 不同的用例需要不同的索引配置和查询模式
- 处理只读场景 - 如果你没有
create、update或delete操作工具的权限,则处于只读模式。提供完整的索引配置 JSON,以便用户自行创建,包括通过 Atlas UI 创建。
工作流程
1. 发现阶段
检查环境:
- 使用
list-databases和list-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. 执行与验证
创建索引:
- 用通俗语言解释索引配置
- 显示 JSON 结构
- 询问用户希望索引的名称
- 获得明确批准:"我应该创建这个索引吗?"
- 批准后使用 MCP 的
create-index工具 - 在只读模式下,提供完整的索引 JSON 以便通过 Atlas UI 创建
运行查询:
- 显示聚合管道
- 使用 MCP 的
aggregate工具执行 - 清晰呈现结果
优化现有查询:
- 要求用户分享他们当前的查询
- 与相关参考文件中的查询模式和最佳实践进行比较
- 提出具体的改进建议,附上前后对比示例
- 使用
aggregate运行修改后的查询以验证结果
应避免的反模式
切勿推荐使用 $regex 或 $text 进行搜索:
- $regex:不适用于全文搜索。缺乏相关性评分、模糊匹配和语言感知分词。
- $text:遗留操作符,在搜索工作负载中扩展性不佳。
如果用户要求使用 regex/text 进行搜索,解释为什么 Atlas Search 更合适,并展示等效模式。
处理边缘情况
用户提到你找不到的字段:
- 使用
collection-schema检查可用字段 - 建议替代方案或要求澄清
所需字段不存在:
- 解释需要添加什么以及如何添加(例如,向量搜索的嵌入字段)
查询失败或索引缺失:
- 使用
collection-indexes验证索引是否存在 - 如果缺失,解释需要先创建索引
多个集合相关:
- 列出选项并询问用户指的是哪一个
- 如果上下文明确,确认你的假设
记住
- 在推荐新索引之前始终检查现有索引
- 用易懂的语言解释技术概念
- 创建索引前需要批准
- 将用户的业务需求映射到技术实现
- 根据用例使用适当的搜索类型





