多租户 RAG 知识库系统基于Spring Boot 4.0.5+Spring AI 2.0.0 + Milvus

多租户企业知识库助手

基于 Spring Boot 4.0.5 + Spring AI 2.0.0 + Milvus 的多租户 RAG 知识库系统。

配套后端:multi-tenant-knowledge

配套前端:multi-tenant-knowledge-frontend

技术栈

组件 选型
后端 Spring Boot 4.0.5 + Spring AI 2.0.0 + Spring Framework 7
数据库 MySQL 8.0(租户字段隔离)
向量库 Milvus 2.5(Partition Key 租户隔离)
ORM MyBatis Plus 3.5.16
LLM(Chat) DeepSeek deepseek-v4-pro(OpenAI 兼容协议)
Embedding 火山引擎 doubao-embedding-vision-251215(2048 维)

核心特性

  • RAG 数据处理流水线:上传 → SHA256 去重 → 解析 → 清洗 → 智能切分 → Embedding → Milvus 入库
  • 多租户隔离:JWT + ThreadLocal + Milvus Partition Key
  • 权限控制:RBAC(PLATFORM_ADMIN/ADMIN/EDITOR/USER/GUEST)
  • 配额计费:文档数/存储/月问答配额 + 按量计费(PRO ¥999/月)
  • 流式问答:SSE 支持 + 打字机效果(2026-07-05 修复)

效果图


登录页 工作台

复制代码
<td align="center"><b>文档管理</b></td>
<td align="center"><b>知识问答(流式)</b></td>

<td align="center"><b>用量概览</b></td>
<td align="center"><b>账单明细</b></td>

快速启动

bash 复制代码
# 1. 启动依赖(MySQL + Milvus)
docker compose up -d

# 2. 配置 API Key
export DEEPSEEK_API_KEY=sk-your-key
export ARK_API_KEY=ark-your-key

# 3. 运行
mvn spring-boot:run

测试账号

账号 密码 角色
admin admin123 ADMIN
user user123 USER
platform admin123 PLATFORM_ADMIN

接口示例

bash 复制代码
# 登录
curl -X POST http://localhost:8080/api/public/auth/login \
  -d '{"username":"admin","password":"admin123"}'

# 上传文档
curl -X POST http://localhost:8080/api/v1/documents \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@doc.pdf"

# 问答
curl -X POST http://localhost:8080/api/v1/chat/ask \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"question":"Spring AI 如何配置 Milvus?"}'

# 流式问答
curl -X POST http://localhost:8080/api/v1/chat/ask/stream \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"question":"Spring AI 如何配置 Milvus?"}'

项目结构

复制代码
src/main/java/com/example/knowledge/
├── config/           # 配置(AiConfig/MilvusConfig/SecurityConfig)
├── controller/       # REST 接口(Auth/Document/Chat/Billing)
├── service/          # 业务服务(文档处理/RAG问答/配额计费)
├── entity/           # 数据库实体
├── parser/           # 文档解析(PDF/Word/Excel/Markdown)
├── security/         # JWT 认证
├── tenant/           # 多租户上下文
├── aspect/           # AOP 审计日志
└── exception/        # 全局异常处理

关键配置

配置项 文件 说明
DeepSeek API application.yml spring.ai.openai.api-key
火山引擎 Embedding application.yml spring.ai.volcengine.embedding.*
套餐配额 application.yml billing.plans
Milvus 连接 MilvusConfig.java host/port/collection
JWT 密钥 JwtUtil.java SECRET 字段

向量维度变更

Embedding 模型升级时需同步修改:

  1. MilvusConfig.javadimension(2048)
  2. DashScopeEmbeddingProperties.javaOptions.dimensions
  3. 删除旧 Collectiondocker compose down -v && docker compose up

日志

  • 位置:logs/application.log
  • 保留:7 天
  • 单文件:最大 1MB
  • 格式:含 tenantId MDC 变量

前端项目

配套后端:multi-tenant-knowledge

配套前端:multi-tenant-knowledge-frontend


相关推荐
lisin-lee-cooper21 小时前
简单聊聊 Spring 框架源码
java·后端·spring
边境悍匪21 小时前
蜗牛学苑 Java 智能体学习 Day38|Spring AI Alibaba2 思维导图复盘
java·学习·spring
Wang's Blog1 天前
Java框架快速入门: Spring Security+OAuth2之自定义认证过滤器实现JSON登录
java·spring·json
Wang's Blog1 天前
Java框架快速入门: Spring Security+OAuth2之密码验证规则与自定义注解
java·数据库·spring
抠脚小弟1 天前
Spring Task 定时任务详解:从入门到实战
java·后端·spring
m0_587383001 天前
外卖CPS系统开发实战:从架构设计到运营落地全指南
java·spring·小程序·架构·需求分析
学编程就要猛1 天前
流式编程及Spring中SSE实现
java·后端·spring·流式编程
不才不才不不才1 天前
Spring 源码系列(27): @Transactional 七大失效场景与源码归因
java·后端·spring
AI-Frontiers1 天前
面向AIGC的检索增强生成综述
rag
抠脚小弟1 天前
WebSocketServer 使用详解:从入门到实战
java·spring·websocketserver