RAG 与知识库面试模块

RAG 是 AI 应用开发面试里最常被追问的方向,因为它能同时考察数据工程、检索系统、Prompt 设计和业务落地。不要只回答“把文档转向量后检索”,那只是最粗的流程。

标准链路

  1. 数据接入:PDF、PPT、Word、网页、图片、表格、数据库或内部知识库。
  2. 文档解析:文本抽取、OCR、版面还原、表格处理、图片说明、编码清洗。
  3. 清洗与结构化:去页眉页脚、去重复、补标题层级、识别章节、保留来源元数据。
  4. 切片:按标题、语义段落、Token 长度和业务实体切分,必要时保留重叠窗口。
  5. 向量化:选择 Embedding 模型,记录版本、维度、归一化策略和语言适配。
  6. 索引:向量库、关键词索引、元数据过滤、权限字段、更新时间。
  7. 召回:向量召回、关键词召回、混合召回、多路召回合并。
  8. 重排:Cross Encoder、LLM rerank 或规则重排,提高相关性。
  9. 生成:把候选片段、问题、约束和引用格式交给模型。
  10. 评测:命中率、引用准确率、答案可用率、拒答率、延迟、成本、人工满意度。

高频问题与参考回答

为什么 RAG 不能只靠向量检索?

向量检索擅长语义相似,但对精确词、编号、表格字段、时间、权限过滤和短关键词不一定稳定。生产系统通常会做混合检索:向量召回处理语义问题,关键词或 BM25 处理精确匹配,元数据过滤保证范围正确,再用重排模型做最终排序。

切片长度怎么定?

切片不是固定 500 字就结束。要看文档结构、问题类型和模型上下文。切太短会丢上下文,切太长会引入噪声并增加 Token 成本。常见做法是:先按标题和段落切,再限制 Token 上限;对定义、流程、表格说明保留相邻上下文;用评测集比较不同切片策略的命中率和答案质量。

如何处理 PDF、PPT、图片和网页?

PDF 要区分可复制文本和扫描件,扫描件需要 OCR;PPT 要保留页标题、文本框顺序和备注;图片要做 OCR 或视觉模型描述;网页要清理导航、广告和脚本噪声。关键是保留来源、页码、章节和时间戳,否则回答无法引用和追溯。

RAG 的幻觉怎么降低?

先从召回质量入手:问题改写、多路召回、重排、阈值过滤。再从生成约束入手:要求只基于给定资料回答、引用来源、资料不足时拒答。最后建立评测和人工抽检:如果答案没有引用、引用不支持结论、或跨权限引用,都要判失败。

项目追问清单

  • 你的知识库数据从哪里来,更新频率是多少?
  • 文档解析失败如何发现,失败文件怎么重试?
  • 切片策略为什么这么定,有没有对比实验?
  • 向量库选型是什么,数据量、维度、索引类型和查询延迟是多少?
  • 是否做了权限过滤,权限是在召回前过滤还是召回后过滤?
  • 如何处理相互冲突或过期的知识?
  • 如何评估答案是否真的正确?

可落地架构

层级组件关键设计
接入层文件上传、网页抓取、数据库同步幂等、去重、权限继承、任务状态
解析层Parser、OCR、表格识别失败重试、版面保留、元数据记录
索引层Embedding、向量库、关键词索引模型版本、增量更新、删除同步
检索层查询改写、混合召回、重排TopK、阈值、过滤、引用片段
生成层Prompt、LLM、结构化输出拒答、引用、格式校验
评测层样例集、人工标注、线上抽检命中率、引用准确率、满意度

关键细节拆解

文档解析

面试官经常从“PDF 怎么处理”开始追问。可复制 PDF 和扫描 PDF 是两类问题:前者重点是版面和段落顺序,后者重点是 OCR 准确率。PPT 要保留页标题、层级和备注,表格要尽量转成结构化 Markdown 或 CSV,图片如果包含关键文字要做 OCR 或视觉描述。解析结果必须保存页码、章节、标题、来源路径和更新时间,否则后续引用无法追溯。

切片策略

切片要服务召回,不是为了把文本平均切开。制度类文档适合按标题层级切,FAQ 适合按问答对切,表格适合按行或实体切,长流程文档可以按步骤切并保留上下文窗口。切片要避免一个答案跨越太多 chunk,也要避免单个 chunk 太长导致噪声进入上下文。

召回和重排

生产里常见做法是“查询改写 + 混合召回 + 重排”。查询改写解决用户表达不完整的问题;向量召回解决语义相似;关键词召回解决专有名词、编号和精确字段;重排解决 TopK 里相关但不准确的问题。重排后还可以根据来源时间、权限、文档类型和业务优先级做规则调整。

评测集怎么建设

准备三类问题:第一类是标准问题,答案在文档中明确出现;第二类是边界问题,需要多个片段合并;第三类是无答案问题,用来验证拒答能力。每个问题至少标注标准答案、支持片段、允许的同义表达和不允许的错误点。RAG 评测不能只看答案像不像,还要看引用是否支持结论。

评测项目标失败表现
Recall@K正确片段进入候选集答案明明在库里但检索不到
引用准确率引用能支撑回答引用片段和答案无关
拒答率不知道时不编造没资料也强行回答
延迟可接受的响应时间检索和模型调用过慢
权限正确性不越权召回用户看到无权限内容

生产事故追问

如果上线后用户反馈答案错,排查顺序应是:问题是否表达清楚;查询改写是否改偏;召回候选里有没有正确片段;重排是否把正确片段压低;Prompt 是否让模型忽略资料;资料是否过期或冲突;最终回答是否经过引用校验。这个排查链路比直接说“优化 Prompt”更像真实工程经验。

生产级 RAG 技术架构

生产 RAG 可以拆成两条链路:离线索引链路和在线查询链路。离线链路负责采集、解析、清洗、切片、Embedding、权限写入和索引版本管理;在线链路负责问题改写、权限过滤、混合召回、重排、上下文压缩、生成、引用校验和反馈记录。面试时要强调两条链路各自可观测,否则很难定位问题。

链路核心步骤关键指标
索引链路解析、清洗、切片、向量化、入库解析成功率、索引延迟、重复率、权限覆盖率
查询链路改写、召回、重排、生成、引用Recall@K、MRR、引用准确率、拒答准确率
反馈链路点赞、人工纠错、失败样例归档用户满意度、问题覆盖率、修复周期

Chunking 最佳实践

没有通用最佳 chunk size。更稳的做法是按文档类型选择切片策略,并用评测集比较。政策、制度、手册适合标题层级切片;FAQ 适合问答对切片;表格适合按实体、行或字段组合切片;代码文档适合按模块、函数或配置块切片。切片策略要保留父标题、页码、段落序号和更新时间,方便引用和重排。

混合检索与重排架构

向量召回擅长语义,关键词召回擅长精确术语和编号,元数据过滤保证权限和范围,重排负责把最相关片段放在前面。一个可落地回答是:先用权限和业务范围过滤候选文档,再做向量和 BM25 多路召回,合并去重后交给 reranker,最后根据时间、权威等级和文档类型做轻量规则排序。

RAG 安全和治理

RAG 的安全风险不仅是模型幻觉,还包括权限越权、过期知识、被投毒文档、Prompt Injection 和敏感信息泄漏。生产系统应在召回前做权限过滤;索引时保留数据来源和版本;对用户上传文档做隔离;把外部文档视为不可信内容;对答案做引用校验和敏感字段检查。

候选人自检清单

  • 能否在 2 分钟内讲清楚这个模块解决什么业务问题、为什么不是简单调用模型 API。
  • 能否说清输入、处理、模型调用、后处理、评测、监控、回滚的完整链路。
  • 能否给出至少一个真实项目指标,例如召回率、命中率、延迟、Token 成本、人工复核通过率或线上失败率。
  • 能否解释一个失败案例:问题如何发现、如何定位、怎么修复、修复后用什么指标验证。
  • 能否区分“学习过概念”和“真正落地过系统”,面试回答要用具体约束、权衡和数据支撑。