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


相关推荐
budingxiaomoli9 小时前
Spring AOP
java·spring·java-ee
东莞市云毅网络有限公司1 天前
FAQ 覆盖度打分:TF-IDF 与向量嵌入双路召回的 Python 实现
python·数据清洗·rag·企业知识库·文档解析
wang_shu_mo_ran1 天前
MyBatis 从入门到进阶(一)
java·spring·mybatis
Flynn Liang1 天前
Rerank 与上下文工程:重排、压缩与引用溯源的收益边界
langchain·rag·langchain4j·rerank·上下文工程·引用溯源
瑞雪兆丰年兮1 天前
JavaWeb-day14-SpringBootWeb原理篇
java·开发语言·spring boot·spring·bean·mybatis·javaweb
Flynn Liang1 天前
RAG 评估体系:黄金集、检索指标与 LLM-as-Judge 落地
java·langchain·rag·评估·langchain4j·检索指标
nice_lcj5202 天前
【从零理解 Spring AI · 14】RAG 的四个环节:加载、切分、向量化、检索
java·spring boot·embedding·向量数据库·rag·spring ai·ai应用开发
典学长编程2 天前
RAG 进阶学习:索引构建阶段与检索增强阶段
向量数据库·rag·索引构建·文本向量化·mmr·索引增强·最大边际相关性
杨凯凡2 天前
Spring AI RAG 实战:向量检索、租户过滤、引用溯源与防幻觉边界
java·人工智能·spring