基于微服务架构的AI智能客服系统:从传统客服到智能问答的完整解决方案
项目简介
AI智能客服系统是一个基于微服务架构的企业级智能客服平台,集成了大语言模型(LLM)、知识库检索(RAG)、工单管理等核心功能,为企业提供从传统人工客服到AI智能问答的完整解决方案。项目采用前后端分离架构,后端基于Spring Boot 3.x + Spring Cloud Gateway,前端使用Vue 3 + Element Plus,支持多租户、多会话隔离,具备高可扩展性和高可用性。
核心特性
🤖 AI智能对话
- 基于大语言模型的智能问答,支持上下文会话管理
- 意图识别与智能路由,自动判断用户需求
- Function Call工具调用,支持扩展AI能力
- 多轮对话记忆管理,Redis持久化存储
📚 知识库检索(RAG)
- 传统FAQ管理:支持FAQ的增删改查、分类管理
- RAG检索增强生成 :
- 多格式文档支持:PDF、TXT、DOCX、MD
- 智能文本切片:可配置chunkSize和overlap参数
- 向量化存储:支持Chroma(本地开发)和Milvus(生产环境)
- 两阶段检索:向量召回 + Rerank重排,提升检索精度
- 多用户会话隔离:基于Redis的对话记忆管理
- 防幻觉机制:自定义Prompt模板,确保回答准确性
🎫 工单系统
- 智能工单创建与流转管理
- 工单状态跟踪:待处理、处理中、已完成、已关闭
- 工单分配与优先级管理
- 工单统计与报表
💬 实时通信
- 基于WebSocket的即时消息推送
- 支持在线客服聊天
- 消息广播与群发功能
- 连接状态管理
👥 客户管理
- 完整的客户信息管理系统
- 客户标签与分组
- 客户画像与行为分析
- 坐席账号管理
技术架构
系统架构图
┌─────────────────────────────────────────────────────────────┐
│ 前端层 (Vue3) │
│ ai-cs-frontend │
└──────────────────────┬──────────────────────────────────────┘
│ HTTP/WebSocket
┌──────────────────────▼──────────────────────────────────────┐
│ 网关层 (Gateway) │
│ ai-cs-gateway :8080 │
│ 路由转发 | 负载均衡 | 鉴权 | 限流 │
└──┬──────────┬──────────┬──────────┬──────────┬─────────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│基础服务│ │AI代理 │ │知识库 │ │工单服务│ │WebSocket│
│:9001 │ │:9002 │ │:9003 │ │:9004 │ │:9005 │
└────────┘ └────────┘ └────────┘ └────────┘ └────────┘
│ │ │ │ │
└──────────┴──────────┼──────────┴──────────┘
│
┌──────────▼──────────┐
│ 公共模块 (Common) │
│ Feign API (API) │
└─────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌──────────┐
│ MySQL │ │ Redis │ │ Milvus │
│ 主数据库 │ │ 缓存 │ │向量数据库│
└─────────┘ └──────────┘ └──────────┘
技术栈
后端技术:
- Java 17 + Spring Boot 3.2.0
- Spring Cloud Gateway(微服务网关)
- MyBatis Plus 3.5.5(ORM框架)
- MySQL 8.0+(关系型数据库)
- Redis 6.0+(缓存数据库)
- Milvus 2.x / Chroma(向量数据库)
- LangChain4j 0.32.0(Java版LLM应用框架)
- Ollama(本地大模型服务)
- WebSocket(实时通信)
前端技术:
- Vue 3.x(前端框架)
- Vite 4.x(构建工具)
- Element Plus(UI组件库)
- Axios(HTTP客户端)
- Vue Router 4.x(路由管理)
AI/ML技术:
- LLM集成(通义千问、ChatGLM等)
- RAG检索增强生成
- Embedding向量化(nomic-embed-text)
- 重排模型(BGE-Reranker)
模块介绍
核心服务模块
| 模块 | 端口 | 职责 |
|---|---|---|
| ai-cs-gateway | 8080 | API网关、路由转发、鉴权、限流 |
| ai-cs-base-service | 9001 | 客户管理、坐席管理、会话管理 |
| ai-cs-ai-agent | 9002 | AI对话、意图识别、LLM调用 |
| ai-cs-knowledge | 9003 | 知识库管理、RAG检索、向量存储 |
| ai-cs-workorder | 9004 | 工单管理、工单流转 |
| ai-cs-websocket | 9005 | 实时通信、消息推送 |
| ai-cs-job | - | 定时任务、数据统计 |
公共模块
- ai-cs-common:通用工具类、常量、DTO、异常处理、统一返回结果封装
- ai-cs-api:Feign客户端接口定义、服务间通信DTO
前端应用
- ai-cs-frontend:Vue3 + Element Plus用户界面,包含聊天、客户管理、知识库、工单管理等页面
RAG系统详解
RAG工作流程
用户提问
↓
文本向量化(Embedding)
↓
向量相似度检索(Chroma/Milvus)
↓
Rerank重排优化(BGE-Reranker)
↓
检索相关文档片段
↓
构建Prompt(包含检索到的上下文)
↓
LLM生成答案
↓
返回用户
RAG核心配置
yaml
rag:
ollama:
base-url: http://localhost:11434
llm-model: qwen:7b # 对话模型
embedding-model: nomic-embed-text # 向量模型
rerank-model: bge-reranker:latest # 重排模型
temperature: 0.1
chroma:
base-url: http://localhost:8000
collection-name: private_knowledge_base
split:
chunk-size: 500 # 文本切片大小
chunk-overlap: 80 # 切片重叠字符数
retrieve:
top-k: 5 # 初次检索返回数量
rerank-top-k: 3 # 重排后保留数量
chat-memory:
ttl: 604800 # 对话记忆过期时间(7天)
RAG API接口
POST /api/rag/upload/pdf- 上传PDF文档入库POST /api/rag/upload/file- 上传普通文件入库POST /api/rag/chat- 智能问答(支持多轮对话)POST /api/rag/memory/clear/user- 清空单用户记忆POST /api/rag/memory/clear/all- 清空全部记忆
文档版本管理(新增功能)
系统新增了文档版本管理功能,支持文档的版本跟踪、回退和对比:
核心功能
- 版本创建:每次上传文档自动创建新版本记录
- 版本查询:查看文档的所有历史版本
- 版本回退:一键回退到任意历史版本
- 版本对比:基于MD5和文件大小对比版本差异
- 内容去重:通过MD5检测重复文档
版本管理API
GET /api/document/version/list- 获取所有文档列表GET /api/document/version/versions/{documentId}- 获取文档的所有版本POST /api/document/version/rollback- 回退到指定版本DELETE /api/document/version/delete/{id}- 删除指定版本GET /api/document/version/compare- 比较两个版本
快速开始
环境要求
- JDK 17+
- Maven 3.6+
- MySQL 8.0+
- Redis 6.0+
- Node.js 16+(前端开发)
- Ollama(RAG功能)
- Chroma/Milvus(向量数据库)
启动步骤
- 克隆项目
bash
git clone https://gitlab.com/WongHui/ai-cs-parent.git
cd ai-cs-parent
- 初始化数据库
sql
CREATE DATABASE ai_cs_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql -u root -p ai_cs_db < docs/database/init.sql
- 启动RAG前置服务
bash
# 拉取Ollama模型
ollama pull qwen:7b
ollama pull nomic-embed-text
ollama pull bge-reranker:latest
# 启动Chroma
chroma run --path ./chroma-db
- 编译项目
bash
mvn clean install -DskipTests
- 启动后端服务
bash
# 按顺序启动各微服务
cd ai-cs-gateway && mvn spring-boot:run
cd ai-cs-base-service && mvn spring-boot:run
cd ai-cs-ai-agent && mvn spring-boot:run
cd ai-cs-knowledge && mvn spring-boot:run
cd ai-cs-workorder && mvn spring-boot:run
cd ai-cs-websocket && mvn spring-boot:run
- 启动前端服务
bash
cd ai-cs-frontend
npm install
npm run dev
应用场景
1. 企业客服中心
- 7x24小时智能问答,减少人工客服压力
- 知识库自动更新,保持信息同步
- 工单智能分配,提高处理效率
2. 技术支持系统
- 技术文档智能检索
- 问题自动诊断与解决方案推荐
- 多轮对话引导问题解决
3. 内部知识管理
- 企业文档集中管理
- 智能搜索与问答
- 版本控制与历史追溯
4. 在线教育平台
- 课程资料智能检索
- 学习问题智能解答
- 个性化学习路径推荐
项目亮点
1. 微服务架构
- 服务独立部署,易于扩展
- 故障隔离,提高系统可用性
- 技术栈灵活,便于技术升级
2. RAG技术落地
- 结合向量检索与大语言模型
- 两阶段检索优化,提升准确率
- 支持多种文档格式,适用性广
3. 文档版本管理
- 完整的版本追溯机制
- 一键回退,降低运维成本
- MD5去重,避免重复存储
4. 多用户会话隔离
- 基于Redis的对话记忆管理
- 支持多用户并发访问
- 会话过期自动清理
5. 高可扩展性
- 支持水平扩展
- 无状态服务设计
- 可集成消息队列解耦
部署架构
开发环境
本地运行各微服务,使用localhost访问
生产环境(推荐)
┌─────────────┐
│ Nginx LB │
└──────┬──────┘
│
┌────────────┼────────────┐
│ │ │
┌─────▼─────┐ ┌───▼────┐ ┌────▼─────┐
│ Gateway 1 │ │ GW 2 │ │ GW 3 │
└─────┬─────┘ └───┬────┘ └────┬─────┘
│ │ │
└────────────┼────────────┘
│
┌────────────┼────────────┐
│ │ │ │
各微服务集群 Redis集群 MySQL主从 Milvus/Chroma集群
安全设计
- 网关鉴权:所有请求经过网关进行身份验证
- 密码加密:坐席密码使用BCrypt加密存储
- HTTPS:生产环境使用HTTPS协议
- SQL注入防护:使用MyBatis Plus参数化查询
- XSS防护:前端输入过滤和转义
- CSRF防护:Token验证机制
性能优化
- Redis缓存:热点数据缓存,减少数据库查询
- 数据库索引:合理设计索引,优化查询性能
- 连接池:使用HikariCP数据库连接池
- 异步处理:耗时操作异步执行
- 分页查询:大数据量使用分页
- 向量检索优化:Milvus索引加速相似度搜索
监控与日志
- Spring Boot Actuator:健康检查和指标监控
- 日志收集:统一日志格式,支持ELK分析
- 链路追踪:集成Sleuth/Zipkin(可选)
- 告警机制:关键指标异常告警
项目地址
- GitLab : https://gitlab.com/WongHui/ai-cs-parent
- 维护者: Wong Hui
- 许可证: MIT License
总结
AI智能客服系统是一个功能完善、架构合理的企业级智能客服解决方案。通过集成RAG技术、文档版本管理等先进功能,为企业提供了从传统客服到智能问答的完整升级路径。项目采用微服务架构,具备高可扩展性和高可用性,适合各种规模的客服场景。
无论是企业客服中心、技术支持系统,还是内部知识管理平台,该系统都能提供强大的智能问答能力和完善的管理功能,帮助企业提升客服效率,降低运营成本。
欢迎Star、Fork和贡献代码!