yunwen-doc-ai-platform

yunwen-doc-ai-platform

提供文档智能问答的MCP服务器,支持查询知识库、获取会话历史和清理会话历史。

Category
访问服务器

README

云问:企业文档智能问答平台

云问是一个面向企业知识库场景的 RAG 工程化项目。它把文档导入、混合检索、质量校验、引用溯源、多轮问答和 MCP 工具化调用串成一个可演示的后端系统,用来解决企业产品手册、设备说明书、技术文档难查、难追溯、难复用的问题。

这个项目更适合作为 AI 应用后端作品集来阅读:重点不是单个 Prompt,而是一个 RAG 系统从文档入库、检索增强、回答生成到外部 Agent 调用的完整工程链路。

如果只看 3 分钟

  • 项目定位:企业文档智能问答平台,支持 PDF / Markdown 文档导入、知识库检索、引用溯源和 MCP 调用。
  • 技术关键词:FastAPI、LangGraph、Milvus、MongoDB、MinIO、BGE-M3、Reranker、CRAG、FastMCP、DashScope / Qwen。
  • 我重点实现的能力:文档入库流程、多路检索与 Rerank、CRAG 质量判断、SSE 问答接口、MCP 工具封装、离线评测。
  • 可展示结果:仓库内保留了文档入库、问答引用、图片引用展示截图,README 下方可直接查看。

项目亮点

能力 说明
文档入库 支持 PDF 转 Markdown、图片对象存储、标题层级切分、文档主体识别和向量入库。
混合检索 支持 dense、sparse / BM25、HyDE、Web Search MCP 等多路召回,并用 RRF 融合。
结果质量控制 使用 Reranker 精排,并通过 CRAG 判断上下文质量,低相关时补检、改写或拒答。
引用溯源 回答保留文本引用和图片引用,便于核对答案来源。
多轮问答 使用 MongoDB 保存会话历史,辅助问题改写和主体确认。
工具化集成 通过 FastMCP 暴露查询、历史读取、历史清理、状态检查等工具,可被外部 Agent 调用。
评测意识 内置离线评测脚本和评测报告,用于验证回答质量、链路稳定性和延迟表现。

Demo

文档入库工作台

文档入库工作台

文档问答与引用溯源

文档问答与引用溯源

图片引用展示

图片引用展示

系统架构

PDF / Markdown
    |
    v
FastAPI 文档导入服务
    |
    v
LangGraph 入库流程
    |-- PDF 转 Markdown
    |-- 图片处理 -> MinIO
    |-- 标题 / 段落切分
    |-- 文档主体识别
    |-- BGE-M3 向量化
    v
Milvus: 文档切片 / 主体索引

用户问题
    |
    v
FastAPI 问答服务 + SSE
    |
    v
LangGraph 查询流程
    |-- MongoDB 历史读取
    |-- 主体确认 / 查询改写
    |-- dense / sparse / HyDE / Web Search MCP
    |-- RRF 融合
    |-- Rerank 精排
    |-- CRAG 质量判断
    v
带引用的答案 / 补检 / 拒答

外部 Agent
    |
    v
FastMCP: yunwen_query_knowledge_base

核心模块

模块 关键路径 作用
文档入库主图 app/import_process/agent/main_graph.py 编排 PDF 解析、图片处理、切分、主体识别、Embedding 和入库。
查询主图 app/query_process/agent/main_graph.py 编排多轮历史、查询改写、召回、融合、重排、质量判断和答案生成。
Milvus 客户端 app/clients/milvus_utils.py 封装 dense / sparse 检索和 collection 操作。
MinIO 客户端 app/clients/minio_utils.py 保存文档解析出的图片对象,支持图片引用展示。
MongoDB 历史 app/clients/mongo_history_utils.py 保存多轮对话历史。
CRAG 节点 app/query_process/agent/nodes/node_crag.py 判断检索上下文是否足以回答问题。
MCP 服务 app/mcp_server.py 将知识库能力封装成可被外部系统调用的工具。
离线评测 scripts/run_eval.py 基于 golden set 跑端到端评测。

技术栈

  • Python 3.12+
  • FastAPI
  • LangGraph / LangChain
  • FastMCP
  • Milvus
  • MongoDB
  • MinIO
  • MinerU
  • BGE-M3 / BGE Reranker
  • DashScope / Qwen
  • pytest

快速启动

1. 安装依赖

cd yunwen
uv sync

或:

pip install -e .

2. 配置环境变量

cp .env.example .env

按本地环境填写:

OPENAI_API_KEY=...
MILVUS_URL=http://localhost:19530
MONGO_URL=mongodb://admin:admin123@localhost:27017
MINIO_ENDPOINT=localhost:9000

3. 启动依赖服务

cd docker
docker compose up -d

默认依赖:

Milvus: 19530
MinIO: 9000 / 9001
MongoDB: 27017

4. 启动后端服务

python -m app.import_process.api.import_server
python -m app.query_process.api.query_server
python run_mcp_server.py

常用入口:

文档入库:http://127.0.0.1:8000/import
文档问答:http://127.0.0.1:8001/chat.html
健康检查:http://127.0.0.1:8001/health
MCP 服务:http://127.0.0.1:9100/mcp

评测与测试

离线评测脚本:

python scripts/run_eval.py

已保留一份评测输出:

reports/eval_20260510_191855/report.md
reports/eval_20260510_191855/summary.json

自动化测试:

pytest app/test -q

说明:完整端到端运行依赖本地模型、向量库、对象存储、MongoDB 和外部 LLM API。缺少这些依赖时,部分端到端测试需要先完成环境配置。

与云枢项目的关系

云问负责文档知识库能力,云枢负责电商客服 Agent 能力。两个项目组合后,云枢可以通过 YunwenMcpRetriever 调用云问的 yunwen_query_knowledge_base 工具,把文档问答能力接入到客服 Agent 中。

公开仓库说明

公开版本保留核心代码、示例配置、评测报告和演示截图,不包含:

  • .env 和真实 API Key。
  • 本地模型权重。
  • 大量原始 PDF / zip 文档。
  • 运行日志、解析输出和数据库数据。

当前项目是工程化原型,适合用于展示 AI 应用后端、RAG 系统设计、检索增强生成、MCP 工具化和测试评测能力。生产化还需要补充权限、审计、监控告警、任务队列、缓存、高并发压测和真实用户反馈闭环。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选