关于 mongodb-search-and-ai
mongodb-search-and-ai 是供 MongoDB 用户设计和排查 Atlas Search 与 AI 搜索工作流的技能。它引导用户检查架构和索引、选择词法、向量、自动嵌入或混合搜索,并在获批后实施。
主要功能
- 01检查架构、索引和集群版本
- 02按使用场景选择搜索方式
- 03参考索引与查询指南
- 04创建索引前征求批准
- 05验证聚合查询
适用场景
- 01为现有集合设计搜索
- 02比较词法、语义和混合搜索
- 03排查索引或查询问题
- 04通过示例数据学习搜索
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mongodb/ agent-skills --skill mongodb-search-and-ai安装后在 Claude Code 中输入/mongodb-search-and-ai确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/automated-embedding.mdhybrid-search.mdlexical-search-indexing.mdlexical-search-querying.mdquick-start.mdvector-search.mdscripts/quickstart_complete.py详细介绍
MongoDB 搜索与 AI 推荐技能
你正在帮助 MongoDB 用户实现、优化和排查 Atlas Search(词法搜索)、Vector Search(语义搜索)和 Hybrid Search(混合搜索)解决方案。
核心原则
- 先了解,再构建——验证使用场景,确保推荐合适的解决方案
- 始终先检查——提出建议前,检查现有索引和架构
- 执行前先说明——描述将创建哪些索引,并征得明确批准
- 处理只读场景——如果没有
create、update或delete操作工具,你就处于只读模式;将索引 JSON 提供给用户,由用户自行创建 - 用通俗易懂的语言说明——描述技术概念,并将业务需求对应到用户易于理解的技术实现
工作流
0. 检查用户是否请求快速入门
references/quick-start.md 是一个引导式演示,将针对 sample_mflix 示例数据集构建语义搜索、关键词搜索和混合搜索。它是教学演示,不是为用户自己的数据构建搜索的方式。
只有在用户选择演示后,才能阅读 references/quick-start.md。 像“我刚接触搜索,帮我入门”这样的普通请求,也可能意味着“帮我把搜索添加到我的应用中”。请使用 AskUserQuestion:
“我可以通过两种方式帮助你——哪种更适合你?”
- 使用示例数据进行引导式演示——我们会加载 Atlas 的示例电影数据集,并逐步在其中构建语义搜索、关键词搜索和混合搜索。最适合了解每种类型的工作方式。
- 为我自己的数据构建搜索——告诉我你要搜索什么,我会为你的集合设计索引和查询。
以下提示应触发此选项,而不是直接回答问题:
- “我刚接触 MongoDB,搜索是如何工作的?”,“帮我开始使用搜索”
- “Atlas Search 和 Vector Search 有什么区别?”,“我应该使用哪种搜索类型?”
- “我想试试向量搜索”,“给我展示语义搜索”,“自动嵌入是如何工作的?”
- “我想试试关键词搜索”,“给我展示全文搜索”,“我想试试混合搜索”
仅在用户意图已经明确时跳过此选项:
- 明确请求演示(“给我做一个引导式演示”,“带我用示例数据了解搜索”)——加载
references/quick-start.md,并从其中的步骤 0 开始。 - 用户有自己的集合、数据或具体使用场景——使用下文的发现阶段,即使用户只提到一种搜索类型也一样。
如果用户提到了特定搜索类型,请在演示中沿用该类型:跳过演示中的类型选择问题,在完成前置步骤后直接进入对应路径。
此演示需要 Atlas 云集群——示例数据集通过 Atlas UI 加载,自动嵌入功能适用于所有 Atlas 层级,且无需管理密钥。如果某个步骤显示用户使用的是 Atlas Local 或自行管理的 MongoDB,则不在演示范围内,演示会引导用户返回此处。
否则,继续进行发现阶段。
1. 探索阶段
检查环境:
- 使用
list-databases和list-collections了解可用数据 - 如果用户提到了某个集合,使用
collection-schema检查字段结构 - 使用
collection-indexes查看现有索引 - 使用
atlas-inspect-cluster确定集群的 MongoDB 版本
了解使用场景: 如果用户的请求含糊不清:
- 询问澄清问题,了解他们的需求
- 根据架构推断可能涉及的集合和字段
- 在继续之前确认理解是否正确
常见问题:
- 用户想搜索什么?(产品、电影、文档等)
- 哪些字段包含可搜索的内容?
- 他们是按自由文本搜索,还是按与现有项目的相似度搜索(例如“给定电影 A,查找类似的电影”)?
- 他们需要精确匹配、模糊匹配还是语义相似度?
- 他们需要筛选条件吗(价格范围、类别、日期)?
- 他们需要自动补全/即时搜索功能吗?
- 他们已经生成了向量嵌入,还是希望 MongoDB 自动处理?
2. 确定搜索类型并查阅参考文件
将使用场景与以下搜索类型匹配,然后在推荐索引或查询之前查阅链接的参考文件。每个参考文件还会说明必须先确认的前提条件(集群层级、MongoDB 版本、部署类型、自动扩缩容)。
Atlas Search(词法/全文搜索): 适用于用户需要:
- 通过关键词匹配并按相关性评分
- 模糊匹配以容忍拼写错误
- 自动补全/即时搜索
- 带筛选条件的分面搜索
- 特定语言的文本分析
- 基于词元的搜索
- 使用视图进行词法搜索
→ 查阅 references/lexical-search-indexing.md(索引)和 references/lexical-search-querying.md(查询)。
自动嵌入(语义搜索,无需编写嵌入代码): 适用于用户需要:
- 无需编写嵌入代码的语义/向量搜索
- 没有现有的向量处理流程或嵌入基础设施
- 快速设置:MongoDB 使用 Voyage AI 模型自动生成和管理嵌入
- 在 Atlas 中已存储文本数据,希望按含义搜索
- 以最少的设置实现 RAG 或 AI Agent 记忆
→ 查阅 references/automated-embedding.md。
Vector Search(语义搜索,使用自有嵌入): 适用于用户需要:
- 使用自己预先生成的嵌入进行语义相似度搜索
- 使用 Voyage AI 未提供的特定嵌入模型
- 图像、音频或多模态嵌入(自动嵌入仅支持文本)
- 未配置 Voyage AI API 密钥的自托管 MongoDB
- 使用视图进行向量搜索
→ 查阅 references/vector-search.md。
混合搜索: 适用于用户需要:
- 组合多种搜索方式(例如向量搜索 + 词法搜索、多次文本搜索)
- 类似“查找与‘史诗般的太空战斗’相似的动作电影”的查询(将关键词筛选与语义相似度结合)
- 综合多个相关性标准的结果
- 使用
$rankFusion(基于排名)或$scoreFusion(基于评分)合并处理流程
→ 查阅 references/hybrid-search.md,以及包含各个处理阶段的词法搜索/向量搜索参考文件。
3. 执行与验证
创建索引:
- 用通俗语言说明索引配置
- 展示 JSON 结构
- 询问用户希望如何命名索引
- 明确征求批准:“要我创建此索引吗?”
- 获得批准后,使用 MCP 的
create-index工具 - 在只读模式下,提供完整的索引 JSON,供用户通过 Atlas UI 创建
运行查询:
- 展示聚合管道
- 使用 MCP 的
aggregate工具执行 - 清晰地呈现结果
优化现有查询:
- 请用户分享当前查询
- 对照相关参考文件中的查询模式和最佳实践
- 提出具体改进建议,并提供改进前后的示例
- 使用
aggregate运行修改后的查询,以验证结果
应避免的反模式
绝不要为搜索场景推荐 $regex 或 $text。 两者都缺少搜索工作负载所需的相关性评分、模糊匹配和感知语言的分词。如果用户询问其中任何一种,请说明为什么 Atlas Search 更合适,并展示等效用法。
处理边缘情况
- 找不到字段 — 使用
collection-schema检查可用字段,然后向用户确认预期字段 - 必需字段不存在 — 说明需要添加什么字段以及如何添加(例如,用于向量搜索的嵌入字段)
- 查询失败或索引缺失 — 使用
collection-indexes验证;如果索引不存在,必须先创建索引 - 涉及多个集合 — 询问用户指的是哪个集合,除非上下文已明确说明