Skip to content

RAG 平台技术方案提炼与使用边界 ​

来源:本机收到的《RAG平台技术方案(2).docx》。本文是提炼笔记,不复制原始文件;原始文件仍留在接收目录,不纳入 Git。

使用边界: 方案能证明“某系统这样设计过”,不能自动证明“我负责实现过”。用于面试前,必须逐项确认本人职责、实际部署组件、真实故障和可核实指标;无法确认的内容只能作为学习材料和追问准备,不能写进简历或说成个人产出。

结论:放在哪里 ​

这份材料应放在私有面试准备站,以本页这样的“提炼与核对”形式保存;不应将原始 .docx 或带平台名称、认证集成细节、具体接口和缺陷记录的内容放进公开的 fullstack-road。

公开知识站已经有 RAG 入库、解析、权限、可靠性和评测的通用文章。后续只在去掉来源身份、平台名、接口路径和未验证事实后,把真正缺失的通用机制补到对应专题中。

一页架构 ​

文档描述的是一个多租户 RAG 平台,而不只是一个“上传文件后问答”的 Demo:

它将同步 API 和重任务分开:API 处理身份、知识库与文档元数据;文档 Worker 处理转换、解析、分块、图生文和向量写入;对象存储保存可重建的原始资源;关系库保存可管理状态;检索引擎保存召回索引。

文档中真正有价值的设计点 ​

主题方案中的做法面试时可讲的工程判断
多租户边界知识库分个人、组织、公开三种可见性;组织与公开库关联不同 API Key权限必须进入数据模型和检索过滤,不能只由前端隐藏按钮
知识库层级公开知识库支持父子树,并在修改父级时排除自身及子树树结构必须防循环;可见性转换会影响授权关系,不能只是改枚举值
异步入库上传后创建文档记录,提交事务后由 Celery Worker 执行解析、图生文、向量化与状态更新先让数据库记录落地,再投异步任务;任务状态才是重试、进度和恢复的依据
文档生命周期embedding → success / error,文档、段落、图片和对象存储资源有关联状态要区分处理中与失败;删除和重建不能让半成品进入检索
多格式解析DOCX/PDF/TXT/MD 走文本解析,PPTX/XLSX/CSV 按固有结构处理“支持格式”不等于读出纯文本;页码、标题、表头、幻灯片和工作表决定引用质量
层级与递归分块标题树优先;超长文本再按分隔符递归切分;支持 overlap先用结构保留条款上下文,再用窗口保证长度上限;规则要通过评测选择
多模态资源文档图片抽取为资源,插回 Markdown 引用;可调用 VLM 生成描述图像描述应保留来源与位置,作为检索补充,不能替代原始图像和原文
段落级维护段落可编辑、禁用、删除,并触发向量更新段落是检索最小单位;人工纠错必须同步内容、索引和文档统计

与现有项目答辩稿的对应关系 ​

当前的项目一深挖稿和项目一速成稿已经覆盖了异步入库、库级 RBAC、chunk、软删、引用和 SSE。此方案能补强的是下面这些追问,而不是替换已有主线。

DOCX、PDF、PPTX、XLSX/CSV 的具体解析、切分和引用定位策略已整理进项目一深挖稿的“多格式解析与分块”,速成版保留一条可背答案。

可补强的追问推荐说法先确认什么
为什么要区分个人、组织、公开知识库这是授权模型,不是 UI 分类;不同可见范围对应不同授予与继承规则项目是否真实存在三种范围;是否使用 API Key 映射
为什么解析器要按文件类型分派PDF、DOCX、表格、幻灯片的可引用结构不同,统一转纯文本会丢页码、标题和表头实际用过哪些解析库、能保留到什么定位粒度
为什么文档编辑后要重建向量检索索引是内容的派生数据,内容变了必须让旧向量失效或版本化重建实际采用同步重嵌入、异步任务还是版本切换
为什么删除不能只删数据库记录向量索引和对象存储还有副作用;需要状态机、异步清理和可恢复策略是否软删、是否有清理任务、失败时如何补偿
为什么任务在事务提交后才投递事务未提交就被 Worker 读取,可能读不到文档或拿到不完整关系实际框架的提交后回调、Outbox 或补偿扫描方式

方案中需要主动质疑的地方 ​

这份方案是很好的学习来源,但有些描述不能直接照搬成“最佳实践”:

  1. 跨 MySQL、Elasticsearch 和对象存储的删除不是单一事务。 文档列出级联删除顺序,但没有说明失败补偿、重试、审计和幂等键。真实实现需要 Outbox、可重放删除任务或明确的清理状态。
  2. 知识库名称“系统全局唯一”未必适合多租户。 多数产品只要求同一租户或同一父节点内唯一;是否全局唯一是产品规则,不能当技术必然。
  3. 段落更新的图片关联已明确存在一致性缺陷。 文本中删掉图片引用没有解除图片关系,取消更新也可能留下孤儿关系。这正说明富文本资源应当从文本解析出引用集合,再在一个事务中做差量同步。
  4. “Elasticsearch 是向量数据库”说得太粗。 面试要追问向量字段映射、过滤条件下推、索引版本、相似度度量、召回不足和文本检索是否并行;文档没有给出这些关键细节。
  5. 图生文不能默认开启。 它增加成本、延迟、隐私面和幻觉风险。应按文档类型、图片价值和评测结果决定,并保留“这是模型描述”的标记。
  6. embedding / success / error 状态过粗。 生产链路通常还需要排队、解析、切分、向量化、发布、取消和可重试失败原因,才能支持可观察恢复。

面试可用的三句话 ​

仅在你能确认系统确实如此实现、且该部分确为本人工作时使用:

  1. “我把原始文件、结构化元数据和检索索引分开管理:对象存储负责可重建源文件,关系库负责生命周期和权限,检索层只保存可替换的派生索引。”
  2. “多格式文档不能都按纯文本切;PDF 需要页码和目录,DOCX 需要标题和表格,Excel 与 PPT 更适合按工作表和页处理,这些定位信息最终决定引用能不能让用户复核。”
  3. “异步任务的可靠性不依赖队列永不丢消息,而依赖数据库中的文档状态可扫描、任务可重放、写入幂等;跨存储清理还要有补偿机制。”

下一步核实清单 ​

  • [ ] 这份方案对应的系统、时间和本人角色是什么?
  • [ ] 实际队列是 Celery 还是 ARQ,Broker 与结果状态分别放在哪里?
  • [ ] 实际检索是 Elasticsearch 向量、pgvector,还是两者并存?是否有关键词召回?
  • [ ] 支持的文件格式、解析库、页码/标题/表格定位能力分别是什么?
  • [ ] 图片抽取和 VLM 描述是否真的上线,成本与失败处理怎么做?
  • [ ] 删除、重嵌入和修改段落时,索引与对象存储如何对账?
  • [ ] 是否存在可展示的日志、迁移、任务状态、评测或接口证据?

在这些问题没有答案前,本页只用于补课和准备追问;项目经历仍以01 号答辩稿中已核实的事实为准。