P
Papers Rag MCP
by @Au-LiuJY
论文检索rag
Created 6/16/2026
Updated 1 day ago
README
Repository documentation and setup instructions
Papers RAG MCP Server
一个可插拔、可观测的模块化 RAG(检索增强生成)服务框架,通过 MCP(Model Context Protocol)协议对外暴露工具接口,支持 AI 助手直接调用。
架构概览
┌─────────────────────────────────────────┐
│ MCP Client │
│ (Copilot / Claude Desktop / 自定义) │
└──────────────┬──────────────────────────┘
│ MCP Protocol (Tools)
┌──────────────▼──────────────────────────┐
│ MCP Server │
│ - query_knowledge_hub │
│ - list_collections │
│ - get_document_summary │
└──────────────┬──────────────────────────┘
│
┌──────────────────────────┼──────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Ingestion │ │ Retrieval │ │ Dashboard │
│ Pipeline │ │ Pipeline │ │ (Streamlit) │
├───────────────┤ ├──────────────────┤ ├──────────────────┤
│ PDF → MD │ │ Dense (Vector) │ │ 系统总览 │
│ Chunk Split │ │ Sparse (BM25) │ │ 数据浏览 │
│ LLM Refine │ │ RRF Fusion │ │ Ingestion管理 │
│ Metadata Enr. │ │ Rerank (可选) │ │ 摄取追踪 │
│ Embedding │ │ LLM Response │ │ 查询追踪 │
│ Vector Store │ │ │ │ 评估面板 │
└───────────────┘ └──────────────────┘ └──────────────────┘
│ │ │
└──────────────────────────┼─────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Observability │
│ (全链路追踪 / 结构化日志) │
└─────────────────────────────────────────┘
核心数据流
1. 数据摄取(Ingestion Pipeline)
PDF 文档 → Markdown 转换 → 语义分块 → Chunk Refinement(可选)
→ Metadata 增强 → Embedding 向量化 → 写入向量存储
- 支持 PDF 格式文档解析
- 可选的 LLM Chunk Refinement 提升块质量
- Metadata Enricher 自动提取关键词、摘要、标签等
- 支持图片自动描述(Vision LLM),将图片信息缝合进 Chunk
2. 检索查询(Retrieval Pipeline)
用户 Query → Dense Embedding 检索 + BM25 稀疏检索
→ RRF 融合排序 → Rerank(可选) → LLM 生成回答
- Dense Retrieval:基于 Embedding 的语义向量检索
- Sparse Retrieval:BM25 关键词精确匹配
- RRF Fusion:混合排序结果融合,兼顾查全率与查准率
- Rerank:可选的 Cross-Encoder / LLM 精排
- LLM Response:基于检索结果生成最终回答
模块设计
| 模块 | 可插拔接口 | 默认实现 | 可选实现 |
|------|-----------|---------|---------|
| LLM | BaseLLM | OpenAI 兼容接口 | Azure / DeepSeek / Ollama |
| Embedding | BaseEmbedding | OpenAI 兼容接口 | Azure / Ollama |
| Vector Store | BaseVectorStore | ChromaDB | Qdrant / Pinecone |
| Reranker | BaseReranker | Cross-Encoder | LLM Rerank |
| Splitter | BaseSplitter | Recursive Splitter | 自定义 |
| Evaluator | BaseEvaluator | Ragas | Custom |
所有模块通过配置文件 config/settings.yaml 一键切换,零代码修改。
适用范围
适用场景
- 个人知识库管理:论文、文档的本地语义检索与问答
- 企业内部知识库:技术文档、合规文档、产品手册的智能检索
- AI Agent 工具链:通过 MCP 协议为 AI 助手提供 RAG 能力
- RAG 系统原型验证:快速搭建和测试不同检索策略的效果
技术栈
- 语言:Python 3.11+
- 框架:MCP Protocol / Streamlit
- 存储:ChromaDB(默认)/ Qdrant / Pinecone
- 检索:BM25 + Dense Embedding + RRF Fusion + Rerank
- 评估:Ragas
快速开始
前置条件
- Python 3.11+
- 一个 OpenAI 兼容的 API Key(ModelScope / DashScope / OpenAI 等均可)
安装与配置
# 克隆仓库
git clone https://github.com/Au-LiuJY/papers_rag_mcp.git
cd papers_rag_mcp
# 安装依赖
pip install -r requirements.txt
# 配置 settings.yaml(复制示例并填入 API Key)
cp config/settings.yaml.example config/settings.yaml
# 编辑 config/settings.yaml,填入你的 API Key 和模型配置
启动服务
# 启动 MCP Server
python mcp_server.py
# 启动 Dashboard(可选)
streamlit run src/dashboard/app.py
项目结构
├── config/ # 配置文件
│ ├── settings.yaml # 主配置(已加入 .gitignore)
│ └── settings.yaml.example # 配置示例
├── src/
│ ├── core/ # 核心逻辑
│ │ ├── ingestion/ # 数据摄取管线
│ │ ├── retrieval/ # 检索管线
│ │ └── settings.py # 配置加载
│ ├── libs/ # 可插拔模块实现
│ │ ├── llm/ # LLM 抽象与实现
│ │ ├── embedding/ # Embedding 抽象与实现
│ │ ├── vector_store/ # 向量存储抽象与实现
│ │ ├── reranker/ # 重排器抽象与实现
│ │ └── splitter/ # 分块器
│ ├── mcp/ # MCP 协议服务
│ └── dashboard/ # Streamlit 管理平台
├── tests/ # 测试
├── data/ # 数据目录(已加入 .gitignore)
└── logs/ # 日志目录(已加入 .gitignore)
Quick Setup
Installation guide for this server
Install Package (if required)
uvx papers_rag_mcp
Cursor configuration (mcp.json)
{
"mcpServers": {
"au-liujy-papers-rag-mcp": {
"command": "uvx",
"args": [
"papers_rag_mcp"
]
}
}
}