关于 mongodb-search-and-ai
面向 MongoDB 用户的搜索与 AI 实践指导,帮助根据需求选择 Atlas Search、向量搜索或混合搜索,并设计索引与查询。强调先检查数据结构、解释变更并取得批准,再执行或提供只读配置。
主要功能
- 01根据场景选择搜索类型
- 02检查数据库、集合、模式和索引
- 03参考文档设计索引与查询
- 04执行前说明并请求索引批准
- 05运行聚合查询并验证结果
- 06只读时提供索引 JSON
适用场景
- 01为商品目录设置关键词或模糊搜索
- 02为文档构建语义向量搜索
- 03组合关键词与语义相关性
- 04检查并改进现有搜索查询
MCP 相关
该 Skill 使用 MongoDB MCP 工具检查数据库、集合、模式和索引,并在获批后创建索引、运行聚合查询。只读环境下会提供索引 JSON,供用户自行创建。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ fcakyon/ claude-codex-settings --skill mongodb-search-and-ai安装后在 Claude Code 中输入/mongodb-search-and-ai确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/automated-embedding.mdhybrid-search.mdlexical-search-indexing.mdlexical-search-querying.mdvector-search.md详细介绍
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 版本
了解使用场景: 如果用户的请求比较模糊:
- 询问澄清问题,了解他们的需求
- 根据架构推断可能涉及的集合和字段
- 在继续之前确认是否理解正确
常见问题:
- 用户想搜索什么?(产品、电影、文档等)
- 哪些字段包含可搜索的内容?
- 他们要进行全文搜索,还是搜索与现有项目相似的内容(例如“给定电影 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,并在创建索引或查询之前确认其集群前置条件(层级、部署、自动扩缩容)。
向量搜索(语义搜索,使用自有嵌入): 适用于用户需要:
- 使用自己预先生成的嵌入进行语义相似度搜索
- 使用 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确认索引是否存在 - 如果索引缺失,说明需要先创建索引
涉及多个集合:
- 列出可选项并询问用户指的是哪一个
- 如果上下文足以明确判断,请确认你的推断