跳到主要内容

K6.1 RAG 三元组:给系统做体检的三盏灯

一个坏答案,锅在谁?​

用户问「退货运费谁承担」,你的 RAG 答了句错的。是检索没找对资料?还是资料对了、模型没照着用?还是照着用了、却复述走样?

分不清病根,就没法对症下药。 你可能花一整天优化检索,结果病根在生成——白忙。RAG 是一条流水线(检索 → 增强 → 生成),要给它做体检,就得在每个关节上装一个探头。这三个探头,业界叫 RAG 三元组。

三盏灯,对应三个问题​

RAG 三元组是三个「参照检索资料就能判断、不需要标准答案」的检查项,正好卡在流水线的三个关节上:

  1. 上下文相关性:检索回来的资料,和问题相关吗?——管的是「检索这一步做得好不好」(K1~K4 的活)。资料都不对,后面全白搭。
  2. 有据性(也叫忠实度):答案里的每句话,都由资料支撑吗?——管的是「模型有没有老实照着资料答」(K5 的活)。这是查幻觉的主力探头。
  3. 答案相关性:答案有没有正面回答用户的问题?——资料对、也有据,但答非所问,照样是失败。

关键在于它们串成了一条诊断链:哪盏灯先红,病根就在哪个环节。亲手体检一遍:

🎮 动手实验
失败模式诊断器:RAG 是在哪一环出的错
同一个问题,注入三种典型故障,看「RAG 三元组」三盏灯哪盏变红、答案怎么被毁掉。学会看这三盏灯,你就能一眼定位 RAG 的病根。(内容为教学构造)
🧑‍💻 退货运费谁承担?(正确答案:会员免运费、非会员自付 10 元)
注入一种情况:
检索对、照资料答、答到点
🔎 检索回来的资料:
✅ 运费规则:会员退货免运费由本店承担,非会员需自付 10 元退货运费。
🩺 RAG 三元组体检:
🟢 上下文相关性
检索回来的资料,和问题相关吗?
🟢 有据性
答案的每句话,都由资料支撑吗?
🟢 答案相关性
有正面回答用户的问题吗?
💬 最终答案:
会员退货免运费,由本店承担;非会员需自付 10 元退货运费。〔来源:运费规则〕
诊断(病根在:无):三环全绿:检索到了对的资料、答案由原文支撑、也正面回答了问题。这才是 RAG 该有的样子。
💡 要点:RAG 出错,无非三个地方——没检索到(对的资料没捞回来,上下文相关性红灯,锅在检索 K1~K4)、没照着用(资料对但模型凭旧记忆瞎答,有据性红灯,锅在生成 K5)、照歪了(在用资料但复述失真,有据性红灯,锅还在生成)。RAG 三元组这三盏灯,就是给 RAG 做体检的仪表盘——先看哪盏红,就知道该去修检索还是修生成,而不是瞎调一通。

为什么是「三个」而不是「一个总分」​

你可能会想:直接给答案打个「好不好」的总分不就行了?

不行——总分能告诉你「病了」,却不告诉你「病在哪」。一个 60 分的 RAG,可能是检索烂(上下文相关性红)、也可能是检索好但模型乱编(有据性红),两者的药方南辕北辙。三元组把「好不好」拆成三个可独立诊断的关节,你才能精准定位:

  • 上下文相关性红 → 去修检索(换嵌入模型、调切块、加混合检索和重排,K1~K4);
  • 有据性红 → 去修生成(收紧提示词指令、强制引用,K5);
  • 答案相关性红、但前两个绿 → 检索和忠实都没问题,是模型没理解问题或答偏了(改提示、澄清问题)。

这就是评测的真正价值:不是打个分了事,而是把「哪里坏了」量化出来,指导你该修哪儿。

三盏灯是怎么「判定」的?

你可能好奇:谁来判断「资料相不相关」「答案有没有据」?现实中最常用的办法是让另一个大模型当裁判(LLM-as-judge)——把问题、资料、答案喂给它,让它逐项打分。这又快又便宜,但要警惕它自带的偏差(上篇 7.2 节讲过:偏爱长答案、偏爱自信语气)。所以严肃评测里,模型裁判要配上一部分人工校验、要固定评分标准、还要防止评测集本身被污染(上篇 7.2)。三盏灯给了你诊断的框架,但「怎么让灯判得准」本身也是门功夫。

小结​

本节要点
  • RAG 三元组是给 RAG 做体检的三盏灯:上下文相关性(检索对不对)、有据性(答案有没有依据)、答案相关性(有没有答到点)。
  • 三盏灯串成诊断链——哪盏先红,病根就在哪个环节,指导你该修检索还是修生成。
  • 拆成三个而非一个总分,是因为总分只说「病了」、不说「病在哪」,没法对症下药。
  • 三盏灯常用 LLM-as-judge 来判,但要警惕裁判自带的偏差(回扣上篇 7.2)。
📝 动手自测0/3
1. RAG 三元组的三个指标,分别管流水线的哪个环节?
2. 为什么用「三个指标」而不是「一个好不好的总分」来评测 RAG?
3. 一个 RAG 系统:检索回来的资料确实相关、答案也确实由资料支撑,但用户问「A 多少钱」它答了一堆 A 的背景介绍就是没说价格。哪盏灯会红?

延伸阅读​