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


相关推荐
染指11102 小时前
70.高级RAG-混合检索器(BM25和向量检索,RRF、归一化分数、DBSF公式详解,融合排序)
rag·llama_index·llamaindex
zzzll11112 小时前
Spring Cloud 微服务:从入门到实践
spring·spring cloud·微服务
Devin~Y3 小时前
从本地生活电商到 AI RAG:互联网大厂 Java 面试场景完整实战
java·spring boot·redis·elasticsearch·spring cloud·kafka·rag
孙启超14 小时前
【AI应用开发】 RAG篇(四):Prompt 工程与进阶技术
人工智能·llm·embedding·rag·向量化·chunking·文档切分
都叫我大帅哥14 小时前
Spring Data JPA 查询之道:方法命名与示例查询完全指南
java·后端·spring
重庆小透明16 小时前
带你从不同视角了解三大MQ
java·学习·spring·kafka·rabbitmq·rocketmq
粗体鱼20 小时前
RAG/Agent 记忆混合检索多路召回:RRF 算法与Chunk RRF、Document RRF如何决策TopK
postgresql·milvus·es·rag·rff·mermory
lemon_sjdk21 小时前
Spring WebFlux 响应式编程深度解析:从架构选型到核心抽象
java·spring·架构
自强的小白1 天前
重点Springboot原理(起步原理和自动配置的两个实现方案)!
spring boot·spring
番茄炒鸡蛋加糖1 天前
Spring 事务传播机制 & 事务失效场景
java·后端·spring