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

大模型Rag - 如何评估Rag

一.RAG流程与评估标准补充

RAG(Retrieval-Augmented Generation)是一种结合检索与生成的问答架构。为了确保系统效果,需要从以下三个角度对其评估:

回顾RAG流程

用户提出问题 → 系统检索相关上下文 → 基于上下文由大语言模型生成答案。

评估标准

  • 上下文相关性
    检索到的上下文是否紧密围绕用户问题展开?
    是否包含解答问题所需的关键信息?

  • 生成答案的忠实性(Faithfulness)
    答案是否与提供的上下文信息保持事实一致性?
    能否通过上下文信息进行推断?

  • 答案相关性(Relevance)
    是否直接、完整地回答了用户问题?
    有无遗漏或冗余无关内容?

二.Rag 评估的三大步骤

第一步:构建测试数据集
评估的第一步,是准备一套测试数据集。这就好比考试要有一份试卷,RIG 系统需要回答什么问题?什么才算是正确答案?这些都要事先准备好。

一个典型的测试数据集通常包含两部分:

  • 问题
  • 标准答案

这一步的关键,是确保数据具有代表性,能够覆盖系统实际面临的各种场景。

第二步:选择评估指标
有了测试数据,还需要明确——用什么标准来评判系统的好坏?
这一步我们要选择合适的评估指标,常见的包括:
准确性(Accuracy):回答是否正确?
相关性(Relevance):回答和问题是否紧密相关?
完整性(Completeness):信息是否全面?
一致性(Consistency):内容是否自洽、符合逻辑?
鲁棒性(Robustness):对输入变化是否敏感?

有些指标是通用的,也可以根据业务需求细化出更具体的子指标。选对指标,才能得到有价值的评估结果。

第三步:执行评估并计算得分
最后,我们进入评估的执行阶段。整个过程包括:

  1. 将测试数据集中的问题输入 RIG 系统;
  2. 获取系统生成的回答;
  3. 与标准答案进行对比;
  4. 按照前面选定的指标进行打分或计算。

评估的方式可以是自动化评估(如 BLEU、ROUGE、BERTScore 等)或人工评估(如打分表、人工判断)。
这一阶段的重点是:如何准确、合理地计算每个指标的数值,确保评估结果可信、可解释、可复现。

三.Ragas

Ragas 是一个专门用于评估 RAG(Retrieval-Augmented Generation)系统的开源工具包
Ragas 能评估哪些方面?
Ragas 提供了一整套面向 RAG 系统的评估指标,包括但不限于:

  • Faithfulness(忠实度) 生成的答案是否忠于检索到的文档(有没有胡编乱造)
  • Answer Relevance(答案相关性) 答案是否真正回答了问题
    - Context Precision / Recall(上下文精度/召回) 检索回来的文档是否相关、是否齐全
  • Context Relevance(上下文相关性) 检索内容和问题是否匹配
  • Context-Answer Consistency 上下文与生成答案是否一致
    这些指标都是专门针对 RAG 系统设计的,兼顾了 检索质量 和 生成质量,比通用 NLP 指标更贴合实际需求。

** Ragas 的技术特点 **
支持自动化评估:基于 LLM(大模型)来对答案进行打分,省去了人工打分的繁琐;
适配多种 RAG 框架:如 LangChain、Haystack、LlamaIndex 等;
评估维度丰富
开箱即用的工具链:内置数据结构、评估流程、可视化接口等。

http://www.xdnf.cn/news/456.html

相关文章:

  • SpringBoot启动后初始化的几种方式
  • P1042【深基8,例1】乒乓球
  • C++手撕STL-其二
  • Pandas取代Excel?
  • MCGS昆仑通太屏笔记
  • 【java实现+4种变体完整例子】排序算法中【归并排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 【ELF2学习板】利用OpenMP采用多核并行技术提升FFTW的性能
  • 科学研究:怎么做
  • 【java实现+4种变体完整例子】排序算法中【堆排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • OSPF综合实验(HCIP)
  • 第32讲:卫星遥感与深度学习融合 —— 让地球“读懂”算法的语言
  • AUTOSAR图解==>AUTOSAR_SWS_KeyManager
  • 那就聊一聊mysql的锁
  • Firewalld防火墙
  • (二)Trae 配置C++ 编译
  • 2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?
  • 240419 leetcode exercises
  • React 文章列表
  • JVM基础认知:JVM到底是什么?为什么它如此重要?
  • 神经网络的数学之旅:从输入到反向传播
  • 进程控制(下)【Linux操作系统】
  • stm32| 中断标志位和中断挂起位 | TIM_ClearFlag 函数和TIM_ClearITPendingBit 函数
  • .net core web api 数据验证(DataAnnotations)
  • Java集合框架中的List、Map、Set详解
  • 焕活身心,解锁健康养生新方式
  • C#学习第17天:序列化和反序列化
  • 基于Redis的3种分布式ID生成策略
  • 多线程——阻塞队列(六)
  • LeetCode(Hot.2)—— 49.字符异位词分组题解
  • ARINC818-实现