多租户 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


相关推荐
Rain的Java大神之路1 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
Komorebi_99999 小时前
提示词工程
rag·提示词工程
AI人工智能+电脑小能手9 小时前
大白话说Java设计模式-26-策略模式(业务实战篇)
java·spring·设计模式·策略模式·支付系统·算法切换
刀锋000111 小时前
Java 工程师转 AI Agent 最短路径:用 Spring 的思维理解 Spring AI 2.0(附 LangChain4j 对照)
java·人工智能·spring boot·spring·ai agent
重生之我是Java开发战士12 小时前
【Java EE】Spring AOP :面向切面编程
java·spring·java-ee
凤山老林12 小时前
基于 Spring Batch 的海量数据迁移与批处理架构:分片、容错与断点续跑
java·spring boot·spring·架构·spring batch
gis开发之家13 小时前
Spring Boot 4 深度解析——参数接收大全:@RequestParam、@PathVariable、@RequestBody
java·spring boot·后端·spring
(轻舟已过万重山)13 小时前
D1 · 融合蓝图:Spring AI + 虚拟线程 + 服务网格——现代后端统一底座
java·人工智能·spring
TizzyGoodhealth14 小时前
从零到一搭建Spring‑AI原生Tool‑Calling AI Agent|架构对比+完整实战源码+踩坑实录
java·ai·知识库·rag·ai agent·spring ai