FoRAG:面向网络增强型长文本问答的事实优化检索增强生成方法
人工智能咨询培训老师叶梓 转载标明出处
检索增强生成技术尽管出现了各种开源方法和商业系统,如Bing Chat,但生成的长文本答案中缺乏事实性和清晰逻辑的问题仍未得到解决。为了解决这些问题,来自蚂蚁集团和清华大学的研究者们提出了一种名为FoRAG(Factuality-optimized Retrieval Augmented Generation)的新方法。
图1展示了在网络增强型长文本问答任务中,大模型的输入处理过程。图中左上角描绘了任务的输入,左下角展示了现有的生成器如何直接生成答案,而中间部分则介绍了本文提出的大纲增强生成器。这种生成器在生成长篇答案前,会先起草一个组织模式和大纲,以增强答案的逻辑性。图的右侧展示了本文提出的双重细粒度的事实性优化方法,该方法通过在事实性评估和奖励建模这两个核心步骤中融入细粒度设计来优化事实性,并在每个步骤中提出了多种粒度级别的方法。
方法
FoRAG技术的核心在于两阶段生成过程。该方法包括两个阶段:首先是生成答案的大纲,然后是扩展大纲生成完整的回答。
大纲增强的RAG
大纲增强型生成器
在大多数现有的开源方法中,回答是直接生成的,即检索到的内容与原始查询直接连接,并使用特定的提示模板输入到生成模型中。然而,与闭源方法生成的回答相比,这些回答通常较短且缺乏清晰的逻辑结构。为了提高性能,一种可能的方法是使回答更加有组织。一些研究发现,包含任务描述和一些示例的精心设计的提示将提高不同任务上生成回答的质量。例如,“让我们一步一步思考”的技术通过鼓励链式推理能力,显著提高了性能。
受上述工作的启发,研究者们将大纲增强技术引入到回答生成中。他们提出的生成器包括大纲阶段和扩展阶段,这与人类回答问题时通常先概述和组织答案,然后再扩展每个点的直觉一致。具体来说,为了生成具有清晰逻辑流程的高质量输出,他们提示模型首先输出最终答案的大纲,然后将草稿连接到提示中以生成完整回答。在表1中,通过应用大纲增强生成技术,生成的回答(Ans. (OE))比原始回答(Ans. (Ori))显著更长,这表明了更强的逻辑结构。

大纲增强型长文本问答数据集
目前,用于训练网络增强型RAG模型的开源网络增强型长文本问答数据集只有两个。英文数据集WebGLM-QA包含44k个样本,而中文数据集WebCPM包含5,500个样本。两个数据集中的查询都从ELI5中采样,WebGLM-QA从中采样问题,WebCPM还使用人工注释者将问题翻译成中文。然后使用网络搜索引擎收集相关段落。
研究者们使用这两个数据集中的查询和相关段落构建了一个大纲增强型双语长文本问答数据集。他们应用大纲增强生成技术,使用GPT4收集大纲增强型回答。他们设计了一个提示,指导GPT4以逐步的方式执行大纲阶段和扩展阶段。表1中提供了现有数据集和他们的大纲增强型回答的详细统计数据。可以清楚地看到,他们的示例回答比现有工作中的回答长得多,这是由于更强的逻辑结构。从WebCPM和WebGLM派生的大纲增强型回答是公开可用的。
事实性优化的RAG
为了解决网络增强型长文本问答中的事实性问题研究者提出了一种新颖的事实性优化方法,他们开发了一种新颖的双重细粒度RLHF框架,该框架表征了自动化评估和奖励建模的不同粒度。
直接应用RLHF的困难
在大模型对齐中,使用人类反馈的强化学习(RLHF)是一种广泛使用的技术,用于减少不良生成,例如聊天助手任务中的有害回答。将非事实性视为某种不良行为,自然而然地,促进网络增强型RAG中的事实性的一种方法是利用RLHF来防止生成器产生非事实性回答。通常,RLHF是在手动注释的偏好数据上进行的。例如,给定查询和检索到的上下文,回答的事实性可以被注释为,其中反映潜在的人类偏好。RLHF训练一个奖励模型来估计给定任何查询、参考和回答的事实性,即学习人类偏好函数R。然后应用RL方法,如PPO,基于训练好的奖励模型来优化生成模型。
然而,直接将传统的RLHF方法应用于网络增强型LFQA的事实性优化会遇到两个固有困难。首先,手动注释的事实性标签通常很昂贵,这涉及到比较长篇回答和其相应冗长参考之间的事实细节。其次,标准RLHF使用整体奖励,即,只有在整个回答的最后一个token时才不为零。这种整体奖励只能为生成模型的训练提供稀疏的信号。在网络增强型LFQA中,由于回答通常是长篇的,因此由于使用整体奖励而导致的稀疏问题将更加夸张。
双重细粒度RLHF
鉴于传统RLHF在网络增强型RAG的事实性优化中的上述困难,研究者们提出了一种双重细粒度RLHF框架,以细粒度的方式进行事实性优化。与主要关注单一维度的先前工作不同,他们的框架结合了两个核心步骤的细粒度设计:事实性评估和奖励建模。
研究者首先介绍了必要的符号和定义,这些符号和定义使得可以为答案表征多个奖励,构成RL过程中的更密集的奖励信号。具体来说,他们首先将输出分解为L个文本跨度,每个跨度对应于评估粒度,其中每个跨度在步骤结束。密集的奖励信号是一个L维向量,其第l维代表给定查询和检索上下文的输入的每个跨度的奖励,该奖励分配给最终token在。特别是,当L=1时,他们的方法退化为具有整体奖励的标准RLHF。
细粒度评估
研究者考虑了答案分解和自动化片段评估的三个不同粒度级别:
- 整体:这是评估答案的标准粒度。每个生成的答案都与单一的事实性分数相关联。
- 句子级别:如先前研究建议的,可以将答案分解为句子,然后分别评估每个句子。在这种情况下,评估结果被表示为,其中i是句子的索引。
- 子声明级别:按照先前的工作,他们可以通过大模型进一步将每个句子分解为多个子声明,每个子声明包含单个事实信息。分解后,他们分别评估每个子声明。由于使用大模型的分解打破了子声明与原始答案之间的关联,因此他们将所有子声明的分数聚合成一个分数以评估句子的事实性。更具体地说,假设句子i有j个子声明,那么句子的评估分数由给出,其中表示句子i的子声明j的事实性分数,Agg是聚合函数(以平均值、最小值或最大值的形式)。
细粒度奖励建模
在两个可能的粒度级别上构建奖励模型:
- 序列级别:为每个序列学习一个单一的奖励,其实际形式取决于评估的粒度。通过这种方式,关联的奖励反映了相应序列的事实性,然后被分配给每个序列的最后一个标记。
- 标记级别:为序列中的每个标记学习一个奖励。通过这种方式,序列的奖励是通过聚合所有标记级别的奖励来计算的,即。

在表2中,展示了不同细粒度评估和细粒度奖励建模技术的组合在训练损失方面的对比。这种双重细粒度RLHF框架不仅解决了事实性问题,还为网络增强型RAG提供了一种新的优化策略,可以推广到其他RLHF任务中。通过这种方法,研究者们能够更细致地评估和优化生成回答的事实性,从而提高回答的质量和可信度。
实验
实验使用了两个常用的网络增强型长文本问答(Web-enhanced Long-form QA)数据集:WebGPT数据集和WebCPM数据集。WebGPT数据集包含272个样本,每个样本由ELI5数据集中的一个问题、几个Bing检索到的网页以及提取的参考资料组成。而WebCPM数据集则是一个中文数据集,结构与WebGPT类似,研究者们随机将其分为了训练集、验证集和测试集。

表3展示了FoRAG-L 7B和FoRAG-C 6B在这两个数据集上与其他现有方法的性能比较。结果显示,FoRAG-C 6B在五个评估指标中超过了所有基线方法,而FoRAG-L 7B在所有指标上表现最佳,尤其是与参数数量为其24倍的WebGPT-175B相比,FoRAG-L 7B在双语网络增强型问答任务中显示出了优越性。

为了进一步评估大纲增强型生成器的有效性,研究者们训练了两个基线模型,这些模型直接基于数据集生成答案,而没有使用大纲阶段。表4中的结果显示,使用大纲增强型技术可以显著提高模型在连贯性和有用性方面的性能,尤其是在中文任务中。
研究者们还评估了事实性优化技术的有效性。表4表明,添加事实性优化技术可以显著提高问答和句子层面的事实性一致性得分,而不影响其他两个指标或生成长度。
研究者们比较了不同事实性优化粒度的FoRAG方法的性能,并发现子声明级别的评估表现最佳。他们还发现,与常规的段落级奖励建模相比,标记级奖励建模的性能较差,这可能是因为数据集的长度可能导致了标记级建模的过拟合。
最后研究者们评估了训练效率,并发现大纲增强型生成步骤对训练时间的影响几乎可以忽略不计,而双重细粒度RLHF步骤对推理时间没有影响。尽管双重细粒度RLHF框架的最佳执行版本比标准RLHF多花了大约67.7%的时间,但通过使用多头奖励层和精心设计的关注掩码,可以在一次前向传递中计算所有句子的奖励,从而使得额外的计算成本变得微不足道。总的来说,FoRAG在合理的额外计算成本下,超越了基线方法。
论文链接:https://arxiv.org/pdf/2406.13779
相关文章:
FoRAG:面向网络增强型长文本问答的事实优化检索增强生成方法
人工智能咨询培训老师叶梓 转载标明出处 检索增强生成技术尽管出现了各种开源方法和商业系统,如Bing Chat,但生成的长文本答案中缺乏事实性和清晰逻辑的问题仍未得到解决。为了解决这些问题,来自蚂蚁集团和清华大学的研究者们提出了一种名为…...
Android NSD局域网发现服务
近期在了解局域网发现服务的时候无意间看到Android 自带的(Network Service Discovery)网络发现服务,在一番验证之后发现实现比较简单,可靠性也高,因此在这里做一个整理,算是对自己知识做一个归档。 网络服…...
算法的学习笔记—左旋转字符串(牛客JZ58)
😀前言 在程序设计中,字符串处理问题屡见不鲜,其中“字符串左旋”是一种常见操作,今天我们一起来探讨一个经典的左旋转字符串题目,以及一种优雅的解决方案——三步翻转法。 🏠个人主页:尘觉主页…...
Mac 上无法烧录 ESP32C3 的问题记录:A fatal error occurred:Failed to write to target RAM
文章目录 问题描述驱动下载地址问题解决:安装 CH343 驱动踩的坑日志是乱码 问题描述 我代码编译可以,但是就是烧录不上去 A fatal error occurred:Failed to write to target RAM(result was 01070000:Operation timed out) Uploaderror:上传失败&…...
ios 项目升级极光SDK
由于项目使用的是旧版本,隐私合规检查不通过,需要升级到最新版本, 使用cocoapods集成无法正常运行,.a文件找不到,可能项目比较久了,最好选择手动导入 下载最新版本SDK,将 SDK 包解压ÿ…...
【Java】java | logback日志配置 | 按包配置级别
一、概述 日志配置需求: 本地部分包开debug,其他路径走配置;只在本地环境有效 二、logback.xml配置 <!--本地调试,开debug--> <springProfile name"dev"><logger name"cn.hg.demo" level&quo…...
Virtuoso使用layout绘制版图、使用Calibre验证DRC和LVS
1 绘制版图 1.1 进入Layout XL 绘制好Schmatic后,在原理图界面点击Launch,点击Layout XL进入版图绘制界面。 1.2 导入元件 1、在Layout XL界面左下角找打Generate All from Source。 2、在Generate Layout界面,选中“Instance”&#…...
Spring框架原理面试题及参考答案
目录 什么是Spring 开发框架? 说说Spring 的 IOC 和 DI? 简述IoC(控制反转)及在 Spring 中的实现 说说Spring IOC 容器的基本概念? 说说Spring IoC 的实现机制? 说说Spring IoC 容器? 简述Spring ApplicationContext 说说Spring Bean 的生命周期 说说在 Spring…...
Java类的static成员以及代码块(详细版)
文章目录 一、什么是static成员二、static修饰的成员有何意义三、static修饰成员变量四、static修饰成员方法4.1、静态成员变量不可以在方法内创建4.2、静态成员方法内部不可以访问非静态成员变量4.3、总结 五、static成员变量的初始化5.1、就地初始化5.2、静态代码块初始化 六…...
Opensearch集群部署【docker、服务器、Helm多种部署方式】
操作系统兼容性 我们建议在 Red Hat Enterprise Linux (RHEL) 或使用systemd的基于 Debian 的 Linux 发行版上安装 OpenSearch ,例如 CentOS、Amazon Linux 2 和 Ubuntu Long-Term Support (LTS)。OpenSearch 应该适用于大多数 Linux 发行版,但我们只测…...
本地Docker部署开源WAF雷池并实现异地远程登录管理界面
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
性能需求笔记
名称解释 系统用户:所有注册过的用户;在线用户:某时间段内登录且在线的用户 pv:用户浏览页面的次数 UV:登录系统的用户,uv课产生多个pv 性能测试:测试软件在系统中的运行性能,度量系…...
ts:数组的常用方法(reduce累加)
ts:数组的常用方法(reduce累加) 一、主要内容说明二、例子reduce方法(累加)1.源码1 (reduce方法)2.源码1运行效果 三、结语四、定位日期 一、主要内容说明 ts中数组的reduce方法,用…...
Begin
cpp 编程的发展方向还是很多的:游戏、嵌入式、QT、客户端、服务端、机器学习、算法大模 型 ...,现阶段还是不太清楚具体想走什么方向。主QT编程应该是不在考虑之内的,可以为辅简单 学习一下;游戏方向:需要学习lua语言…...
【实战案例】Django框架表单处理及数据库交互
本文基于之前内容列表如下: 【图文指引】5分钟搭建Django轻量级框架服务 【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应 【实战案例】Django框架连接并操作数据库MySQL相关API 【实战案例】Django框架使用模板渲染视图页面及异常处理 更新编…...
python开发工具是选择vscode还是pycharm?两款软件优缺点对照!
Pycharm和VSCode是两款流行的代码编辑器,它们都有各自的优缺点和适用情况。本文将从以下几个方面对它们进行比较和分析: 功能和扩展性性能和稳定性用户体验和界面价格和支持 功能和扩展性 Pycharm是一款专为Python开发而设计的集成开发环境(…...
2025选题|基于Hadoop的物品租赁系统的设计与实现
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...
【Qt】QTableView添加下拉框过滤条件
实现通过带复选框的下拉框来为表格添加过滤条件 带复选框的下拉框 .h文件 #pragma once #include <QCheckBox> #include <QComboBox> #include <QEvent> #include <QLineEdit> #include <QListWidget>class TableComboBox : public QComboBox …...
部署DNS主从服务器
一。DNS主从服务器作用: DNS作为重要的互联网基础设施服务,保证DNS域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速日不间断的域名查询服务 DNS 域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件&…...
从可逆计算看低代码
2020年低代码(LowCode)这一buzzword频繁亮相于主流技术媒体,大背景下是微软/亚马逊/阿里/华为等巨头纷纷入场,推出自己的相应产品。一时之间,大大小小的技术山头,无论自己原先是搞OA/ERP/IOT/AI的ÿ…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
XXE漏洞知识
目录 1.XXE简介与危害 XML概念 XML与HTML的区别 1.pom.xml 主要作用 2.web.xml 3.mybatis 2.XXE概念与危害 案例:文件读取(需要Apache >5.4版本) 案例:内网探测(鸡肋) 案例:执行命…...
c++算法学习3——深度优先搜索
一、深度优先搜索的核心概念 DFS算法是一种通过递归或栈实现的"一条路走到底"的搜索策略,其核心思想是: 深度优先:从起点出发,选择一个方向探索到底,直到无路可走 回溯机制:遇到死路时返回最近…...
