当前位置: 首页 > news >正文

RAG 系列(八):RAG 评估体系——用数据说话

为什么"感觉不错"不是标准?

前面七篇文章,我们搭起了一整套 RAG 流程:分块、Embedding、向量库、检索策略。系统跑起来了,你问它几个问题,回答看起来"还不错"。

但问题接踵而至:

  • 迭代后真的变好了吗?你换了 Embedding 模型、调了 chunk_size、加了 MMR,但回答质量真的提升了吗?还是只是"感觉"变好了?
  • 问题出在哪里?某个问题回答得很差,是检索阶段没召回相关文档,还是生成阶段模型在胡说八道?
  • 怎么向老板汇报?“我觉得我们的 RAG 系统挺好的”——这句话在数据驱动的团队里毫无说服力。

RAG 系统的评估,不能靠感觉,必须靠数据。

本文会带你从零开始,用RAGAS框架建立一套可量化的 RAG 评估体系,让你清楚地知道系统好不好、哪里差、怎么改。


RAGAS 是什么?

RAGAS(Retrieval-Augmented Generation Assessment)是专为 RAG 系统设计的开源评估框架。它的核心思想很朴素:用 LLM 作为裁判,自动判断 RAG 系统的输出质量

为什么用 LLM 当裁判?因为传统的 NLP 评估指标(如 BLEU、ROUGE)只适合做翻译或摘要任务,它们通过字符串匹配来判断相似度,完全无法理解语义。而 RAG 的评估需要理解"这个答案是否基于上下文"、“这个回答有没有答非所问”——这正是 LLM 擅长的。

RAGAS 提出了4 个核心指标,覆盖了 RAG 系统的两个关键阶段(检索 + 生成):


四个核心指标详解

1. Faithfulness(忠实度)

问题:答案有没有在胡说八道?

Faithfulness 衡量生成答案是否忠实于检索到的上下文。如果模型在回答中加入了上下文里没有的信息,就是"幻觉",Faithfulness 就会低。

通俗理解:考试时Faithfulness高 = 答案全是根据提供的参考资料写的,没有自己瞎编。

计算方式:LLM 被prompt要求逐句检查答案中的每个陈述,判断是否能从上下文中推断出来。可推断的陈述数 / 总陈述数 = Faithfulness。

2. Answer Relevancy(答案相关性)

问题:答案是不是在答非所问?

Answer Relevancy 衡量答案与问题的相关程度。即使答案内容是对的,但如果偏离了问题的核心,这个指标也会低。

通俗理解:你问"怎么学 Python",对方却给你讲了一通 Java 的历史——虽然内容本身没错,但完全跑题了。

计算方式:LLM 根据答案生成若干个问题变体,然后计算这些问题与原始问题的 Embedding 相似度,取平均。

3. Context Precision(上下文精确度)

问题:检索回来的东西里,有多少是垃圾?

Context Precision 衡量检索结果中相关文档片段的比例。如果召回的 4 条上下文里有 2 条完全不相关,Context Precision 就是 0.5。

通俗理解:去图书馆找资料,借了 4 本书,只有 2 本有用——你的检索精确度就是 50%。

计算方式:LLM 逐条判断每个上下文片段是否与问题相关,相关条数 / 总条数。

4. Context Recall(上下文召回率)

问题:该找的东西找到了吗?

Context Recall 衡量所有与问题相关的信息,有多少被成功检索到了。这是检索阶段最核心的指标。

通俗理解:考试复习时,考卷上有 10 个知识点,你的复习资料只覆盖了 6 个——召回率就是 60%。

计算方式:LLM 将标准答案(ground_truth)拆分成多个关键陈述,然后逐条判断这些陈述是否能从检索到的上下文中推断出来。能推断的陈述数 / 总陈述数 = Context Recall。


四个指标的关系

用户提问 ├─→ Context Recall 低? → 检索阶段有问题(chunk/embedding/top-k) ├─→ Context Precision 低? → 检索混入了噪声 ├─→ Faithfulness 低? → 生成阶段幻觉(上下文不足或模型不听话) └─→ Answer Relevancy 低? → 答案跑题了

这四个指标互相独立、互相补充,一起构成了 RAG 系统的"体检报告"。


评估的第一步:构建测试集

评估需要"考题"和"参考答案"。测试集的质量直接决定评估结果的可信度。

测试集长什么样?

一个标准的 RAG 测试样本包含四个字段:

{"question":"RAGAS 框架包含哪四个核心评估指标?","ground_truth":"RAGAS 四个核心指标是:Faithfulness、Answer Relevancy、Context Precision、Context Recall。","contexts":["...","..."],"answer":"..."}
  • question:用户问题
  • ground_truth:标准答案(人工编写,不依赖模型)
  • contexts:RAG 系统检索到的上下文(运行后自动填充)
  • answer:RAG 系统生成的答案(运行后自动填充)

两种构建方式

方式优点缺点适用场景
手工标注质量高、边界清晰成本高、耗时长核心测试集、生产验收
http://www.jsqmd.com/news/767110/

相关文章:

  • 终极JSXBIN解码器深度解析:高性能Adobe脚本反编译引擎架构设计
  • 2026年上海GEO优化服务深度测评:十大渠道服务商格局与选型指南 - 博客湾
  • Python习题集:程序8
  • 梦网与彩铃:从“躺赚”印钞机到被跨维击穿的收费站
  • 4G技术演进:LTE与WiMAX的竞争与启示
  • IEEE 802.15.4与ZigBee技术选型及低功耗设计指南
  • 手写一个KMP算法:从原理到工程级实现
  • 如何快速实现VRoidStudio中文界面:面向3D创作者的完整汉化指南
  • 深入紫光同创FPGA的HSST模块:从6.375Gbps高速收发器到多协议应用(PGL50H)
  • 告别外挂芯片!聊聊多核异构MCU(如RZ/G2L)如何用内部总线省成本、提效率
  • Flutter-OH 鸿蒙工具类应用实战 Day2:Note 记事本数据持久化与本地存储实现
  • Taotoken API Key的权限管理与子账户创建教程
  • 如何让经典DualShock 3在Windows 11上完美工作?
  • Spring Boot 2.5 + Activiti 7.1 实战:手把手教你从零搭建一个请假审批流程(附完整源码)
  • 2026年杭州GEO优化服务商综合排名TOP10:方案比较与优势深度解析 - 博客湾
  • FPGA与PC高速通信:基于FT245同步FIFO模式的实战指南
  • 废掉一个人最快的方式,是让他觉得“这辈子就这样了”
  • 3步搞定视频转PPT难题:如何用智能算法自动提取每一页幻灯片
  • iGRPO:大语言模型推理优化的自反馈机制
  • ESP32-S2低功耗PIR运动传感开发板解析与应用
  • 轻量级Web框架CopaWF:模块化设计与RESTful API实践指南
  • VSCode 2026多智能体协同编程避坑清单,第7条99%开发者忽略:本地LLM缓存污染导致的Agent角色错位问题(实测复现+热修复补丁)
  • CoolRunner-II CPLD硬件安全特性与加密算法实现
  • 3分钟破解百度网盘提取码:开源工具的终极使用指南
  • 如何用正则具名捕获组 (-) 提升复杂数据的提取效率
  • 告别原生Socket API:用sockpp 0.8.1在C++中快速构建TCP客户端/服务器(附完整代码)
  • 5分钟终极指南:用AI图像分层工具layerdivider轻松生成多层PSD文件
  • Python快速学习——第11章:模块
  • 工业机器人闭环控制系统的轨迹优化与采样权重分配
  • 【PI_浪涌电流】快速掌握电源浪涌电流(Inrush current)测试方法