FaaF:利用事实作为评估RAG的函数方法

原文地址:faaf-facts-as-a-function-for-evaluating-rag

2024 年 4 月 5 日

在某些情况下,我们使用其他语言模型来验证RAG的输出结果,但这种方法并未能有效识别出数据生成过程中的错误和缺失。

论文解析

挑战

  • 评估的可靠性和效率:如何可靠和高效地评估RAG系统的事实回忆是一个主要挑战。传统的评估方法依赖于人工评估或者与参考文本的精确匹配,这些方法在处理大量数据或不完整信息时可能不够有效或准确。
  • 信息的完整性和准确性:在面对不完整或不准确的生成文本时,如何准确地验证事实陈述成为一个问题。传统的基于提示的语言模型评估者可能无法有效地处理这种情况。
  • 成本和资源消耗:现有的事实验证方法可能需要大量的计算资源和时间,特别是当需要验证的文本中包含多个事实陈述时。
  • 系统的复杂性:RAG系统包含多个组件,如知识库、检索机制、提示构建和语言模型等,这些组件需要精细的调整才能达到最佳性能。因此,评估方法需要考虑到这些组件之间的相互作用。

相关工作

RAG系统评估框架
  • RAGAS:Es等人提出了一个评估RAG系统性能的框架,该框架专注于检索和生成的性能,但不包括对事实准确性的评估。作者认为,事实准确性是RAG系统评估中的关键指标,因此需要更全面的方法。
事实验证方法
  • Min等人:通过使用不同的提示来直接验证从LM生成的文本中提取的单个事实,并与人工评估进行比较,发现在能够检索到事实的情况下,错误率较低。
  • Zhang等人:提出了一种自我测量事实性的方法,通过少量样本提示和与问题相关的生成事实相结合。这种方法虽然依赖于知识库中的事实,但其有效性受限于知识库的范围和检索质量。
  • Li等人:指出LM在使用标准提示策略时难以识别非事实信息,并报告了使用“思维链”(Chain of Thought, CoT)策略可以提高性能。
  • Azaria和Mitchell:发现仅通过提示进行事实验证是不足够的,并提出训练一个分类器来预测生成语句的真实性。但是,由于当前的商业模型(如GPT-4)缺乏对隐藏层激活的访问,因此需要替代方法。
自我评估和自动化评估
  • Fu等人:基于使用令牌概率的概念,引入了一个自我评估框架,通过少量样本提示来评估LM响应的多个方面,如事实性、流畅性等。
  • Manakul等人:提出了SelfCheckGPT,通过统计分析对同一提示的多个响应来自动检测LM输出中的事实错误,无需外部知识源。这种方法表明,生成响应的概率分布可以指示其真实性。
  • Aly等人:使用RoBERTa编码器和线性层来学习和预测给定文本证据的事实标签。
  • Wang等人:描述了一种方法,其中LM被直接提示对答案的特定方面进行评分,例如从0到100的评分或5星评级,取得了显著的成果,但这种方法的有效性高度依赖于提示的设计。
事实准确性的研究
  • Zhang等人:尝试使用参考答案(BertScore)进行灵活的自我评估,通过上下文化嵌入计算生成和参考句子之间的相似性分数。这种方法不依赖于生成和参考文本之间的精确匹配,但在信息不是上下文化和明确的情况下(例如日期),高语义分数并不能保证事实精度。
  • Kadavath等人:观察到大型语言模型(LLMs)为多项选择题提供校准良好的概率,有效地将模型生成答案的验证转化为真/假多项选择题。
数据集和评估方法
  • Cuconasu等人:使用NaturalQuestions-Open(NQ-open)数据集,通过判断地面真相答案(NaturalQuestions注释)是否出现在预测输出中来进行准确性评估。尽管NQ-open数据集具有广泛的范围和领域不可知性,但通过精确匹配进行事实验证面临严重挑战。

研究贡献

  1. 提出了一个针对RAG系统的端到端事实回忆评估框架,可以用于创建测试数据集和执行自动化事实回忆评估。
  2. 探索了在高度不完整或不准确生成文本条件下的事实验证表述的性能。
  3. 引入了“Facts as a Function”(FaaF),这是一种新的事实验证方法,通过利用LM的功能调用能力和框架来提高效率和降低成本。
  4. 开源了FaaF作为Python包(pip install faaf)和增强的WikiEval数据集,以帮助社区在RAG优化中包含事实回忆,从而构建更可靠的系统。 

FaaF方法

FaaF(Facts as a Function)方法是种创新的事实验证方法,旨在提高对RAG系统输出的评估效率和准确性。该方法特别关注于在信息不完整或不准确的情况下,如何有效地识别和验证文本中的事实陈述。以下是对FaaF方法的详细介绍:

核心概念

FaaF方法的核心思想是将事实陈述作为函数参数传递给语言模型,而不是使用传统的基于提示的验证方法。这种方法利用了语言模型的功能调用能力,允许在一个函数调用中同时验证多个事实陈述。通过这种方式,FaaF能够更有效地识别出文本中不支持的事实,即使在信息不完整或存在错误的情况下。

方法步骤
  1. 事实构造:首先,从参考源中提取一系列事实陈述。这些事实陈述是将要验证的文本的基础。

  2. 函数对象创建:然后,根据提取的事实陈述创建一个函数对象。这个对象包含了所有需要验证的事实,并且可以包含特定的解析方法,用于处理语言模型的输出。

  3. 语言模型调用:将函数对象、提示和待验证的文本一起传递给语言模型。提示指导语言模型如何使用函数对象来评估文本。

  4. 输出处理:语言模型生成的输出随后通过函数对象中的解析方法进行处理,以确定每个事实的真实性。

方法优势
  • 提高准确性:FaaF方法通过结构化的方式呈现事实,有助于语言模型更准确地理解和验证每个事实,从而减少错误判断。

  • 效率提升:与传统的逐个事实验证相比,FaaF方法可以在一个调用中验证多个事实,显著减少了所需的语言模型调用次数和生成的令牌数量。

  • 成本降低:由于减少了语言模型的调用次数和令牌消耗,FaaF方法在执行大规模评估时可以显著降低成本。

实验应用

在实验中,FaaF方法被用来评估RAG系统生成的文本。通过与人工评估的比较,FaaF显示出在识别不支持事实方面的错误率显著低于基于提示的验证方法。此外,FaaF还能够处理不完整或不准确的信息,这在传统的验证方法中是一个挑战。

结论

FaaF方法为评估RAG系统提供了一种新的、更高效和准确的事实验证途径。它通过利用语言模型的功能调用能力,改进了事实验证的过程,特别是在处理具有不完整或不准确信息的文本时。这种方法的引入为自动化事实验证领域带来了新的视角,并有望在未来的研究和应用中发挥重要作用。

函数

在论文中,函数是指一种结构化的方法,用于评估和验证RAG系统生成的文本中的事实陈述。这种方法通过将事实陈述封装成函数参数,允许语言模型(LM)在一个统一的框架内处理多个事实验证任务。以下是对论文中提到的函数概念的详细介绍:

函数的定义和作用

  1. 构造函数(Constructor Function):在FaaF方法中,构造函数C用于创建一个对象O,该对象包含了所有需要验证的事实陈述。这些事实陈述以字符串列表S的形式提供给构造函数,同时还可以包括控制参数P,这些参数定义了对象O的结构和行为。

  2. 函数对象(Function Object):构造函数的输出是一个对象O,它包含了一系列的字段(f1, f2, ..., fn),每个字段对应一个待验证的事实陈述。对象O还可能包含特定的解析方法GO,用于解释语言模型的输出并将其转换为可读的结果。

  3. 函数调用(Function Calling):在验证过程中,函数对象O被传递给语言模型,并且通过调用该函数来执行事实验证。函数调用允许语言模型一次性处理和验证整个文本中的多个事实,而不是逐个处理。

函数的关键特点

  • JSON表示:函数对象在传递给语言模型之前,通常会被转换为JSON格式。这种结构化的表示方法有助于语言模型更清晰地理解每个事实陈述和相关的验证要求。

  • 元数据和类型提示:函数对象中的字段可以包含元数据和类型提示,这些信息有助于指导语言模型生成更准确的响应。例如,字段可以明确指出期望的响应类型(如True/False)。

  • 解析函数(Parsing Function):对象O中的GO是一个解析函数,它负责解释语言模型的输出,并将其转换为最终的事实验证结果。这个函数可以根据对象O中的指示和方法来处理和格式化输出。

函数的应用

在论文中,FaaF方法通过函数对象来提高事实验证的效率和准确性。这种方法允许在一个单一的调用中验证多个事实,减少了对语言模型的调用次数,同时降低了生成的令牌数量。通过这种方式,FaaF能够在不完整或不准确信息的情况下,更有效地识别出不支持的事实陈述。

总的来说,论文中介绍的函数是一种创新的方法,它通过结构化和编程式的方式,提高了对RAG系统生成文本中事实陈述的验证能力。这种方法为自动化事实验证领域提供了新的视角,并有望在未来的研究和应用中发挥重要作用。

事实回忆评估框架

在论文中,RAG系统的端到端事实回忆评估框架是一个全面的评估体系,旨在准确衡量RAG系统在事实回忆方面的表现。这个框架不仅关注于系统生成文本的事实准确性,还考虑了检索机制的有效性。以下是对这一评估框架的详细介绍:

框架组成部分

  1. 数据集创建:框架的第一步是创建一个包含多种类型答案的数据集。这些答案可能包括基于事实的答案、无根据的答案和质量较差的答案。数据集通常来源于真实的查询和相应的参考信息。

  2. 事实生成:使用特定的语言模型(如LMf)从参考源中提取事实陈述。这些事实陈述构成了评估的基础,用于后续验证RAG系统输出的准确性。

  3. 人工评估:通过人工评估员对生成的事实陈述进行验证,建立一个事实真相的基准。这一步骤确保了评估的准确性和可靠性。

  4. 自动事实验证:利用不同的自动事实验证方法(包括FaaF)来评估RAG系统生成的答案。这一步骤是通过比较系统输出和人工评估的基准来完成的。

框架的运作流程

  1. 输入:给定一个问题和相关的参考信息,RAG系统会生成一个答案。

  2. 检索和生成:RAG系统通过检索外部知识源并结合语言模型的生成能力来构建答案。

  3. 事实提取:从生成的答案中提取出关键的事实陈述。

  4. 事实验证:使用FaaF等方法对这些事实陈述进行验证,以确定它们是否准确无误。

  5. 性能评估:根据事实验证的结果来评估RAG系统的性能。这包括计算错误率、F1分数等指标。

框架的优势

  • 全面性:端到端框架考虑了从信息检索到文本生成的整个过程,提供了一个全面的评估视角。

  • 自动化:通过自动化的事实验证方法,框架能够高效地处理大量的数据,适用于大规模的评估任务。

  • 准确性:结合人工评估和自动化验证,框架旨在提供准确的性能评估结果。

  • 可扩展性:由于其结构化的设计,该框架可以轻松地适应不同的数据集和评估需求。

结论

RAG系统的端到端事实回忆评估框架为评估和优化RAG系统提供了一个强有力的工具。通过结合人工评估的准确性和自动化验证的效率,该框架有助于推动RAG技术的发展,并确保生成的文本在事实准确性方面的可靠性。此外,该框架的设计也为未来的研究提供了扩展和改进的可能性

 

图1:展示了FaaF的概览。FaaF通过一个构造器动态地从一系列事实陈述中创建一个函数对象。当输入文本被提供时,这个函数的调用使得LMeval能够在单次调用中验证所有事实。与传统的提示方法相比,FaaF显著降低了识别错误事实的错误率,最多可降低40个百分点,并且将LMeval的调用次数和输出令牌数量减少了超过5倍。

问题

RAG系统在实施实际事实回忆评估时面临几个挑战:

  1. 首先,自动验证生成文本中的真实性和独立陈述,尤其是在低质量RAG的环境下,尚未得到充分的研究,相较于提升语言模型生成文本的准确性,这一点被忽视了。
  2. 其次,由于一个生成的文本片段可能包含多个需要验证的事实,逐个独立验证的方法不仅耗时而且对资源的需求极大。
  3. 再者,RAG系统包括知识库、检索机制、提示构建和语言模型等多个组成部分,这些都需要细致的调整,因此在实际应用中,效率是一个关键因素。
  4. 此外,生成文本与真实文本的精确匹配往往会导致误判,因为真实信息可能以不同的方式出现在生成文本中。
  5. 最后,当真实信息长度超过几个单词时,精确匹配的可能性就会大幅降低。

解决方案(FaaF)

为了解决RAG系统中的实际事实回忆评估问题,提出了框架FaaF(事实即函数)。

  1. 专为 RAG 系统量身定制的完整事实召回评估框架。它不仅能够生成测试数据集,还能自动执行事实回忆评估。
  2. 通过结合真实事实和人工注释,评估数据的真实性得到了增强。WikiEval提供了一系列问题与答案对,其中答案的事实准确性参差不齐,这有助于模拟RAG系统的不完善响应。
  3. FaaF是一种创新的事实验证方法,它在所有测试条件下均优于传统的提示验证方式,并且显著减少了LM的调用次数和所需的令牌数量,降幅超过5倍。

考虑下图,FaaF通过一个构造器动态地从一系列事实中创建一个函数对象。当输入文本被提供时,该函数的调用使得LMeval能够在单次调用中验证所有事实。与传统的提示方法相比,FaaF大幅降低了识别错误事实的错误率,最多可降低40个百分点,并且显著减少了LMeval的调用次数和输出令牌数量。

下图展示了RAG系统的事实回忆评估流程。首先,基于一组确定的答案,我们使用LMf工具来提取相关的事实。接着,我们将RAG系统生成的假设性回答(例如,无事实依据的答案和不合格的答案)与这些提取出的事实进行对比,以评估其回忆事实的能力。

综上所述

研究指出,传统的依赖提示进行事实验证的方法往往会导致对陈述真实性的过度估计,尤其是在处理信息缺失的文本时。这种方法的错误率可能高达50%,尤其是在面对不完整文本的情况下。

然而,将事实作为语言模型(LM)的输入函数,即FaaF方法,显著提升了验证的精确度和效率。FaaF的研究结果表明,含有相关但可能不准确信息的文本,相较于那些缺乏细节或不完整的文本,更容易产生误报。

此外,研究还发现,在正确与错误的判断中引入不确定性的选项,能够提升整体的验证准确性。在某些情况下,要求在验证事实之前提供引用可能会有所帮助,但如果文本只是间接支持事实而未提供直接引用,这样的要求可能会导致事实被错误地标记为不支持。

最终,采用FaaF方法大幅减少了进行事实验证所需的LM调用次数和令牌数量,从而在成本和时间上提高了整体的评估效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/595765.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Note-模型的特征学习过程分析

模型的学习过程 将数据的特征分为,有用特征和无用特征(噪声).有用特征与任务有关,无用特征与任务无关. 模型的学习过程就是增大有用特征的权重并减少无用特征的权重的过程. 神经网络反向传播过程简化如下: y a 0 x 0 a 1 x 1 , l o s s 0.5 ∗ ( y l a b e l − y ) 2 y …

出门一笑, “栈” 落江横 (Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

C语言中strcpy函数的实现

C语言中strcpy函数的实现 为了便于和strcpy函数区别,以下命令为_strcpy。 描述:实现strcpy,字符串拷贝函数,函数原型如下: char* strcpy(char* _Destination, const char *_Source);_strcpy实现: char*…

指针 基础知识

本笔记为观看56 指针-指针的定义和使用_哔哩哔哩_bilibili后的学习笔记 指针的定义和使用 1、定义指针 int main () {//1、定义指针int a 10;//指针定义的语法: 数据类型 * 指针变量名;int * p;//让指针记录变量a的地址p &a; //& 为取址符cou…

学习Python的第四天

使用工具 PyCharm Community Edition 2023.3.4 使用环境 Python3.10.4 目录 1.字面量 1.1 值的类型 1.2 字面量的写法 2.注释 2.1 注释的作用 2.2 单行注释 2.2.1 语法 2.3 多行注释 2.3.1 语法 2.3.2 一般用来解释 2.4 注释示例 2.4.1 运行结果 3.变量 3.1…

【轻松一刻】中国茶叶探索奇妙之旅

文章目录 茶多酚 茶叶大类 龙井茶 泡茶方法 茶叶保存 参考资料 茶多酚 茶多酚是形成茶叶色香味的主要成份之一,也是茶叶中有保健功能的主要成份之一。茶多酚的副产品咖啡因,又称为咖啡碱,能兴奋大脑皮层,所以喝茶有提神作用…

【单片机】PMS5003,PM2.5传感器数据读取处理

文章目录 传感器介绍数据处理解析pm2.5的代码帮助、问询 传感器介绍 PMS5003是一款基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集 并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而 换算成为质量浓度,并以通用数字接口形式输出。本传感器可…

ES学习日记(八)-------ik安装和简易使用

一、下载和安装 https://github.com/infinilabs/analysis-ik.git 网络不好可以用这个地址,注意:ik版本要和es版本保持一致 现成地址 注意es用户操作或给es用户权限 plugins新建ik文件夹,并把压缩包解压到ik unzip elasticsearch-analysis-ik-7.4.2.zip /bin目录启动es: 二…

MySql并发事务问题

事务 事务概念: 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务的特性:ACID: 小…

【HTML】CSS样式(二)

上一篇我们学习了CSS基本样式和选择器,相信大家对于样式的使用有了初步认知。 本篇我们继续来学习CSS中的扩展选择器及CSS继承性,如何使用这些扩展选择器更好的帮助我们美化页面。 下一篇我们将会学习CSS中常用的属性。 喜欢的 【点赞】【关注】【收藏】…

【SCI绘图】【曲线图系列1 python】绘制扫描点平滑曲线图

SCI,CCF,EI及核心期刊绘图宝典,爆款持续更新,助力科研! 本期分享: 【SCI绘图】【曲线图1 python】绘制扫描点平滑曲线图 1.环境准备 python 3 import numpy as np import pandas as pd import proplot …

面试算法-139-盛最多水的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。…