RAG 详解:从一份资料到一个有依据的回答
连接文档解析、切分、召回、重排、生成与引用,理解为什么“上传了资料”仍然可能答错。
01一次问答背后有两条流程
RAG 是检索增强生成:在回答问题前,从外部资料中找出相关内容,再让模型结合这些内容组织答案。可以把它分成资料准备与在线问答两条流程。前者负责把资料变成可检索的对象,后者负责针对当前问题取出合适依据。
以知识客服为例,员工提问时不会重新解析所有制度文件。系统通常先保存已经处理好的片段与索引;收到问题后,再查找候选、挑选上下文并生成答案。资料是否有效、用户是否有访问权限,需要贯穿这一过程。
02解析与切分决定检索对象
解析是把 PDF、网页或表格中的内容转成可处理的结构;切分是把内容组织成检索单元。它们不是简单删除格式。表格的行列关系、段落所属标题、注释和适用条件,都可能改变句子的含义。
片段过短,可能只剩“上限为 500 元”却丢了地区和时间;片段过长,则可能包含大量无关内容。切分长度没有通用最优值,需要结合文档结构和实际问题检查。对制度类材料,保留标题、版本、地区和章节信息,往往比单纯增加片段数量更有意义。
03召回与重排解决不同问题
关键词检索擅长找到具体术语、编号和原文用词;向量检索通过表示相近程度寻找语义相关内容。当员工使用口语表达,而制度采用正式术语时,向量检索可能有帮助;当查询包含精确条款编号时,关键词匹配仍然重要。两者可以组合,但组合方式也要通过具体问题检验。
召回先取出一批候选;重排再更细致地比较“这个问题与这个片段是否相关”,确定优先给模型哪些内容。联合处理查询和候选的重排模型通常比独立向量比较更耗计算,因此常用于较小候选集合。重排无法恢复根本没有进入候选集合的正确资料。
04有引用不等于回答有依据
检索到片段后,应用仍要组织上下文、提出回答要求并处理资料不足。模型可能遗漏条件,也可能把多个文件中互不适用的句子拼在一起。引用应支持结论中的具体事实,而不是在答案末尾随便附一个相关链接。
如果问“今年异地出差可以报多少”,资料只说明本地交通费标准,就不能据此推断全部出差费用。合理的结果可能是明确适用范围、询问缺失条件,或说明现有资料不足。检索增强提高了使用外部依据的可能性,但不提供答案必然正确的保证。
| 观察到的问题 | 先检查 | 可能的改进 |
|---|---|---|
| 没有检索到应有制度 | 资料是否存在、解析是否完整、候选是否命中 | 补资料、保留结构、改查询或召回方式 |
| 候选有答案,最终上下文没有 | 排序与截断位置 | 调整重排或上下文组织 |
| 上下文有正确依据,回答仍错 | 遗漏条件、冲突材料、生成要求 | 明确适用条件并加入对应评测 |
| 答案正确但用户没有办成事 | 解释、入口、等待与后续步骤 | 优化交互和办理衔接 |
05RAG 与微调怎样选择
RAG 主要改变一次回答可使用的外部上下文;微调通过训练改变模型参数。经常更新、需要展示出处的业务知识,通常首先需要可靠的资料与检索链路。固定输出格式、特定任务行为或领域能力适配,则可能涉及微调。二者可以结合,不是必须二选一。
遇到效果问题时,应先定位问题所在。如果源文件已经过期,训练更多轮并不能补出正确的最新制度;如果候选排序持续出错,则应研究检索与排序,而不是只改聊天提示。能够沿资料、候选、上下文、答案逐段解释错误,是理解 RAG 的核心。