企业级多租户 RAG 知识库问答平台
基于 Vue 3、Spring Boot 与 FastAPI 构建的企业级多租户 RAG 平台,覆盖权限隔离、RabbitMQ 异步入库、OCR 与表格清洗、父子分块、Milvus/Chroma 向量检索、MySQL 关键词召回、Query Rewrite、rerank、引用溯源、SSE 流式回答及离线质量门禁。
## 项目定位 这是一个面向企业内部资料问答场景的多租户 RAG 知识库平台。项目不是单一聊天界面,而是将租户与权限、文档上传、异步解析、OCR、父子分块、Embedding、向量与关键词混合检索、rerank、证据引用、流式回答、质量评测和容器化部署串成完整工程链路。 根据当前 Git 仓库记录,项目从 **2026 年 6 月 4 日**进入可追溯开发阶段。更早的构思或本地实验没有提交记录,因此本文时间线以 Git 可验证日期为准。 ## 总体架构 系统采用三层职责划分: - **Vue 3 前端**:负责知识库管理、文件上传、模型配置、会话管理、流式问答和引用证据展示。 - **Spring Boot 业务中台**:负责 Sa-Token 登录鉴权、租户成员关系、知识库权限、文档元数据、聊天记录、Redis 限流与缓存、RabbitMQ 任务投递和 FastAPI 调用编排。 - **FastAPI RAG 服务**:负责文档解析、OCR、清洗切片、Embedding、Chroma/Milvus 向量入库、MySQL 关键词检索、混合召回、父块扩展、rerank 和答案生成。 Docker Compose 统一编排 MySQL、Redis、RabbitMQ、Milvus、Spring Boot、FastAPI、独立 Worker 和前端容器,并配置健康检查、服务依赖和资源限制。 ## 文档入库链路 上传接口只负责权限校验、文件保存、元数据入库和 RabbitMQ 任务投递。FastAPI Worker 在后台完成 PDF、Word、CSV、Excel、图片等文件的解析,对扫描 PDF 和图片型文档执行 OCR,再进行文本清洗、结构识别和父子分块。 child chunk 用于精确检索,parent chunk 用于补充完整上下文。每个切片保留 tenant、知识库、文档、文件名、页码、章节标题、章节路径、父块、表格 sheet 和行区间等 metadata。入库同时写入 MySQL chunk 表和 Chroma/Milvus,任务状态通过回调同步到 Java 业务层。 表格类文档采用按行区间组织的结构化切片,PDF 清洗会识别重复页眉页脚等边缘噪声,切片还保存内容哈希、字符数和行数,便于去重、定位和回归验证。 ## 检索与回答链路 用户问题先经过 Query Rewrite,将多轮对话中的指代改写为独立检索问题。检索链路并行执行向量召回和 MySQL FULLTEXT 关键词召回;FULLTEXT 不可用或结果不足时使用 LIKE 兜底,同时利用文件名、章节标题、路径、关键词、sheet 和行范围等 metadata 扩展候选。 多路候选经过分数归一化和融合,命中 child chunk 后按 parent_id 回表扩展上下文,再统一执行 rerank。低于可信阈值的证据不会进入生成上下文;回答返回 citations 与 trace,前端可以查看来源文件、页码、命中片段、相关度及检索耗时。 多知识库查询只执行一次 Query Rewrite,并在各知识库候选合并后统一 rerank,避免重复模型调用。向量库实例、生成链和缓存均设置容量上限,降低长期运行时的内存增长。 ## 多租户、安全与稳定性 Java 侧不会直接相信前端传入的租户 Header,而是结合登录用户和成员关系表进行二次校验;业务表、文档任务、检索请求和向量 collection 都携带租户与知识库边界。FastAPI 作为内部服务,其 RAG 与文档接口要求内部令牌,避免前端绕过业务网关直接调用。 用户密码采用 BCrypt;默认演示账号关闭;基础设施端口默认仅绑定本机;Nginx 配置安全响应头。RabbitMQ 使用 prefetch、并发限制、最大重试和死信队列控制异常文件;入库按 tenantId、kbId、docId 幂等覆盖,避免重复消息生成重复向量。 Spring Boot 使用 Resilience4j 处理下游异常,Redis 提供限流与 FAQ 缓存。FastAPI 和 Worker 配置低并发默认值、周期 GC 与内存回收策略,适配资源有限的 Docker 环境。 ## 质量评测与持续回归 项目提供独立的检索评测工具,Gold Set 可以按 docId、chunkId、parentId、文件名、章节标题和文本片段定义期望证据,输出 Recall@K、Precision@K、MRR、NDCG、无答案误召率、平均延迟、P95 延迟和失败诊断。 GitHub Actions 会执行评测单测、样例回归门禁和报告导出;通用 JSONL 可通过可选桥接工具接入 Future AGI。评测工具与生产 RAG 主链路解耦,不要求线上容器安装额外 SDK。 ## 工程结果 项目形成了从企业权限边界、文档异步入库、复杂文档清洗、混合召回、引用溯源到持续评测的闭环。核心实现和版本演进均可在 GitHub 仓库中查看,各 `0.1.x` 阶段的实际变更按 Git 提交时间整理在下方项目日志中。
- 多租户与知识库双重隔离
- RabbitMQ 异步解析和幂等入库
- PDF/Word/Excel/OCR 结构化清洗
- Parent-Child Chunk
- 向量与关键词混合召回
- Query Rewrite 与统一 rerank
- 引用证据和 trace
- 低内存运行优化
- Recall/MRR/NDCG 质量门禁
- Future AGI 可选评测桥接
- Docker Compose 全栈部署
开发记录
- v0.1.0:企业级 RAG 平台基础架构:
- v0.1.1:可信证据兜底与检索评测:
- v0.1.2:流式回答正文恢复:
- v0.1.3:SSE 正常结束识别:
- v0.1.4:容器内存与 GC 优化:
- v0.1.5:召回率与运行安全增强:
- v0.1.6:质量门禁与证据追踪:
- v0.1.7:内部接口安全边界:
- v0.1.8:前端性能与 Docker 部署完善:
- v0.1.9:低内存多知识库检索:
- v0.1.10:文档清洗与元数据召回:
- v0.1.11-v0.1.12:项目沉淀与评测工程化: