# multi-tenant-knowledge **Repository Path**: CoderChange/multi-tenant-knowledge ## Basic Information - **Project Name**: multi-tenant-knowledge - **Description**: # 多租户企业知识库助手(MVP) > 基于 Spring Boot 4.0.5 + Spring AI 2.0.0 + Milvus 的多租户 RAG 知识库 > 侧重:数据处理流水线 + 向量库隔离 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-07-09 - **Last Updated**: 2026-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多租户企业知识库助手 基于 Spring Boot 4.0.5 + Spring AI 2.0.0 + Milvus 的多租户 RAG 知识库系统。 ## 技术栈 | 组件 | 选型 | |------|------| | 后端 | 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 修复) ## 效果图
登录页 工作台
文档管理 知识问答(流式)
用量概览 账单明细
## 快速启动 ### 方式一:使用 `.env` 文件(推荐) ```bash # 1. 启动依赖(MySQL + Milvus) docker compose up -d # 2. 复制环境变量模板并编辑 cp .env.example .env # 修改 .env:填入 DEEPSEEK_API_KEY 和 ARK_API_KEY # 3. 运行 mvn spring-boot:run ``` ### 方式二:直接 export 环境变量 ```bash export DEEPSEEK_API_KEY=sk-your-deepseek-key export ARK_API_KEY=ark-your-ark-key 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_KEY` | ✅ | DeepSeek API 密钥 | | `ARK_API_KEY` | ✅ | 火山引擎 ARK API 密钥(Embedding) | | `DEEPSEEK_BASE_URL` | ❌ | DeepSeek 服务地址,默认 `https://api.deepseek.com` | | `ARK_BASE_URL` | ❌ | 火山引擎服务地址,默认 `https://ark.cn-beijing.volces.com` | | `JWT_SECRET` | ❌ | JWT 签名密钥(生产环境务必修改) | | `MILVUS_HOST` | ❌ | Milvus 地址,默认 `localhost` | | `MILVUS_PORT` | ❌ | Milvus 端口,默认 `19530` | > 敏感配置统一走环境变量,**不要写入 `application.yml` 或提交到仓库**。推荐使用项目根目录 `.env` 文件管理,应用启动时会自动加载。 ### `.env` 使用说明 ```bash # 1. 复制模板 cp .env.example .env # 2. 编辑 .env 填入真实值 # DEEPSEEK_API_KEY=sk-xxxx # ARK_API_KEY=ark-xxxx # 3. 启动(自动读取 .env) mvn spring-boot:run ``` ## 向量维度变更 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-frontend](https://gitee.com/CoderChange/multi-tenant-knowledge-frontend) --- ## 联系 公众号 扫码关注公众号,获取更多技术分享与项目动态 技术交流 / 商业合作,请备注"知识库" ## License MIT