Skip to content

chenncy/PaperRAG

Repository files navigation

PaperRAG · 论文知识库智能问答系统

基于 RAG (Retrieval-Augmented Generation) 的论文知识库问答系统,支持多格式论文上传、混合检索与语义重排、多轮对话与 Agent 工具调用,具备 ReAct 推理、可选 Planner 任务规划(进入主控前生成步骤计划写入系统提示)与 Reflection 自检闭环。

✨ 核心特性

  • 🎯 精准检索:混合检索(向量 + BM25)+ 语义重排序
  • 🔒 安全可靠:JWT 认证、用户数据隔离
  • 📱 多端支持:PC 端(KivyMD)和 Android 移动端
  • 🚀 高性能:LangGraph 工作流引擎、智能缓存
  • 📚 多格式支持:PDF、DOCX、TXT、CSV、Excel 等

🏗️ 技术架构

  • 后端:FastAPI + LangChain + LangGraph + ChromaDB
  • 前端:KivyMD (PC) / Android APK
  • 数据库:MySQL (用户/历史) + ChromaDB (向量索引)
  • LLM:阿里云 DashScope (Qwen-Max)

📋 快速开始

1. 环境要求

  • Python 3.10+
  • MySQL 5.7+
  • 阿里云 DashScope API Key

2. 安装依赖

# 创建虚拟环境
python -m venv bert_env

# 激活虚拟环境
# Windows:
bert_env\Scripts\activate
# Linux/Mac:
source bert_env/bin/activate

# 安装依赖
pip install -r requirements.txt

3. 配置环境变量

创建 .env 文件:

DASHSCOPE_API_KEY=your-api-key-here

4. 初始化数据库

# 初始化数据库表
python init_user.py

5. 启动服务

# 启动后端服务器
python server.py

# 启动客户端(新终端)
python main.py

📖 文档

  • 产品报告 - 完整的产品介绍和技术文档
  • 求职准备 - 简历写法、面试话术与展示建议
  • RAGAS 评估 - RAGAS 离线评估(python -m app.ragas_eval
  • MCP 接入说明 - 可选 MySQL MCPquery_mysql 查业务库)与 SQLite MCPquery_database_via_mcp

🔧 主要功能

  • ✅ 用户注册/登录(JWT 认证)
  • ✅ 多格式文件上传(PDF、DOCX、TXT 等)
  • ✅ 智能问答(混合检索 + 语义重排序)
  • ✅ 多轮对话(上下文记忆)
  • ✅ 聊天历史管理
  • ✅ 思考过程可视化

📝 项目结构

PaperRAG/
├── app/                    # 核心应用模块
│   ├── auth.py            # 认证模块
│   ├── chains.py          # LLM Chain 定义
│   ├── graph.py           # LangGraph 工作流
│   ├── retriever.py       # 检索模块
│   ├── loader.py          # 文档加载器
│   ├── rag_core.py        # RAG 核心(Rerank)
│   └── evaluation.py      # 评估模块
├── server.py              # FastAPI 后端服务
├── main.py                # KivyMD 客户端
├── run_evaluation.py      # 自研评估脚本
├── app/ragas_eval/        # RAGAS 评估(含 ragas_outputs/ 报告目录,默认 gitignore)
├── eval_dataset.json      # 评估测试集
├── data/papers/           # 论文 PDF 等(与 data/ 根目录一并被索引)
├── requirements.txt       # 依赖列表
└── README.md              # 本文件

⚠️ 注意事项

  1. API Key:请妥善保管你的 DASHSCOPE_API_KEY,不要提交到 Git
  2. Agent Planner:默认开启;若需关闭以节省一次 LLM 调用,可在 .env 中设置 AGENT_PLANNER_ENABLED=false
  3. 数据库配置:修改 server.py 中的数据库连接信息
  4. 敏感数据:不要上传包含敏感信息的文件到仓库

📄 许可证

本项目仅供学习和研究使用。

👥 贡献

欢迎提交 Issue 和 Pull Request!


版本: V 1.3.0 Plus
最后更新: 2026-01-23

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors