mcpField
M
mongodb-search-and-ai

mongodb-search-and-ai

github.com/fcakyon数据与数据库1.2k41 次安装今天更新
代码仓库

关于 mongodb-search-and-ai

面向 MongoDB 用户的搜索与 AI 实践指导,帮助根据需求选择 Atlas Search、向量搜索或混合搜索,并设计索引与查询。强调先检查数据结构、解释变更并取得批准,再执行或提供只读配置。

主要功能

  1. 01根据场景选择搜索类型
  2. 02检查数据库、集合、模式和索引
  3. 03参考文档设计索引与查询
  4. 04执行前说明并请求索引批准
  5. 05运行聚合查询并验证结果
  6. 06只读时提供索引 JSON

适用场景

  1. 01为商品目录设置关键词或模糊搜索
  2. 02为文档构建语义向量搜索
  3. 03组合关键词与语义相关性
  4. 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.md
hybrid-search.md
lexical-search-indexing.md
lexical-search-querying.md
vector-search.md

详细介绍

MongoDB 搜索与 AI 推荐技能

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

核心原则

  1. 先了解,再构建 —— 验证使用场景,确保推荐的解决方案合适
  2. 始终先检查 —— 在提出建议前,检查现有索引和架构
  3. 执行前先说明 —— 说明将创建哪些索引,并要求用户明确批准
  4. 针对使用场景进行优化 —— 不同的使用场景需要不同的索引配置和查询模式
  5. 处理只读场景 —— 如果你无法使用 create、update 或 delete 操作工具,则处于只读模式。提供完整的索引配置 JSON,供用户自行创建,包括通过 Atlas UI 创建。
  6. 用易懂的语言说明 —— 描述技术概念,并将业务需求映射到用户易于理解的技术实现方案。

工作流

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. 执行与验证

创建索引:

  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。 两者都缺少搜索工作负载所需的相关性评分、模糊匹配和语言感知词元化功能。如果用户提出使用其中任何一种,请说明 Atlas Search 为何更合适,并展示等效模式。

处理边缘情况

用户提及的字段无法找到:

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

所需字段不存在:

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

查询失败或索引缺失:

  • 使用 collection-indexes 确认索引是否存在
  • 如果索引缺失,说明需要先创建索引

涉及多个集合:

  • 列出可选项并询问用户指的是哪一个
  • 如果上下文足以明确判断,请确认你的推断

评论

支持 Markdown