【RAG 论文】Chain-of-Note:为 RAG 引入 CoT 让模型生成阅读笔记来提高面对噪音文档和未知场景的鲁棒性

论文:Chain-of-Note: Enhancing Robustness in Retrieval-Augmented Language Models
⭐⭐⭐
Tencent AI Lab, arXiv:2311.09210

文章目录

    • 一、论文速读
    • 二、实现的细节
      • 2.1 Note Design
      • 2.2 Data Collection
      • 2.3 Model Training
    • 三、实验结果
      • 3.1 QA Performance
      • 3.2 对 Noise Robustness 的实验
      • 3.3 对 Unknown Robustness 的实验
    • 四、总结

一、论文速读

这篇文章的主要关注于 RAG LLM 模型的以下两个方面:

  1. Noise Robustness:即能够自动忽视掉检索到的不相关的文档,不要让无关知识误导
  2. Unknown Robustness:当无法回答用户的提问时,应当承认自己的局限性并回答 “unknown”

本工作提出了 Chain-of-Noting,思路如下:

CoN 示例

  1. 用户提出问题 user query q q q 和检索到的 k 个文档 [ d 1 , … , d k ] [d_1, \dots, d_k] [d1,,dk]
  2. LLM 针对每一个检索到的文档,生成一段阅读笔记,即针对 passage d 1 d_1 d1,就生成一段阅读笔记 y d 1 y_{d_1} yd1,比如上图中的 The first passage suggests ...
  3. 基于阅读笔记 [ y d 1 , … , y d k ] [y_{d_1}, \dots, y_{d_k}] [yd1,,ydk],LLM 综合这些信息来生成 final response y y y,也就是上图中回答部分的黑体字 Based on information ...

这样就能得到最终的答案。

这里 LLM 是使用了训练的 LLaMa-2 7B 模型,为了能够实现 Noise Robustness 和 Unknown Robustness,关键的工作在于 prompt 的设计、训练数据的收集和对模型的训练

二、实现的细节

这里关键的工作就是三个:

  1. Note Design:即设计出模型如何生成 reading notes
  2. Data Collection:收集用于训练 LLaMa 模型的数据
  3. Model Training:使用训练数据来训练 LLaMa

2.1 Note Design

阅读笔记(note)的主要目的是为了使模型能够系统地评估每个检索到的文档对输入问题的相关性。这些笔记帮助模型识别文档中的最关键和可靠的信息,同时过滤掉不相关或不可信的内容。

论文定义了三种类型的 note:

  1. 直接答案型:当检索到的文档直接回答了问题,模型会生成阅读笔记,并基于这些信息形成最终答案。
  2. 上下文推断型:如果文档没有直接回答问题,但提供了有用的上下文信息,模型会利用这些信息和自身的知识库来推断答案,并生成相应的阅读笔记。
  3. 无关答案型:当检索到的文档与问题不相关,且模型缺乏足够的知识来回答时,模型会生成表示“未知”的阅读笔记。

这些 note 都是文本形式的摘要,突出显示文档中与问题最相关的部分。

2.2 Data Collection

为了训练 LLaMa-2 7B 以整合 CoN 框架,作者需要收集包含 notes 和 answer 的训练数据。

数据收集过程如下:从 Natural Questions(NQ)数据集中随机抽取了 10,000 个 question,根据这些 question 和相应检索到的 passages,通过 prompt 让 ChatGPT 生成这个 question 的 notes 和 answer,CoN 的 prompt 如下:

prompt 模板

该 prompt 可以在 LangSmith 中体验到:https://smith.langchain.com/hub/bagatur/chain-of-note-wiki/playground?commit=6533425b

通过上面的 prompt,就可以让 ChatGPT 生成训练数据了。之后,ChatGPT 生成的训练数据需要进一步的人工校验。

2.3 Model Training

本工作基于 LLaMa-2 7B 训练,训练时,将 instruction、user question 和 retrieved passages 结合 prompt 作为 input,教 model 生成 notes 和 answer。

损失函数的设计:在 model 的生成中,包含 notes 和 answer,一个很明显的现象是 notes 比 answer 长很多,这样两者对 loss 的 contribute 就不太协调,为了克服这个问题,整个训练过程中 loss 的计算会有变化:

  • 50% 的训练时间中,next token prediction 的 loss 是整个 notes 和 answer 的 token 序列的损失
  • 50% 的训练时间中,next token prediction 的 loss 是只有 answer 的损失,这样能让 model 也更加专注于最终 answer 的准确度和可靠性

三、实验结果

3.1 QA Performance

如下数据体现了 CoN 的提升效果:

Table2

  • 第一行是纯 LLaMa 的输出,即 answer = LLM( q q q )
  • 第二行是使用 DPR 作为检索器,搭配 LLaMa 做 standard RAG 的效果
  • 第三行则是在 standard RAG 上额外附加了 CoN 的效果

3.2 对 Noise Robustness 的实验

噪声数据指的是与查询不相关或误导性的信息,在该实验中,通过故意引入 noise data 来实验 CoN 模型的鲁棒性。

噪声比例(noise ratio)指的是不相关的文档在所有检索到的文档中的比例,通过调整噪声比例,作者们模拟了不同程度的噪声数据对模型性能的影响。

如果需要检索 k 个文档,当噪声比例为 20% 时,那么检索到的 k 个文档中有 1 个是噪声文档,其余 k-1 个是相关文档。

具体的分析可以参考原论文。

3.3 对 Unknown Robustness 的实验

这里使用了 RealTimeQA 数据集,这个数据集的测试内容(因为很新)完全不在训练模型的知识范围内。

在这个实验中,评估模型的拒绝率(RR),拒绝问题的数量/总问题。这突出了我们的模型在初始训练阶段识别和忽略不熟悉或未学习的信息的增强能力。

四、总结

我们都知道,RAG中的召回阶段并不能保证一直能检索出最相关或者最值得信赖的信息。不相关的信息可能会对模型带来错误的指导,即使模型内部已经包含了回答问题的信息,也可能会被忽视。因此,如何进行 RAG 上下文召回的自适应可控回复,如典型的拒答,显得十分重要

关于拒答逻辑,通过构造诚实样本,进行微调,也可以让模型具备拒答能力:

在这里插入图片描述
而本文提出了使用 CoT 类似的思路使用 Chain-of-Note 提示让 LLM 生成阅读笔记,并用于 RAG 上下文的自适应增强,是可以与其他的思路进行交融的。

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

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

相关文章

虚拟机VMware下ROS Neotic(Ubuntu 20.04)下安装OpenCV

一、ROS安装 ROS的官方安装步骤: 1、noetic / Ubuntu 20.04 : http://wiki.ros.org/noetic/Installation/Ubuntu 2、melodic / Ubuntu 18.04: http://wiki.ros.org/melodic/Installation/Ubuntu 3、kinetic / Ubuntu 16.04: http:…

第三节课,后端登录【1】.2--本人

一、视频链接 网址: 后端用户脱敏和session-CSDN直播 二、代码开始 2.1 新建一个request参数。完成用户登录态键 快捷建, 全局变量 代码: // 3.记录用户的登录态/*** 这段代码是Java Web开发中的一部分,用于在会话&#xff08…

【目标检测】FPN特征金字塔完整流程详解

学习视频:1.1.2 FPN结构详解 对比 可以看到FPN是自上而下、自下而上并且可以进行多尺度特征融合的的层级结构。 具体结构 1x1 conv: 对通道数进行调整,不同大小的特征图通道数不同,越高层次的特征图通道数越大,论文中使用256个1…

ChatGPT/GLM API使用

模型幻觉问题 在自然语言处理领域,幻觉(Hallucination)被定义为生成的内容与提供的源内容无关或不忠实,具体而言,是一种虚假的感知,但在表面上却似乎是真实的。产生背景 检索增强生成(RAG&…

线性神经网络示例

通过5个条件判定一件事情是否会发生,5个条件对这件事情是否发生的影响力不同,计算每个条件对这件事情发生的影响力多大,写一个线性神经网络模型pytorch程序,最后打印5个条件分别的影响力。 一 在这个场景中,一个线性神经网络&…

代码随想录算法训练营DAY32|C++贪心算法Part.2|122.买卖股票的最佳时机II、55.跳跃游戏、45.跳跃游戏II

文章目录 122.买卖股票的最佳时机II思路CPP代码 55.跳跃游戏思路CPP代码 45.跳跃游戏II思路方法一代码改善 CPP代码 122.买卖股票的最佳时机II 力扣题目链接 文章讲解:122.买卖股票的最佳时机II 视频讲解: 状态:本题可以用动态规划&#xff0…

boa交叉编译(移植到arm)

参考:CentOS7 boa服务器的搭建和配置-CSDN博客 以下操作在宿主机/编译平台操作: 1. 先执行[参考]1到3、 4.2、4.3、4.4、4.5 2. 修改MakeFile # 由以下: CC gcc CPP gcc -E # 改为: CC arm-linux-gnueabihf-gcc CPP arm-l…

【Flask】Flask中HTTP请求与接收

一、接收http请求与返回响应 在Flask中,可以通过app.route装饰器来定义路由函数。 app.route(/BringGoods,methods [POST, GET]) GET请求:使用request.args.get(key)或者request.values.get(key)来获取URL中的参数。 POST请求: 使用req…

SSH新功能揭秘:远程工作提升指南【AI写作】

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

014_用vim复制粘贴_保持双手正位

[oeasy]python0014_用vim复制粘贴_保持双手正位 继续运行 🥊 回忆上次内容 程序员 还是 很可爱的 要关心 身边的程序员 啊 毕竟是新时代的 典型新职业 文明 主流职业 血型 渔猎采集文明 猎人 O 游牧文明 牧民 B 农业文明 农民 A 工业文明 工人 商…

红魔9pro/9pro+秒解锁BL+获取root权限+刷国际版+救砖降级刷机教程

红魔8开始,官方对刷机就进行了很多限制,常见的就是阉割了解锁BL指令,让我们不能自 己解锁BL刷机了,而8代旧版并没有严格,自然我们可以使用旧版的abl分区来实现解锁BL 红魔9代发布开始,官方直接阉割了全部Ab…

【运维】Git 分支管理

一般来讲,系统代码需要经过研发、测试、生产三种环境。那么在Git上如何管理分支,才不会乱?在线上生产环境有问题时有条不紊的解决。 经过发展,有一个Git Flow原理可帮助解决。设置以下几种分支。 master——production生产环境。…

unity读写本地excel_2024.4.22

using System.Collections; using System.Collections.Generic; using UnityEngine; using OfficeOpenXml; using System.IO; using Excel; using System.Data; using System; /// <summary> /// https://blog.csdn.net/Xz616/article/details/128893023 /// Unity3D操作…

Prometheus数据模型与查询语言:构建高效监控系统的关键

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Prometheus&#xff1a;监控的神》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Prometheus诞生史 二、Prometheus的数据模型与查询语…

中电金信:向“新”而行——探索融合架构的项目管理在保险行业的应用

近年来&#xff0c;险企在政策推动、市场牵引、自身发展、新技术应用日趋成熟等内外部因素的驱动下&#xff0c;积极投身到数字化转型的浪潮中。在拜访各类保险客户和合作项目的过程中&#xff0c;我们发现不少险企在数字化转型中或多或少都面临着战略如何落地、技术如何承接和…

wlan二层直连组网实验(ensp)

目录 1. VLAN 端口类型及参数设计2. IP 地址规划3. WLAN数据规划(1) DHCP服务器配置(2) AC 源接口地址、认证方式配置(3) AP 组的创建(4) 创建域管理模板、国家码认证(5) 创建安全模板(6) 创建SSID模板(7) 创建VAP模板(8) AP组绑定模板(9) 查看&#xff1a; 1. VLAN 端口类型及…

快手面试算法真题

按照html中的标签层数遍历节点名。 例如&#xff1a;html代码如下&#xff1a;(上面的数字表示层数) <!-- 1 --><div class"div1"><!-- 2 --><span class"span1"></span><!-- 2 --><p class"p1"><…

43. UE5 RPG 实现敌人血量显示条

在上一篇文章中&#xff0c;我们实现了火球术伤害功能&#xff0c;在火球击中敌方目标&#xff0c;可以降低敌人20的血量&#xff0c;这个值现在是固定的&#xff0c;后面我们会修改火球的伤害设置。接着&#xff0c;我们也测试了功能是实现的&#xff0c;但是在正常的游玩过程…

untiy avpro播放超过8K视频的解决方案

安转LAV Filters解码器&#xff0c;然后指定Avpro使用这个解码器播放即可 第一步 安装解码器 下载链接 第二步 AVPro设置 MediaPlayer脚本中一共两处

网络安全实训Day17and18

写在前面 第17和18天都讲的sql注入&#xff0c;故合并 ​​​​​​ 网络空间安全实训-渗透测试 Web渗透 定义 针对Web站点的渗透攻击&#xff0c;以获取网站控制权限为目的 Web渗透的特点 Web技术学习门槛低&#xff0c;更容易实现 Web的普及性决定了Web渗透更容易找到目…