MongoDB-RAG-Agent
基于 MongoDB Atlas 向量搜索 + Pydantic AI 的开源 RAG Agent,支持多格式文档解析与混合检索(向量+全文+RRF融合),零成本运行在 Atlas 免费套餐上
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 MongoDB Atlas 向量搜索 + Pydantic AI 的开源 RAG Agent,支持多格式文档解析与混合检索(向量+全文+RRF融合),零成本运行在 Atlas 免费套餐上
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你是某投资公司的分析师,凌晨两点,客户发来紧急邮件询问你们2024年Q4的业务进展,你需要从公司积累的上百份PDF年报、Word文档、会议纪要中快速找到相关数据——但这些文件散落在共享盘、邮件附件、微信群聊里,根本不知道去哪找。你会怎么做?
这是大多数知识工作者面临的真实困境:数据就在那里,但找不到、用不上。传统的企业知识库要么依赖关键词精确匹配(搜"2024 Q4"找不到"2024年第四季度"),要么需要昂贵的商业解决方案。MongoDB RAG Agent 的出现,正是为了解决这个"最后一公里"问题——让AI代替你去读所有的文档,然后直接回答你的问题。
这个开源项目由独立开发者 coleam00 于2024年底创建(Stars: 114, Forks: 63),它将 MongoDB Atlas 向量搜索、Pydantic AI Agent 框架和 Docling 文档解析三者结合,构建了一个本地优先、免费可用的 RAG(检索增强生成)系统。与需要购买专用向量数据库的商业方案不同,它可以完全运行在 MongoDB Atlas 免费 M0 套餐上,成本为零。
MongoDB RAG Agent 的核心创新在于其混合检索策略。它同时运行两条检索管道:
然后,项目使用 Reciprocal Rank Fusion(RRF) 算法将两条管道的结果合并排名——这是一种无需调参的经典融合方法,在信息检索领域广泛验证。README 特别指出,这套手动实现的效果与 MongoDB 原生 $rankFusion 预览版相当,但兼容性更好。
项目采用 Docling 作为文档解析引擎,这是 IBM Research 开源的多格式文档解析库。它支持:
| 格式 | 支持情况 |
|---|---|
| PDF(含扫描件) | ✅ 通过 OCR 识别 |
| Word (.docx) | ✅ 保留段落结构 |
| PowerPoint (.pptx) | ✅ 提取幻灯片文本 |
| Excel (.xlsx) | ✅ 表格数据解析 |
| HTML | ✅ 结构化提取 |
| Markdown | ✅ 语义分块 |
| 音频 (.mp3等) | ✅ 通过 Whisper 转写 |
解析后的文档由 Docling HybridChunker 进行智能分块——它不按固定字数硬切,而是尊重文档的自然段落和语义边界,保留上下文完整性。这对 RAG 系统的效果至关重要:切得太碎会丢失语义关联,切得太粗会引入无关噪声。
Pydantic AI 是 Pydantic 团队打造的 LLM Agent 开发框架,与传统的 LangChain 不同,它强调类型安全和结构化输出。项目 CLAUDE.md 明确规定了核心开发原则:
async/await,实现并发最小化延迟Agent 本身通过 @rag_agent.tool 装饰器注册搜索工具,接收用户问题、调用向量/全文/混合搜索,最后将检索结果注入 LLM 上下文生成回答。代码结构清晰,核心模块约3000-14000行。
第一步:安装 UV 包管理器
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/coleam00/MongoDB-RAG-Agent.git
cd MongoDB-RAG-Agent
uv venv && source .venv/bin/activate && uv sync
第二步:申请外部服务
第三步:配置与索引创建
cp .env.example .env
# 编辑 .env,填入上述凭证
uv run python -m src.test_config # 验证配置
uv run python -m src.ingestion.ingest -d ./documents # 导入文档
最关键的一步:在 MongoDB Atlas 控制台手动创建两个搜索索引:
vector_index:向量搜索索引,1536维,cosine 相似度text_index:Atlas 全文搜索索引,Lucene standard 分析器第四步:运行 Agent
uv run python -m src.cli
进入 Rich 库构建的终端界面,实时流式输出,Agent 的思考过程和工具调用结果一览无余。
基于 Rich 库的 CLI 界面提供了类 ChatGPT 的对话体验:
⚠️ 三大门槛需要正视:
⚠️ 适用场景判断:
MongoDB RAG Agent 展示了一条**"够用就好"的 RAG 架构路径**——它没有引入复杂的向量数据库(Milvus、Pinecone)或编排框架(LangGraph),而是利用开发者熟悉的 MongoDB 作为统一存储,同时满足文档存储、向量检索和全文搜索三种需求。
这种设计思路对 AI 应用开发者有重要启示:基础设施选型应以团队现有能力为导向,而非盲目追求"最先进"的技术栈。MongoDB 的优势在于其灵活的模式(同一个集合可存储原始文档和向量嵌入)、成熟的生态系统,以及 Atlas 提供的免费云服务。对于中小规模项目,这比维护一个专用向量数据库的运维成本要低得多。
同时,项目对 Pydantic AI 的使用也反映了 AI Agent 开发的一个趋势:从"灵活但危险"的 LangChain 转向"约束但安全"的强类型框架。当 RAG 系统进入生产环境时,类型安全能显著降低由数据格式不一致引发的隐性 bug。