多租户企业知识库助手
基于 Spring Boot 4.0.5 + Spring AI 2.0.0 + Milvus 的多租户 RAG 知识库系统。
配套前端: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 模型升级时需同步修改:
MilvusConfig.java→dimension(2048)DashScopeEmbeddingProperties.java→Options.dimensions- 删除旧 Collection :
docker compose down -v && docker compose up
日志
- 位置:
logs/application.log - 保留:7 天
- 单文件:最大 1MB
- 格式:含
tenantIdMDC 变量
前端项目
配套前端:multi-tenant-knowledge-frontend