# doc-qa **Repository Path**: thin-rain/doc-qa ## Basic Information - **Project Name**: doc-qa - **Description**: Doc-QA 是一个基于 Java 17 + Spring Boot 3.x +springAI + Vue 3 构建的文档智能问答系统,采用 RAG(检索增强生成) 技术,结合 Milvus 向量数据库、MongoDB 和 MinIO,实现文档上传、知识库管理和 AI 智能问答功能。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2026-04-20 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, SpringAI, SpringCloud ## README # Doc-QA 文档智能问答系统 [English](./README-en.md) Doc-QA 是一个基于 RAG(检索增强生成)技术的文档智能问答系统,支持文档上传、知识库管理、智能问答等功能。 ## 页面功能截图 ### 1、登陆 ![登陆](img%E7%99%BB%E9%99%86.jpg) ### 2、文档问答 ![输入图片说明](img%E6%96%87%E6%A1%A3%E9%97%AE%E7%AD%94.jpg) ### 3、文档切片 ![输入图片说明](img%E6%96%87%E6%A1%A3%E5%88%87%E7%89%87.jpg) ### 4、文档预览 ![输入图片说明](img%E6%96%87%E6%A1%A3%E9%A2%84%E8%A7%88.jpg) ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ doc-qa-ui (Vue.js) │ │ :80 │ └─────────────────────────┬───────────────────────────────────────┘ │ ┌─────────────────────────▼───────────────────────────────────────┐ │ doc-qa-gateway (Spring Cloud Gateway) │ │ :8080 │ └─────────────────────────┬───────────────────────────────────────┘ │ ┌─────────────────┼─────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ doc-qa-admin │ │doc-qa-document│ │ doc-qa-rag │ │ :8082 │ │ :8081 │ │ :8083 │ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ │ │ │ └─────────────────┼─────────────────┘ │ ┌─────────────────┼─────────────────┐ │ │ │ ▼ ▼ ▼ [MySQL] [MongoDB] [Milvus] [Redis] [MinIO] [Embedding] ``` ## 技术栈 - **后端**: Java 17, Spring Boot 3.x, Spring Cloud Gateway - **数据库**: MySQL, MongoDB - **向量数据库**: Milvus - **文件存储**: MinIO - **缓存**: Redis - **前端**: Vue 3, Element Plus - **容器化**: Docker, Docker Compose ## 核心功能 ### 1. 用户认证与管理 - 用户注册、登录 (JWT) - 角色权限管理 (Admin/User) ### 2. 知识库管理 - 创建、删除知识库 - 知识库列表查询 - 知识库访问控制 (私有/公开) ### 3. 文档管理 - 支持 PDF、DOC、DOCX、TXT、MD 格式 - 分片上传 (断点续传) - 文档解析与向量化存储 - 文档预览与下载 - 批量删除 ### 4. 智能问答 (RAG) - 基于向量检索的精确匹配 - 大语言模型对话增强 - 流式响应 - 会话历史管理 ## 快速开始 ### 前置要求 - JDK 17+ - Maven 3.8+ - Docker & Docker Compose - Node.js 18+ (前端开发) ### 方式一:Docker Compose 一键部署 ```bash # 克隆项目后执行 docker-compose up -d ``` 服务启动后访问: - 前端: http://localhost - API 网关: http://localhost:8080 ### 方式二:本地开发 #### 1. 启动依赖服务 ```bash # 启动 MySQL, MongoDB, Redis, Milvus, MinIO docker-compose up -d mysql mongo redis milvus minio ``` #### 2. 构建后端 ```bash # 根目录下执行 mvn clean package -DskipTests ``` #### 3. 启动各服务 ```bash # 启动网关 java -jar doc-qa-gateway/target/doc-qa-gateway-*.jar # 启动管理服务 java -jar doc-qa-admin/target/doc-qa-admin-*.jar # 启动文档服务 java -jar doc-qa-document/target/doc-qa-document-*.jar # 启动 RAG 服务 java -jar doc-qa-rag/target/doc-qa-rag-*.jar ``` #### 4. 启动前端 ```bash cd doc-qa-ui npm install npm run dev ``` ## API 接口 ### 认证接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/auth/login | 用户登录 | | POST | /api/auth/register | 用户注册 | | GET | /api/auth/user | 获取当前用户 | ### 知识库接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/document/kb/my | 我的知识库列表 | | POST | /api/document/kb | 创建知识库 | | GET | /api/document/kb/{id} | 获取知识库详情 | | DELETE | /api/document/kb/{id} | 删除知识库 | ### 文档接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/document/upload | 上传文档 | | GET | /api/document/list | 文档列表 | | DELETE | /api/document/{id} | 删除文档 | | GET | /api/document/{id}/preview | 文档预览 | | GET | /api/document/{id}/download | 文档下载 | ### 问答接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/rag/chat/stream | 流式问答 | | GET | /api/rag/chat/history/{id} | 获取会话历史 | | GET | /api/rag/chat/conversations | 会话列表 | ## 配置说明 ### 核心配置项 ```yaml # 网关配置 server: port: 8080 # MySQL 配置 spring: datasource: url: jdbc:mysql://localhost:3306/doc_qa username: root password: password # Redis 配置 redis: host: localhost port: 6379 # MongoDB 配置 data: mongodb: uri: mongodb://localhost:27017/doc_qa # Milvus 配置 milvus: host: localhost port: 19530 # MinIO 配置 minio: endpoint: http://localhost:9000 access-key: minioadmin secret-key: minioadmin bucket-name: doc-qa # RAG 配置 rag: collection-name: doc_qa_chunks splitter: chunk-size: 500 chunk-overlap: 50 embedding: batch-size: 30 ``` ## 项目结构 ``` doc-qa/ ├── doc-qa-admin/ # 管理服务 - 用户、权限、文档管理 ├── doc-qa-document/ # 文档服务 - 文档处理、分片、向量化 ├── doc-qa-gateway/ # 网关服务 - 路由、认证 ├── doc-qa-rag/ # RAG服务 - AI对话、向量检索 ├── doc-qa-ui/ # 前端应用 ├── doc-qa-common/ # 公共模块 ├── docker-compose.yml # 容器编排 └── pom.xml # 父 POM ``` ## 默认账号 首次启动后,可使用以下默认管理员账号: - 用户名: admin - 密码: admin123 ## 许可证 MIT License ## 贡献指南 欢迎提交 Issue 和 Pull Request!