Paper Search Assistant 是一个基于三层架构的论文搜索助手,支持论文上传、切分、向量化存储以及基于大语言模型的智能问答功能。用户可以通过界面上传 PDF 文件,系统会自动解析内容并存储到向量数据库中,支持基于用户查询的相关内容检索和推荐。
-
界面层:
frontend使用 Vue 3 和 Element Plus 构建,提供用户友好的交互界面。
-
业务层:
backend使用 FastAPI 构建,负责用户管理、论文管理和与算法层的交互。
-
算法层:
backend_algo使用 FastAPI 构建,负责调用大语言模型、向量化处理和向量数据库的管理。
-
用户管理:
- 用户注册、登录、登出。
- 用户信息查询和管理。
-
论文管理:
- 支持上传 PDF 文件,自动解析内容。
- 提供论文列表和详情查看功能。
-
智能问答:
- 基于用户输入的问题,检索相关论文内容。
- 调用大语言模型生成回答,并推荐相关论文。
-
向量化存储:
- 使用向量数据库(ChromaDB)存储论文内容的向量表示。
- 支持高效的向量检索。
-
前端依赖:
cd frontend npm install -
业务层依赖:
cd backend pip install -r requirements.txt -
算法层依赖:
cd backend_algo pip install -r requirements.txt
确保已安装 ChromaDB,运行以下命令启动向量数据库:
chroma run --path ./data_vector_db --host localhost --port 8002运行以下命令启动所有服务:
python start_all.py服务启动后:
- 前端服务运行在
http://localhost:5173 - 业务层服务运行在
http://localhost:8000 - 算法层服务运行在
http://localhost:8001
- 打开前端页面,点击注册按钮填写用户信息完成注册。
- 注册成功后,使用用户名和密码登录系统。
- 登录后,进入论文列表页面,点击“上传论文”按钮。
- 填写论文标题、作者、摘要,并上传 PDF 文件。
- 系统会自动解析 PDF 内容并存储到向量数据库中。
- 进入聊天页面,输入研究问题。
- 系统会调用算法层检索相关论文内容,并生成回答。
- 在论文列表页面,点击论文标题查看详情。
- 支持在线预览 PDF 文件。
mysql_fastapi_vue_sample_project/
├── backend/ # 业务层代码
│ ├── main.py # FastAPI 主入口
│ ├── models.py # 数据库模型
│ ├── crud.py # 数据库操作
│ ├── schemas.py # 数据模型
│ ├── database.py # 数据库连接
│ ├── security.py # 用户认证
│ ├── uploads/ # 上传的 PDF 文件存储目录
│ └── requirements.txt # 依赖文件
├── backend_algo/ # 算法层代码
│ ├── main.py # FastAPI 主入口
│ ├── schemas.py # 数据模型
│ ├── test_embed.py # 向量化测试代码
│ ├── test_rank.py # 排序测试代码
│ ├── test_vector_db.py # 向量数据库测试代码
│ └── requirements.txt # 依赖文件
├── frontend/ # 前端代码
│ ├── src/ # Vue 3 源代码
│ ├── public/ # 静态资源
│ ├── vite.config.ts # Vite 配置文件
│ └── package.json # 前端依赖文件
├── start_all.py # 启动脚本
└── README.md # 项目说明文档
- 业务层:
http://localhost:8000/docs - 算法层:
http://localhost:8001/docs
本项目基于 MIT 许可证开源,详情请参阅 LICENSE 文件。