基于 RAG 技术的智能校园知识问答机器人
功能特性 • 快速开始 • 项目演示 • 技术架构 • 文档 • 贡献指南
EchoCampus-Bot 是一款基于 RAG (检索增强生成) 技术的智能校园知识问答机器人。它采用现代化的前后端分离架构,结合 Spring Boot、Vue.js、PostgreSQL 和 Milvus 向量数据库,为校园用户提供准确、智能的知识问答服务。
| 特性 | 描述 |
|---|---|
| 🧠 RAG 智能问答 | 基于检索增强生成技术,结合知识库内容提供精准回答 |
| 📚 多格式文档支持 | 支持 PDF、Word、PPT、Markdown、TXT 等多种文档格式 |
| 🔍 语义向量检索 | 使用 Milvus 向量数据库实现高效的语义相似度搜索 |
| ⚡ 智能文本切块 | 基于 LangChain4j 的递归分割,保持语义完整性 |
| 🔐 完整安全体系 | JWT 认证、邮箱验证、操作日志全覆盖 |
| 🐳 容器化部署 | 提供完整的 Docker Compose 配置,一键部署 |
用户提问 → 问题向量化 → Milvus检索相关文档 → 构建上下文 → DeepSeek生成答案 → 返回结果
- RAG 技术架构 - 检索增强生成,提供有据可依的精准回答
- 多轮对话支持 - 保留对话上下文,实现连贯交流
- 来源引用 - 回答附带知识来源,支持溯源验证
- Markdown 渲染 - 支持代码高亮、表格等富文本展示
- 多格式解析 - 支持 PDF、DOCX、DOC、PPT、PPTX、MD、TXT 等格式
- 智能切块 - LangChain4j 递归分割,保持语义完整性
- 分类管理 - 灵活的知识分类体系,便于组织管理
- 批量操作 - 支持批量上传、删除等操作
- 用户认证 - JWT Token 认证机制,安全可靠
- 邮箱验证 - 注册/找回密码邮箱验证码支持
- 角色权限 - 用户/管理员角色区分
- 操作日志 - 完整的操作审计日志记录
- 配置中心 - 可视化参数配置,无需重启
- 数据统计 - 问答统计、用户统计等数据分析
- 系统监控 - API 响应时间、调用频率监控
- 接口限流 - 内置请求频率限制,防止滥用
| 格式 | 扩展名 | 解析引擎 | 说明 |
|---|---|---|---|
.pdf |
Apache PDFBox 3.0 | 支持文本型 PDF | |
| Word | .docx, .doc |
Apache POI 5.2 | 支持 Office 文档 |
| PPT | .pptx, .ppt |
Apache POI 5.2 | 提取幻灯片文本 |
| Markdown | .md |
Flexmark | 保留结构信息 |
| 纯文本 | .txt |
Java Native | 通用文本格式 |
| 环境 | 版本要求 | 说明 |
|---|---|---|
| JDK | 17+ | 后端运行环境 |
| Node.js | 18+ | 前端构建环境 |
| Docker | 20.10+ | 容器化部署(推荐) |
| PostgreSQL | 15+ | 关系型数据库 |
| Milvus | 2.3+ | 向量数据库 |
# 1. 克隆项目
git clone https://github.com/1na-ko/EchoCampus-Bot.git
cd EchoCampus-Bot
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入 API 密钥等配置
# 3. 启动所有服务
docker-compose -f docker-compose.dev.yml up -d
# 4. 查看服务状态
docker-compose ps点击展开手动安装步骤
# 启动 PostgreSQL
docker run -d --name echocampus-postgres \
-e POSTGRES_DB=echocampus_bot \
-e POSTGRES_USER=echocampus \
-e POSTGRES_PASSWORD=your_password \
-p 5432:5432 postgres:15
# 启动 Milvus(参考官方文档)
# https://milvus.io/docs/install_standalone-docker.mdcd backend
# 配置数据库连接(编辑 application-dev.yml)
# 构建并运行
./mvnw clean package -DskipTests
java -jar target/echocampus-bot-1.0.0.jar --spring.profiles.active=devcd frontend
# 安装依赖
pnpm install
# 开发模式运行
pnpm dev
# 生产构建
pnpm build运行本项目需要配置以下 API 服务:
| 服务 | 用途 | 获取方式 |
|---|---|---|
| 阿里云百炼 | 文本向量化 (Qwen3-Embedding) | 百炼控制台 |
| DeepSeek | 大语言模型 | DeepSeek 平台 |
在 .env 文件中配置:
# AI 服务配置
ALIYUN_API_KEY=your_aliyun_api_key
DEEPSEEK_API_KEY=your_deepseek_api_key- 访问系统: 打开浏览器访问
http://localhost:5173(开发模式)或http://localhost(Docker 部署) - 注册账号: 填写用户名、邮箱完成注册
- 上传知识: 进入知识库管理,上传文档
- 开始对话: 在聊天界面提问,获取智能回答
┌─────────────────────────────────────────────────────────────────────┐
│ 用户界面 (Vue.js 3) │
│ 聊天交互 │ 知识库管理 │ 用户中心 │ 系统设置 │
└──────────────────────────────┬──────────────────────────────────────┘
│ RESTful API
┌──────────────────────────────▼──────────────────────────────────────┐
│ 后端服务 (Spring Boot 3) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 问答服务 │ │ 知识服务 │ │ 用户服务 │ │ 系统服务 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
└───────┼─────────────┼─────────────┼─────────────┼───────────────────┘
│ │ │ │
┌───────▼─────────────▼─────────────▼─────────────▼───────────────────┐
│ 数据存储层 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ PostgreSQL │ │ Milvus │ │
│ │ • 用户数据 │ │ • 文档向量 │ │
│ │ • 对话历史 │ │ • 语义索引 │ │
│ │ • 知识元数据 │ │ │ │
│ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌──────────────────────────────▼──────────────────────────────────────┐
│ AI 服务层 │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ 阿里云百炼平台 │ │ DeepSeek │ │
│ │ Qwen3-Embedding │ │ deepseek-chat │ │
│ │ 文本向量化 (1024维) │ │ 答案生成 │ │
│ └─────────────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
| 🖥️ 前端 | ⚙️ 后端 | 💾 数据存储 | 🤖 AI 服务 |
|---|---|---|---|
|
|
|
|
|
EchoCampus-Bot/
├── 📁 backend/ # 后端 Spring Boot 项目
│ ├── src/main/java/ # Java 源代码
│ │ └── com/echocampus/bot/
│ │ ├── config/ # 配置类 (Security, AI, Milvus等)
│ │ ├── controller/ # RESTful 控制器
│ │ ├── service/ # 业务服务层
│ │ ├── mapper/ # MyBatis 数据访问层
│ │ ├── entity/ # 实体类
│ │ ├── dto/ # 数据传输对象
│ │ ├── parser/ # 文档解析器
│ │ └── utils/ # 工具类
│ ├── src/main/resources/ # 配置文件
│ └── pom.xml # Maven 配置
│
├── 📁 frontend/ # 前端 Vue.js 项目
│ ├── src/
│ │ ├── api/ # API 接口封装
│ │ ├── components/ # 公共组件
│ │ ├── views/ # 页面视图
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── router/ # 路由配置
│ │ └── utils/ # 工具函数
│ ├── package.json # 依赖配置
│ └── vite.config.ts # Vite 构建配置
│
├── 📁 docs/ # 项目文档
│ ├── 项目结构设计书.md # 完整技术架构文档
│ ├── deployment/ # 部署文档
│ ├── development/ # 开发文档
│ └── reference/ # 参考资料
│
├── 🐳 docker-compose.dev.yml # 开发环境 Docker 配置
├── 🐳 docker-compose.prod.yml # 生产环境 Docker 配置
├── 📄 .env.example # 环境变量模板
└── 📄 README.md # 项目说明 (本文件)
📖 详细结构说明: 请参阅 项目结构设计书
| 文档 | 描述 |
|---|---|
| 📐 项目结构设计书 | 完整的系统架构、数据库设计、API 规范 |
| 🚀 快速部署指南 | 本地开发和生产环境部署说明 |
| ⚙️ 环境变量配置 | 环境变量详细说明 |
| 🧪 测试代码说明 | 测试架构与运行指南 |
| 🔍 知识库检索增强 | RAG 技术实现说明 |
启动后端服务后,访问 Swagger 文档:
- 开发环境:
http://localhost:8083/doc.html - 生产环境:
http://your-domain/api/doc.html
我们欢迎任何形式的贡献!无论是报告问题、提出建议还是提交代码。
- Fork 本仓库
- 创建 特性分支 (
git checkout -b feature/AmazingFeature) - 提交 更改 (
git commit -m 'Add some AmazingFeature') - 推送 到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
- 后端遵循 阿里巴巴 Java 开发手册
- 前端遵循 Vue.js 风格指南
- 提交信息遵循 Conventional Commits
- 🐛 Bug 报告: 请使用 Bug 报告模板,提供详细的复现步骤
- 💡 功能建议: 请描述您期望的功能和使用场景
- 📖 文档改进: 欢迎指出文档中的错误或不清晰之处
- 🧠 RAG 智能问答核心功能
- 📚 多格式文档解析与向量化
- 🔐 用户认证与权限管理
- 🐳 Docker 容器化部署
- 📧 邮箱验证码功能
- 🔄 流式响应 (SSE)
- 🌐 多语言支持
- 📱 移动端适配
- 🔌 插件系统
- 📊 高级数据分析仪表板
💬 有新功能建议?欢迎 提交 Issue!
如果您在使用过程中遇到问题,可以通过以下方式获取帮助:
- 📖 查阅 项目文档
- 🔍 搜索 已有 Issues
- ❓ 提交 新 Issue
- 💬 参与 Discussions
本项目采用 GNU General Public License v3.0 开源。
GPL-3.0 是一个强 Copyleft 许可证,要求衍生作品也必须以相同的许可证开源。
感谢以下开源项目和服务:
- Spring Boot - 后端框架
- Vue.js - 前端框架
- LangChain4j - LLM 应用框架
- Milvus - 向量数据库
- Apache PDFBox - PDF 解析
- Apache POI - Office 文档解析
- 阿里云百炼 - Embedding 服务
- DeepSeek - LLM 服务
如果这个项目对您有帮助,请给我们一个 ⭐ Star!
Made with ❤️ by EchoCampus Team from Shanghai Institute of Technology



