多租户 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.java → dimension(2048)
  2. DashScopeEmbeddingProperties.java → Options.dimensions
  3. 删除旧 Collection :docker compose down -v && docker compose up

日志

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

前端项目

配套后端:multi-tenant-knowledge

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


相关推荐
EatFan1 小时前
AI 从「能生成」到「能交付」:2026年9月智能体(Agentic)成为产业主线的多源证据与开发者应对清单
人工智能·大模型·rag·智能体·mcp·agentic ai
苏supper3 小时前
Spring Boot多环境配置与打包运行
spring boot·后端·spring
Alice-YUE8 小时前
向量数据库选型实战:Chroma/Qdrant/Milvus/PgVector 怎么选
数据库·milvus·向量数据库·chroma·rag·qdrant
wang_shu_mo_ran10 小时前
Spring IoC和DI概念篇
java·后端·spring
驭渊的小故事11 小时前
MyBatis 入门:从 JDBC 到优雅操作数据库(一)
笔记·sql·spring
AI你一生一世12 小时前
当广告采集器成为大模型的“眼睛“:跨站上下文注入的架构与代价
人工智能·架构·大模型·rag·隐私安全·上下文注入·跨站追踪
萧瑟余晖12 小时前
Spring IoC容器与Bean生命周期详解
spring
Wx-bishekaifayuan12 小时前
springboot房屋租赁系统11574-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·sql·spring·课程设计
AI你一生一世13 小时前
Attention is all you have:当上下文成为唯一的护城河
人工智能·大语言模型·注意力机制·rag·长上下文·上下文窗口·推理成本
OxYGC1 天前
[AI工程] Spring AI 第廿一篇:存量 REST 接口的 MCP 化改造实录——工具从哪条路径注册、参数描述怎么写、身份怎么过去
java·人工智能·spring