RAG 的完整链路是怎样的?怎么提升检索效果?

进阶高频场景题约 3 分钟读完

一句话回答

RAG(检索增强生成)分离线索引和在线问答两条链路。离线:把文档解析、切块、向量化后存入向量库。在线:把用户问题向量化,检索出最相关的若干片段,拼进提示词,让模型基于这些资料回答。效果好坏主要取决于能不能检索到对的内容。

详细解析

链路

文本
离线:文档 → 解析(PDF / Word / 网页)→ 清洗 → 切块 → Embedding → 写入向量库(带上元数据)
在线:问题 → 改写 → Embedding → 检索 Top-K → 重排 → 拼接上下文 → 模型生成 → 附上引用来源

常见优化手段

环节 手段
解析 保留表格和标题层级等结构;扫描件先做 OCR
切块 按标题、段落等语义边界切,而不是按固定字数硬切;相邻块保留少量重叠;每块带上所属文档和章节标题
检索 混合检索:向量检索(语义)+ BM25 关键词检索(专有名词、编号),再用 RRF 等方法融合排序
查询 改写问题、拆分子问题;HyDE(先让模型写一个假设答案,再用它去检索)
重排 先粗召回几十条,再用 rerank 模型精排,取前几条
生成 要求"只根据资料回答,资料里没有就说不知道",并标注引用

怎么评估

检索和生成要分开评估:

  • 检索:正确的片段有没有被检索到、排在第几位,常用 Recall@K、MRR
  • 生成:答案是否忠实于检索到的资料(faithfulness),是否回答了问题(answer relevance)
  • 准备一批"问题 + 标准答案 + 应命中的文档"作为评测集,每次调整后跑一遍做回归

面试官可能追问

chunk 切多大合适?

没有固定答案,常见在几百到一千 token 左右。太小语义不完整,太大噪声多、浪费上下文。最好用评测集对比不同的切法。

向量检索和关键词检索各有什么短板?

向量检索擅长匹配意思相近的表达("怎么退款"能匹配到"退货流程"),但对型号、人名、错误码这类精确匹配不敏感;关键词检索正好相反。所以生产环境常用混合检索。

文档有访问权限怎么办?

在元数据里记录权限(部门、用户组等),检索时就按当前用户的权限过滤。不要先检索出来再交给模型去"过滤",否则无权查看的内容已经进入了上下文。

模型的上下文窗口越来越大,还需要 RAG 吗?

需要。知识库通常远超上下文窗口;全量塞进去成本高、延迟大,长上下文中间部分的信息也容易被忽略。RAG 还能给出可追溯的引用来源。

易错点

  • 效果差时先检查检索结果对不对,而不是先换更大的模型
  • 更换 Embedding 模型后,所有文档都要重新向量化

AI 模拟面试官

用自己的话回答,AI 对照参考答案打分、指出遗漏,再追问,最多 3 轮

登录后就可以和 AI 面试官对练,面试记录也会保存下来。登录

这道题你掌握了吗?

选一个最接近的状态,没掌握的题会出现在"我的进度 · 待复习"里。

学习记录暂存在本机浏览器。登录后自动同步到账号,换设备也能看到。