PaperRAG MCP Server
by MenShiHuan
README.md
# PaperRAG MCP Server — 个人科研论文知识库(Personal Research Paper Knowledge Base)
> 基于可插拔 Modular RAG 架构打造的私人论文数据库:摄取 PDF 论文 → 混合检索(Hybrid Search + Rerank)→ MCP 协议暴露给 AI 助手,附带 Dashboard 可视化管理和自动化评估体系。
---
## 📖 目录
- [项目概述](#-项目概述)
- [快速开始](#-快速开始)
- [测试体系与评估基线](#-测试体系与评估基线)
- [常见问题](#-常见问题)
---
## 🏗️ 项目概述
### 这个项目是什么
一个服务于**个人论文阅读与管理**的 RAG 系统:把下载的学术论文(PDF)摄入知识库,通过 **BM25 稀疏检索 + 稠密向量检索(RRF 融合)+ Cross-Encoder 精排** 找到最相关的段落,并作为 MCP Server 供 Claude Code / Cursor / Copilot 等 AI 助手直接调用——"问 AI 论文里的问题"。
当前知识库已摄入 17 篇目标检测/图神经网络方向论文(约 1670 个 chunk),并配套 64 题黄金测试集(`tests/fixtures/paper_test_set.json`)进行质量回归。
### 核心能力一览
| 模块 | 能力 | 说明 |
|------|------|------|
| **Ingestion Pipeline** | PDF → Markdown → Chunk → Refine → Enrich → Embedding → Upsert | 全链路数据摄取,支持多模态图片描述(Image Captioning) |
| **Hybrid Search** | Dense (向量) + Sparse (BM25) + RRF Fusion + Rerank | 粗排召回 + 精排重排的两段式检索架构 |
| **MCP Server** | 标准 MCP 协议暴露 Tools | `query_knowledge_hub`、`list_collections`、`get_document_summary` |
| **Dashboard** | Streamlit 六页面管理平台 | 系统总览 / 数据浏览 / 论文导入 / 摄取追踪 / 查询追踪 / 评估面板 |
| **Evaluation** | Ragas + Custom 评估体系 | hit_rate / MRR / faithfulness 三指标,拒绝"凭感觉"调优 |
| **Observability** | 全链路白盒化追踪 | Ingestion 与 Query 两条链路的每一个中间状态透明可见 |
### 技术亮点
**🔌 全链路可插拔架构**:LLM / Embedding / Reranker / Splitter / VectorStore / Evaluator 每一个核心环节均定义了抽象接口,支持"乐高积木式"替换,通过配置文件一键切换后端,零代码修改。
**🔍 混合检索 + 重排**:BM25 稀疏检索解决专有名词精确匹配 + Dense Embedding 解决同义词语义匹配,RRF 融合后可选 Cross-Encoder / LLM Rerank 精排,平衡查全率与查准率。
**🖼️ 多模态图像处理**:采用 Image-to-Text 策略,利用 Vision LLM 自动生成图片描述并缝合进 Chunk,复用纯文本 RAG 链路即可实现"搜文字出图"。
**📡 MCP 生态集成**:遵循 Model Context Protocol 标准,可直接对接 Claude Code、Cursor、GitHub Copilot 等 MCP Client,零前端开发,一次开发处处可用。
**📊 可视化管理 + 自动化评估**:Streamlit Dashboard 提供完整的数据管理与链路追踪能力,集成 Ragas 等评估框架,建立基于数据的迭代反馈回路。
**🧪 三层测试体系**:Unit / Integration / E2E 分层测试共 1363 个用例,覆盖独立模块逻辑、模块间交互、完整链路(MCP Client / Dashboard)。
---
## 🚀 快速开始
### 1. 环境准备
```bash
# 安装依赖(建议使用 .venv)
pip install -e .
# 或使用 Setup Skill 一键配置(Provider 选择 → API Key → 依赖 → 配置)
setup
```
编辑 `config/settings.yaml` 填入 LLM / Embedding 的 API Key(默认 OpenAI)。
### 2. 统一入口(main.py)
```bash
# 启动 MCP Server(供 AI 助手连接,stdio 传输)
python main.py
# 启动 Dashboard 前端(默认 http://localhost:8501)
python main.py dashboard --port 8501
```
### 3. 摄入论文
```bash
# 通过 Dashboard「论文导入」页上传,或 CLI:
python scripts/ingest.py --path <论文目录或文件> --collection default
```
### 4. 集成到 AI 助手
在 Claude Code / Cursor 等的 MCP 配置中注册本项目:
```json
{
"mcpServers": {
"rag-kb": {
"command": "python",
"args": ["main.py"],
"cwd": "<项目路径>"
}
}
}
```
配置完成后即可让 AI 直接调用 `query_knowledge_hub` 等工具查询论文内容。
---
## 📊 测试体系与评估基线
### 测试规模
| 层级 | 数量 | 说明 |
|------|------|------|
| Unit(单元测试) | 1205 | 组件级逻辑(chunker / loaders / retrievers / evaluators 等) |
| Integration(集成测试) | ~120 | 真实组件协作(摄取管道 / 混合检索 / Chroma 往返 / MCP 协议) |
| E2E(端到端测试) | ~38 | 完整链路(MCP Client 协议 / Dashboard AppTest / 数据摄取) |
```bash
pytest tests/unit -q # 单元测试
pytest tests/integration -q # 集成测试(部分需真实 LLM 凭据)
pytest tests/e2e -q # 端到端测试
```
### 论文测试集评估基线(2026-09-11 实测)
64 题黄金测试集(17 篇论文)三指标:
| 指标 | 数值 | 说明 |
|------|------|------|
| Hit Rate@10 | **0.8281** | 53/64 题在 top-10 中命中答案 chunk |
| MRR | **0.562** | 平均命中位置约第 2 位 |
| Faithfulness | **0.8824** | 生成答案对检索上下文的忠实度(Ragas LLM-as-Judge) |
```bash
# 检索指标(零 LLM 成本)
python scripts/evaluate.py --test-set tests/fixtures/paper_test_set.json --top-k 10 --json
# 三指标(需 ragas;--generate-answers 自动生成答案)
python scripts/evaluate.py --test-set tests/fixtures/paper_test_set.json --top-k 10 --generate-answers --json
```
> ⚠️ 测试集 chunk id 与当前入库数据绑定,**重新入库后需重新验证**:`python scripts/verify_paper_testset.py` 逐题验证检索,再用 `python scripts/build_paper_testset.py` 重建测试集。
---
## ❓ 常见问题
### 1. 如何切换 Provider(OpenAI / DeepSeek / Ollama / Azure)?
项目使用**工厂模式(Factory Pattern)**,Provider 切换只需:① 新增/选用 Provider 类;② 在工厂注册;③ 更新 `settings.yaml`。直接让 AI 帮你完成,或运行 Setup Skill 引导配置。
### 2. 想摄取 PDF 以外的文档格式(Word / Markdown / HTML 等)?
Loader 层采用可插拔抽象设计(`BaseLoader`),默认实现 PDF Loader。新增格式只需让 AI 参考现有 PDF Loader 实现一个对应 Loader。
### 3. 如何集成到 AI 工具中(Claude Code / Cursor / Copilot 等)?
本项目是标准 MCP Server,任何支持 MCP 协议的 AI 工具都能集成——按工具要求填写 MCP 配置(见快速开始第 4 步),或直接问 AI 生成配置。
### 4. 项目报错 / Bug 怎么办?
三层测试体系覆盖主链路,遇到问题:① 把错误信息直接丢给 AI 修复;② 运行 `qa-tester` Skill 执行全量 QA 计划(QA_TEST_PLAN.md,A~P 共 16 章);③ 检查 `logs/traces.jsonl` 追踪链路定位瓶颈。
### 5. 善用内置 Skill
| Skill | 用途 |
|-------|------|
| `setup` | 一键环境配置(Provider / API Key / 依赖 / 启动) |
| `qa-tester` | 全量 QA 自动测试(A~P 章节验收清单) |
| `auto-coder` | 后续增量功能的 spec 驱动自动开发 |
| `package` | 清理打包(自动脱敏 API Key、保留论文测试集) |
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues