面试被问"设计一个企业级RAG知识库系统",我从文档解析的坑聊起拿到了Offer
上周面了一家做企业SaaS的公司,C轮融资,估值50亿,岗位是AI应用层后端架构师。 前两轮常规:分布式系统、微服务治理、数据库优化,答得中规中矩。 第三轮,CTO直接甩了一道2026年的新题型: "我们公司服务2000多家企业客户,每家都有海量内部文档——Word、PDF、Excel、PPT、甚至扫描件。设计一个企业级RAG知识库系统,要求:支持多格式文档解析、增量更新不重建、检索准确率>90%、响应延迟P99<2秒。"
我的切入角度:从"文档解析的坑"开始
我没有上来就画架构图。 先问了一句:"目前客户反馈最多的痛点是什么?" CTO说:"文档解析的准确率。尤其是那些图文混排的PDF和带复杂表格的Excel,解析出来全是乱的。" 我说:"那我从这个痛点切入。" RAG系统最被低估的环节,不是检索,不是生成,而是文档解析和分块策略。 大部分团队上来就关心用什么向量数据库、选什么Embedding模型。但实际上,你喂给系统的数据质量,决定了检索准确率的上限。Embedding模型再好,垃圾进垃圾出。
我的五层架构方案
第一层:文档解析引擎 这是整个系统的地基。
- 多格式支持:PDF用自研的版面分析模型(基于LayoutLMv3微调),识别标题、正文、表格、图片、页眉页脚;Word直接解析XML结构;Excel按Sheet+单元格结构化提取;扫描件走OCR(PaddleOCR,中英文混合场景准确率97%+)
- 表格还原:这是最大的坑。传统PDF解析把表格变成纯文本,行列关系全丢了。我们用一个两阶段方案——先用目标检测模型识别表格区域,再用图神经网络还原行列结构
- 图文关联:图片不直接进知识库,而是用多模态模型(GPT-4o)生成文字描述,再和上下文关联 "为什么不用LangChain的默认解析?" "LangChain的默认PDF解析就是按页切文本,遇到双栏排版、跨页表格就崩了。企业客户的文档复杂度远超你的想象——一份50页的技术规范可能有30个表格、50张图、8种字体。"
对了。顺嘴提一句,技术大厂,前后端-测试机会,全国一线及双线城市均有坑位,待遇和稳定性还不错,感兴趣看看。
第二层:智能分块策略
文档解析完之后,怎么切分成检索单元?
- 固定长度分块(baseline):512 token一块,50 token重叠。简单粗暴,但会切断语义
- 语义分块(进阶):用句子嵌入模型计算相邻句子的相似度,在相似度骤降的地方切分。保留了语义完整性
- 结构化分块(高级):根据文档的标题层级、章节结构来切分。每个chunk带有完整的层级路径(如"第三章>3.2节>性能指标") 最终方案是混合策略:先用结构化分块按章节切,如果单个章节超过1024 token,再用语义分块做二次切分。每个chunk保留元数据(来源文档、页码、章节路径、创建时间)。
第三层:向量化与检索
- Embedding模型:选BGE-M3,支持中英文混合,1024维向量,在C-MTEB基准测试中排名前三
- 向量数据库:Milvus 2.4,支持百亿级向量检索,HNSW索引,P99延迟<50ms
- 混合检索:向量检索(语义相似度)+ BM25(关键词匹配),权重7:3。纯向量检索的召回率约85%,加上关键词检索后提升到93%
- 重排序:检索后取Top-50,用Cross-Encoder(BGE-Reranker-v2)做精排,最终返回Top-5给生成模块
第四层:增量更新
这是企业客户最关心的功能。文档每天都在变,不可能每次更新都全量重建向量库。 方案:文档级增量更新
- 每篇文档有唯一ID和版本号
- 文档更新时,对比新旧版本的差异(用diff算法定位变化段落)
- 只对变化的段落重新做分块→向量化→写入
- 旧向量标记为软删除,后台异步清理 实测数据:一份1000页的知识库,更新10页内容,增量更新时间<30秒,全量重建需要15分钟。
第五层:生成与评估
- 上下文压缩:检索返回的5个chunk可能有5000 token,用长上下文压缩模型提取关键信息,压缩到2000 token以内
- 引用溯源:生成的每句话都标注来源(文档名+页码+段落),用户可以点击查看原文
- 幻觉检测:用一个轻量分类器判断生成内容是否有检索证据支撑,置信度低于阈值时返回"信息不足,建议咨询人工"
面试官的追问
追问1:多模态文档怎么处理?图文混排的PPT怎么检索? "PPT的特殊之处在于每一页信息密度很高但页面之间逻辑关系弱。我们的方案是:
- 每一页作为一个独立文档单元
- 文字部分走正常的文本向量化
- 图片/图表用多模态模型生成描述文本,也走向量化
- 页面之间的关联(如'下一页'、'补充说明')作为元数据保留,检索时可以作为上下文扩展"
追问2:2000家企业客户,数据隔离怎么做?
"租户级向量隔离:每个企业有独立的Collection(Milvus支持多租户),物理隔离。 权限控制:chunk级别权限——同一个文档库,不同角色能检索到的内容不同。在检索查询时注入权限过滤条件,Milvus的标量过滤性能很好,不影响向量检索延迟。 合规审计:所有检索和生成记录异步写入审计日志,支持90天回溯。"
追问3:检索准确率90%怎么衡量?怎么做质量评估?
"我们建了一套自动化评估体系:
- Golden Set:每个企业客户维护200-500条人工标注的QA对
- 自动化测试:每次模型或分块策略变更,跑一遍Golden Set,对比Recall@5和MRR
- 在线指标:用户点击'引用原文'的比率(>70%说明检索质量好)、用户标记'回答不准确'的比率(<5%)
- 人工抽检:每天随机抽100条问答,人工评估准确率 上线三个月,Golden Set的Recall@5从82%提升到了94%。"
面试结果
CTO面完说了一句话:"你是第一个从文档解析的坑切入RAG系统设计的候选人。大部分人上来就说用什么向量数据库。" Offer薪资比预期高25%。










