【RAG 论文】SKR:Self-Knowledge 指导下的 RAG

论文:Self-Knowledge Guided Retrieval Augmentation for Large Language Models
⭐⭐⭐⭐
Tsinghua, arXiv:2310.05002

文章目录

    • 一、论文速读
    • 二、实现细节
      • 2.1 数据的收集
      • 2.2 引出 LLM 的 Self-Knowledge 的方法
        • 1)Direct Prompting
        • 2)In-Context Learning
        • 3)Training a Classifier
        • 4)KNN(k-nearest-neighbor)
    • 三、实验结果及分析

一、论文速读

传统 RAG 的思路是引入外部知识来增强 LLM 的生成,但是现在的研究发现,有时候引入检索到的文档反而会给 LLM 的生成产生消极影响。

为了更好利用 LLM 的内部参数化知识和外部世界知识,我们需要激发模型识别自己知道还是不知道的能力,也被称为 self-knowledge。因此,本工作提出了 SKR(Self-Knowledge guided Retrieval augmentation):当 LLM 面对一个 user query,先识别出 LLM 知不知道这个问题,如果知道的话就直接让 LLM 回复,如果不知道的话就调用 retriever 进行检索

二、实现细节

该工作在 QA 的场景下做的研究,首先收集了一批研究数据,然后提出了四个方法来激发 LLM 的 Self-Knowledge 的能力。

2.1 数据的收集

对于已有的 QA 数据集,我们希望把其中的所有 question 分成两类:LLM "知道"的和"不知道"的,即 D + D^+ D+ D − D^- D

给定一个 question q i q_i qi,我们先直接把它输入给 LLM 得到 answer α ( q i ) \alpha(q_i) α(qi),然后再把它调用 retriever 后以 RAG 的形式输入给 LLM 得到 answer α R ( q i ) \alpha^R(q_i) αR(qi),然后我们拿 ground-truth answer 来衡量两种方式得到的 LLM answer:

  • 如果 α ( q i ) \alpha(q_i) α(qi) α R ( q i ) \alpha^R(q_i) αR(qi) 都不正确,直接丢弃 question q i q_i qi
  • 如果 E [ α ( q i ) ] ≥ E [ α R ( q i ) ] E[\alpha(q_i)] \ge E[\alpha^R(q_i)] E[α(qi)]E[αR(qi)],那就把 question 归为 D + D^+ D+
  • 反之则归为 D − D^- D

其中 E [ ⋅ ] E[\cdot] E[] 是一个 evaluation metric,比如 accuracy。

2.2 引出 LLM 的 Self-Knowledge 的方法

论文提出了四种方法:direct prompting、in-context learning、classifier、KNN,下面分别介绍一下。

1)Direct Prompting

也就是设计 prompt template 然后填充 question 后,直接问 LLM 是否需要额外信息来辅助生成。prompt template 如下:

2)In-Context Learning

基于前面的 direct prompting,首先给 LLM 几个示例,教会它输出 Yes 或者 No,然后再问他是否需要更多信息来辅助增强,如下图所示:

3)Training a Classifier

使用之前的数据集,基于 BERT-base 训练一个二分类的 classifier,从而决定一个 question 要不要进行检索。

4)KNN(k-nearest-neighbor)

这里基于一个 motivation:如果两个 question 在语义嵌入空间中相近,那么 LLM 会倾向于对两个 question 展示出相似的 self-knowledge。

于是,可以使用一个 pre-trained fixed encoder 来对 question 做 KNN 从而推断出它的 label。

三、实验结果及分析

论文在 5 个 QA 数据集上进行了实验,最终,KNN 的方法在 5 个数据集上平均表现最好,而 direct prompting 的方法则表现较差。

论文还发现,无论是内部知识还是外部知识,都存在自己的限制:

  • 像 CoT 这样利用 LLM 内部知识的方法,并不总是能有效提升效果
  • 检索文档这样的利用外部知识的方法,也不总是有用的,有时甚至会让模型表现更差

论文还做了如下的分析:

  • 不同 template 的 self-knowledge 影响:发现所有设计的模板,都可以让 LLM 表达出自己的响应。论文发现,LLM 对于自己认为可以回答的问题,准确率可以达到 70%~73%,这也表明仍有 30% 的问题,模型是不知道自己“不知道”的。
  • 不同数据集的 self-knowledge 影响:发现不同的方法在不同的数据集上会有一定的差距,这可能与数据集的问题有关。
  • 训练数据大小的影响:随着训练数据的增加,性能逐渐提高,这说明从训练数据中收集的 self-knowledge 是有价值的。
  • 不同知识源的影响:整体来看,Wikipedia 作为外部知识源可以让 LLM 表现更好。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正则将段落分割成句子

这里分割段落不区分中英文标点,你可以根据需求改 分割后标点跟随句子后面 def split_sentences_keep_delimiter(text):pattern r[^。!!??::;;,,][。!!??::;&#xff…

记录DemoApplication.java不变蓝问题

问题 解决方案 一、点击右下角加载 二、右键项目 勾选maven

计算机毕设

随着社会和国家的重视,大学对于大学生毕业设计越来越重视。 做软件设计设计方面,前后端分离是必不可少的,代码管理工具,前后端接口测试是项目中必须要用到的工具。做大数据设计方面,主要是要用到爬虫进行数据爬取&…

多选择性更容易理解!基于可选择性遗传算法的微电网经济-低碳协调优化程序代码!

前言 随着能源危机和环境污染日益严重,传的能源已不再满足人们日益增长的能源需求,丰富清洁的可再生能源是未来的发展方向,分布式可再生能源发电技术获得了飞速进步。然而,在引入分布式可再生电源后,微电网的复杂性以…

音频智能切换器JR-AR42-A

憬锐JR-AR42-A音频自动智能切换器(四切一),具备四路模拟卡侬立体声音频输入,两路模拟卡侬立体声音频输出,其中输入第1路和输出第1路为断电直通通道。具有输入音频信号幅度判别,可设置门限电平和切换延时时间,可以根据需…

通信系列:通信中如何度量消息中所包含的信息量?如何评估通信系统的性能?

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、通信中如何度量消息…

代码随想录训练营31day-动态规划4

一、完全背包(参考博客) 和01背包区别在于物品可以无限次放入背包。完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 因此在需要在遍历顺序上进行区别,参考代码随想录: 二、518.零钱兑换II 题目求的是组…

ASP.NET网上图书预约系统的设计

摘 要 《网上图书预约系统的设计》是以为读者提供便利为前提而开发的一个信息管理系统,它不仅要求建立数据的一致性和完整性,而且还需要应用程序功能的完备、易用等特点。系统主要采用VB.NET作为前端的应用开发工具,利用SQL Server2000数据…

初识指针(2)<C语言>

前言 前文介绍完了一些指针基本概念,下面介绍一下,const关键字、指针的运算、野指针的成因以及避免,assert函数等。 目录 const(常属性) 变量的常属性 指针的常属性 指针的运算 ①指针 -整数 ②指针-指针 ③指针与…

设计网页用什么软件

在设计网页时,可以使用多种软件来完成不同的任务。以下是一些常用的网页设计软件,以及它们的特点和用途。 1. Adobe Photoshop: Adobe Photoshop 是一款功能强大的图像编辑软件。在网页设计中,它常用于创建和编辑网页所需的图像、…

Linux—-vim基础使用

1、基本概念 Vim的工作模式有四种,普通模式,输入模式,命令模式,可视模式。 在终端中打开vim,只需要输入vim 文件,在普通模式下按i就会进入到输入模式,按下:进入命令模式,输入:q就可…

通义灵码:智能编码的革命性助手

通义灵码是由阿里云推出的一款基于通义大模型的智能编码辅助工具,它通过先进的人工智能技术,为开发者提供了一系列的智能编码功能,极大地提升了编码效率和质量。以下是通义灵码的一些核心功能和应用案例。 核心功能 代码智能生成 通义灵码…

视频降噪算法 Meshflow 介绍

介绍 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow,它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field),其运动矢量 (motion vectors) 仅在网格顶点 (mesh vertexes) 处…

Spring+SpringMVC+Jsp实现校园二手交易系统

前言介绍 在社会快速发展的影响下,使校园二手交易系统的管理和运营比过去十年更加理性化。依照这一现实为基础,设计一个快捷而又方便的网上校园二手交易系统是一项十分重要并且有价值的事情。对于传统的管理控制模型来说,网上校园二手交易系…

【AI】深度学习框架的期望与现实 机器学习编译尚未兑现其早期的一些承诺……

深度学习框架的期望与现实 机器学习编译尚未兑现其早期的一些承诺…… 来自:Axelera AI 资深软件工程师 Matthew Barrett 原帖是linkedin帖子: https://linkedin.com/posts/matthew-barrett-a49929177_i-think-its-fair-to-say-that-ml-compilation-ac…

【LeetCode刷题】739. 每日温度(单调栈)

1. 题目链接2. 题目描述3. 解题方法4. 代码 1. 题目链接 739. 每日温度 2. 题目描述 3. 解题方法 用一个栈st保存每个数的下标,同时创建一个数组res保存结果,初始值都为0。循环遍历题目中的数组temperature。如果temperature[i] > st.top()&#x…

【arduino】库的安装方法

arduino 库的安装方法 假设你已经安装好 Arduino IDE 以 OneButton 为例来介绍几种安装方法 文章目录 arduino 库的安装方法方法一:直接安装法方法二:导入 .ZIP库方法三:将库文件夹直接复制到贡献库路径下方法四:将库文件夹直接…

什么是容器微隔离 - 容器微隔离技术有哪些

如果您对容器安全有任何问题可以联系安全狗对您的容器进行安全防护。 容器微隔离是一种在容器化环境中实现安全隔离的技术。随着云计算和容器化技术的广泛应用,容器已成为企业IT架构中的重要组成部分。然而,随着容器数量的增加,容器之间的交…

《第一行代码》第二版学习笔记(8)——网络技术

文章目录 一、Http1、HttpURLConnection2、OKHttp 二、解析JSON格式数据1、使用JSONObject2、使用GSON解析JSON数据 一、Http 1、HttpURLConnection public void run() {HttpURLConnection connection null;BufferedReader reader null;try {URL url new URL("http://…

强化学习玩flappy_bird

强化学习玩flappy_bird(代码解析) 游戏地址:https://flappybird.io/ 该游戏的规则是: 点击屏幕则小鸟立即获得向上速度。 不点击屏幕则小鸟受重力加速度影响逐渐掉落。 小鸟碰到地面会死亡,碰到水管会死亡。&#…
最新文章