# MYRAG **Repository Path**: tjuwangli/myrag ## Basic Information - **Project Name**: MYRAG - **Description**: 基于大模型的垂域知识库问答助手 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2026-04-27 - **Last Updated**: 2026-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MYRAG

Spring Boot Spring AI Vue Java License

基于 RAG(检索增强生成) 技术的知识库智能问答系统

--- ## 项目介绍 MYRAG 是一款基于 RAG(Retrieval-Augmented Generation,检索增强生成)技术的知识库智能问答系统。用户可以通过上传文档(PDF、Word、TXT、Markdown 等)构建个人或团队知识库,并与 AI 进行基于知识库内容的智能对话。系统采用前后端分离架构,后端基于 Spring Boot + Spring AI,前端基于 Vue 3,支持向量检索与大语言模型深度融合,提供精准的上下文感知回答。 ## 功能特性 - **用户认证**:支持用户注册、登录,基于 JWT 实现无状态身份认证 - **知识库管理**:创建、编辑、删除个人知识库,支持知识库描述与分类 - **文档管理**:支持上传 PDF、DOCX、TXT、Markdown 等格式文档,自动解析并向量化存储 - **智能问答**:基于知识库内容进行 RAG 检索增强问答,支持多轮对话 - **会话管理**:自动保存对话历史,支持查看历史聊天记录 - **向量检索**:基于 Redis 向量数据库实现高效的语义相似度检索 ## 技术架构 ### 后端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Spring Boot | 3.5.13 | 核心框架 | | Spring AI | 1.1.4 | AI 大模型集成框架 | | MyBatis | 3.0.4 | ORM 持久层框架 | | MySQL | 8.x | 关系型数据库 | | Redis | 6.x+ | 向量数据库 / 缓存 | | JWT | 0.12.6 | 身份认证 | | Maven | 3.8+ | 构建工具 | ### 前端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Vue | 3.5.13 | 前端框架 | | Vue Router | 4.5.0 | 路由管理 | | Pinia | 2.3.0 | 状态管理 | | Vite | 6.0.5 | 构建工具 | | Axios | 1.7.9 | HTTP 客户端 | | Lucide Vue Next | 0.469.0 | 图标库 | ### AI 模型配置(默认) | 类型 | 模型 | 提供商 | |------|------|--------| | 对话模型 | qwen3.5-flash | 阿里云百炼 (DashScope) | | 嵌入模型 | text-embedding-v3 | 阿里云百炼 (DashScope) | > 系统采用 OpenAI 兼容接口,可灵活切换至其他支持 OpenAI API 格式的模型服务商。 ## 项目结构 ``` MYRAG/ ├── src/main/java/io/gitee/zhanghuiyuan611/myrag/ # 后端源码 │ ├── common/ # 公共工具类(JWT、全局异常处理、统一响应等) │ ├── config/ # 配置类 │ ├── controller/ # REST API 控制器 │ ├── interceptor/ # JWT 拦截器 │ ├── mapper/ # MyBatis Mapper 接口 │ ├── model/ # 数据模型(Entity / DTO / VO) │ ├── service/ # 业务逻辑层 │ └── MyragApplication.java # 启动类 ├── src/main/resources/ │ ├── db/schema.sql # 数据库初始化脚本 │ ├── mapper/ # MyBatis XML 映射文件 │ └── application.yml # 应用配置文件 ├── frontend/ # 前端源码(Vue 3 + Vite) │ ├── src/ │ │ ├── api/ # API 接口封装 │ │ ├── components/ # 公共组件 │ │ ├── views/ # 页面视图 │ │ ├── router/ # 路由配置 │ │ └── stores/ # Pinia 状态管理 │ └── package.json ├── uploads/ # 文件上传存储目录 └── pom.xml # Maven 项目配置 ``` ## 快速开始 ### 环境要求 - JDK 21+ - Maven 3.8+ - MySQL 8.0+ - Redis 6.0+(需支持向量搜索模块) - Node.js 18+ & npm / pnpm ### 1. 克隆项目 ```bash git clone https://gitee.com/zhanghuiyuan611/myrag.git cd myrag ``` ### 2. 初始化数据库 创建 MySQL 数据库并执行初始化脚本: ```bash mysql -u root -p < src/main/resources/db/schema.sql ``` > 脚本会自动创建 `myrag` 数据库及所需数据表。 ### 3. 配置应用 编辑 `src/main/resources/application.yml`,修改以下配置项: ```yaml # MySQL 数据库配置 spring: datasource: url: jdbc:mysql://localhost:3306/myrag?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root # 修改为你的数据库用户名 password: your_password # 修改为你的数据库密码 # Redis 配置 data: redis: host: localhost # Redis 地址 port: 6379 password: # 如有密码请填写 # AI 模型配置(默认使用阿里云百炼) ai: openai: base-url: https://dashscope.aliyuncs.com/compatible-mode api-key: ${OPENAI_API_KEY} # 设置为你的 API Key chat: options: model: qwen3.5-flash embedding: options: model: text-embedding-v3 # JWT 密钥(生产环境请务必修改) jwt: secret: your-256-bit-secret-key-here-please-change-it expiration: 86400000 ``` > 你也可以通过环境变量 `OPENAI_API_KEY` 传入 API Key,避免硬编码。 ### 4. 启动后端服务 ```bash mvn clean install mvn spring-boot:run ``` 后端服务默认运行在 `http://localhost:8080` ### 5. 启动前端服务 ```bash cd frontend npm install npm run dev ``` 前端开发服务器默认运行在 `http://localhost:5173` ### 6. 访问应用 浏览器打开 `http://localhost:5173`,注册账号后即可开始使用。 ## 使用说明 ### 构建生产包 #### 后端打包 ```bash mvn clean package ``` 生成的 JAR 文件位于 `target/MYRAG-0.0.1-SNAPSHOT.jar` #### 前端打包 ```bash cd frontend npm run build ``` 构建产物位于 `frontend/dist/` 目录 ### 部署建议 - 生产环境建议将前端构建产物部署到 Nginx,并配置反向代理至后端服务 - 确保 Redis 已加载向量搜索模块(RedisSearch / Redis Vector Library) - 生产环境务必修改 JWT Secret 及数据库密码 - 文件上传目录 `uploads/` 建议挂载到独立存储卷 ## 数据库表结构 | 表名 | 说明 | |------|------| | `user` | 用户表,存储账号、密码(BCrypt 加密)、昵称 | | `knowledge_base` | 知识库表,关联用户,存储知识库名称与描述 | | `document` | 文档表,存储上传文件信息、处理状态、向量分块数 | | `chat_session` | 对话会话表,记录会话标题及关联知识库 | | `chat_message` | 对话消息表,存储用户与 AI 的消息历史 | ## 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建你的特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交你的更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开一个 Pull Request ## 开源协议 本项目基于 [MIT](LICENSE) 协议开源。 ## 联系方式 - 作者:zhanghuiyuan611 - Gitee:[https://gitee.com/zhanghuiyuan611](https://gitee.com/zhanghuiyuan611) ---

如果本项目对你有帮助,欢迎 ⭐ Star 支持!