【论文阅读】Self-DC:何时检索,何时生成?

对于RAG来说,什么时候利用外部检索,什么时候使用大模型产生已知的知识,以回答当前的问题?这是一个非常有趣的话题。
《Self-DC: When to retrieve and When to generate? Self Divide-and-Conquer for Compositional Unknown Questions》这篇论文正好探讨了这个问题。
文章的解决思路的核心就在于,首先得到大模型对问题的置信度分数,然后可以相应地选择处理问题的方式。将置信度评分分为[0,α-β],(α-β,α+β),[α+β,1]三个范围,其中α和β是超参数。因此,当置信度分数落在左侧([0,α−β])或右侧([α+β,1])时,可以分别调用检索-读取或生成-读取来回答。遇到不确定或令人困惑的问题时,就是(α-β,α+β)这个置信度区间的问题,将问题分解成几个子问题,旨在减少不确定性。然后,将所有子问题的答案结合起来,以提示大模型获得最终答案。
在这里插入图片描述

摘要

文章提出了一种新的方法来处理开放域问答中的组合性未知问题(Compositional Unknown Questions)。这些问题由一些已知或未知的子问题组成,传统的二元分类(已知或未知)方法在处理这类问题时变得次优和低效。为了解决这个问题,作者首次提出了一个组合性未知问题问答数据集(CuQA),并引入了一个自适应的框架,称为自划分-征服(Self-DC),使大型语言模型(LLMs)能够根据需求灵活地调用不同的方法,从而提高性能和效率。实验结果表明,Self-DC在两个数据集(CuQA和FreshQA)上的性能可与几个强基线模型相媲美,甚至更好,同时检索时间大大减少。

解决的主要问题

文章旨在解决以下问题:

  1. 组合性未知问题的识别和处理:这些问题包含多个子问题,有的可以用已知知识回答,有的需要未知知识。
  2. 高效调用不同方法:在不同的子问题上动态地使用生成-然后-读取(generate-then-read)或检索-然后-读取(retrieve-then-read)。
  3. 减少不必要的外部检索:避免对每个组合性未知问题都进行外部检索,以提高效率。

方法

为了解决上述问题,文章提出了以下方法:

  1. 数据集构建(CuQA):创建了一个新的数据集,自动收集基于维基百科的最新事件,以生成组合性未知问题。
  2. 自划分征服框架(Self-DC):提出了一个框架,该框架利用LLMs自身的置信度评分来决定是使用内部知识生成答案还是调用外部检索。框架包括以下几个关键组件:
    • 置信度评分获取:使用verbalize-based或probability-based方法来获取LLMs对问题回答的置信度。
    • 问题分解(decompose):将问题分解为多个子问题,以降低不确定性。
    • 子问题答案组合(combine-sub-qas):将分解得到的子问题的答案组合起来,形成对原始问题的最终答案。
    • 生成-然后-读取(generate-then-read):生成相关知识后,由LLMs回答问题。
    • 检索-然后-读取(retrieve-then-read):检索外部信息后,由LLMs回答问题。
      通过这种方法,Self-DC能够根据问题的复杂性和LLMs的置信度,智能地选择最合适的策略来解决问题,从而在保持高效性的同时提高回答的准确性。
      在这里插入图片描述

文章中提出的Self-DC(Self Divide-and-Conquer)框架的核心在于根据大型语言模型(LLMs)对问题的置信度分数来决定是调用外部检索还是生成已知知识来回答当前问题。具体来说,置信度分数的获取和不确定问题的分解方法如下:

置信度分数的获取

置信度分数通过以下两种方法获得:

  1. verbalize-based (verb): 指导LLMs输出0到100之间的置信度水平,这个置信度水平跟在问题答案后面。然后,将这个置信度水平重新映射到[0, 1]的范围内。
  2. probability-based (prob): 利用概率信息来计算置信度分数。具体来说,首先提示LLMs用几个词生成答案,然后获取生成内容中第i个标记的概率ˆpi。将序列中概率的平均值作为置信度分数。
    在这里插入图片描述

不确定问题的分解

当LLMs对问题的置信度分数处于不确定区间(α-β, α+β)时,采取以下步骤分解问题:

  1. 分解(decompose): 提示LLMs将总体问题系统地分解为几个更小的子问题。这些子问题的答案共同有助于推导出原始问题的解答。
  2. 迭代调用: 对于每个子问题,递归地调用Self-DC框架的主要函数,以获取每个子问题的答案。
  3. 组合子问题的答案(combine-sub-qas): 分解后,将调用主要函数进入下一次迭代,目的是得到每个子问题的答案。然后,将所有子问题的答案结合起来,以获得原始问题的答案,完成迭代。
    通过这种方法,Self-DC框架能够灵活地处理组合性未知问题,这些问题包含已知和未知的子问题。框架根据LLMs自身的置信度评分来动态地调用不同的功能,从而在必要时仅调用组合推理,而不是不加区分地对待所有问题。

终止条件

为了确保迭代不会无限制地进行下去,Self-DC设置了终止条件,包括:

  1. 子问题的数量变为1,即它可能是一个单一的问题。
  2. 迭代深度小于一个预定义的阈值t
    当满足这些条件时,将当前子问题视为未知问题,并调用检索-读取来处理。

实验结果表明,Self-DC在CuQA和FreshQA数据集上的有效性和效率上都优于几个强基线模型,展示了其在解决组合性推理问题方面的潜力。
文章提出的Self-DC方法通过动态地调用内部已知知识或外部未知知识,不仅在性能上可与现有的复杂迭代检索方法相媲美或更好,而且在检索次数上更少,展示了其在不同应用中通过精心选择超参数的潜力。

文章中定义了几个子函数(Sub-Functions)作为关键组件,以处理不同类型的问题并实现Self-DC(Self Divide-and-Conquer)框架的目标。这些子函数包括:

  1. generate-then-read: 这个子函数首先提示大型语言模型(LLMs)生成一个维基百科的背景文档来回答问题,然后要求LLMs通过引用生成的段落来回答问题。
  2. retrieve-then-read: 这个子函数使用检索器首先检索外部知识,然后要求LLMs通过引用检索到的段落来回答问题。
  3. decompose: 这个子函数提示LLMs将一个宽泛的问题系统地分解为几个更小的子问题。这些子问题的答案共同有助于推导出原始问题的解答。
  4. combine-sub-qas: 在分解之后,调用主要函数进入下一次迭代,目的是得到每个子问题的答案。然后,这个子函数将所有子问题的答案结合起来,以得到原始问题的答案,完成迭代。
  5. get_confidence_score: 这个子函数用于获取LLMs对问题回答的置信度分数,可以基于verbalize-based或probability-based方法来实现。

这些子函数共同工作,使Self-DC框架能够灵活地处理开放域问答中的组合性未知问题。框架根据LLMs的置信度分数来决定是直接生成答案、检索相关信息还是分解问题并递归求解。通过这种方式,Self-DC能够在必要时有效地调用组合推理,而不是对所有问题进行统一处理,从而提高了处理复杂问题的效率和性能。

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

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

相关文章

环境配置——Windows平台配置VScode运行环境为远程服务器或虚拟机

1. 远程机需要先安装SSH服务,命令如下 sudo apt install openssh-server 2. 安装好后需要开启SSH服务: sudo service sshd start 3. 查看SSH服务是否有被开启: sudo systemctl status sshd.service 4. 本地Windows需要生成密钥将公钥放…

Windows 安全中心:页面不可用 你的 IT 管理员已限制对此应用的某些区域的访问,并且你尝试访问的项目不可用。有关详细信息,请与 IT 支持人员联系。

问题 1:Windows 安全中心提示:【页面不可用 你的 IT 管理员已限制对此应用的某些区域的访问,并且你尝试访问的项目不可用。有关详细信息,请与 IT 支持人员联系。】 修复 Microsoft.SecHealthUI 方法 1:命令自动重装安…

IDM下载器_Internet Download Manager 6.42.7

网盘下载 IDM下载器是一款针对互联网所打造的下载管理器。IDM下载器能将下载速度提高5倍,恢复因丢失的连接,网络问题,计算机关闭或意外断电而重新启动中断或中断的下载。IDM下载器还可支持所有流行的浏览器,以使用独特的“高级浏…

mysql8.0免安装版windows

1.下载 MySQL下载链接 2.解压与新建my.ini文件 解压的路径最好不要有中文路径在\mysql-8.0.36-winx64文件夹下新建my.ini文件,不建data文件夹(会自动生成) [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录(尽量用双斜杠\\,单斜杠\可能会报错) basedirD:\…

Linux系统----信号(万字文章超级详细并且简单易学附有实操shell指令图及注释!)

绪论​ “Do one thing at a time, and do well.”,本章开始Linux系统其中信号是学习操作系统的基本下面将会讲到什么是信号、信号的多种产生方式、信号如何保存的、信号如何处理的、以及一些信号的细节。话不多说安全带系好,发车啦(建议电脑…

qmt教程2----订阅单股行情,提供源代码

链接 qmt教程2----订阅单股行情,提供源代码 (qq.com) qmt教程1---qmt安装,提供下载链接 今天我重新封装了全部qmt的内容,包括数据,交易 qmt交易 我本来打算全部上次git的,但是考虑到毕竟是实盘的内容,就放…

w64devkit 下载,不需要下载MinGW了

w64devkit一个很方便的工具,不需要下载MinGW了 介绍 这里后面我为大家准备了 3 种下载方式,总有一个适合你,嘿嘿!! 在 linux 上大家常用的编译工具就是 gcc,这些工具 windows 上也是有的,常用…

平衡小车的控制算法--结合自动控制原理学习

单纯的去看自控原理,很多概念有点抽象,最好找些应用去理解相关的概念,就找了实验室的一个平衡小车作为应用,不过主要根据小车去跑matlab去验证一些控制算法。结合台湾国立交通大学林沛群的自控线上课的总结 一、自控原理重要概念 …

从零入门区块链和比特币(第二期)

欢迎来到我的区块链与比特币入门指南!如果你对区块链和比特币感兴趣,但不知道从何开始,那么你来对地方了。本博客将为你提供一个简明扼要的介绍,帮助你了解这个领域的基础知识,并引导你进一步探索这个激动人心的领域。…

Java Web 网页设计(3)

3.servlet JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)-CSDN博客 servlet java不支持 只有Tomcat支持 使用时添加一下 servlet中最常用的两个(固定)方法: 下面我们创建一个servlet类 package com.oracle…

[极客大挑战 2019]Upload、[ACTF2020 新生赛]Upload、[MRCTF2020]你传你呢

[极客大挑战 2019]Upload 打开环境&#xff0c;是上传一句话木马的题 先上传1.php试试&#xff0c;发现不可以 试试改后缀为phtml&#xff0c;提示语句中不能包含<?&#xff0c;只能改木马&#xff1a; <script language"php">eval($_POST[line]);</sc…

[C++][算法基础]欧拉函数(常规求质数)

给定 n 个正整数 &#xff0c;请你求出每个数的欧拉函数。 欧拉函数的定义 1∼N 中与 N 互质的数的个数被称为欧拉函数&#xff0c;记为 ϕ(N)。 若在算数基本定理中&#xff0c;N…&#xff0c;则&#xff1a; ϕ(N) N… 输入格式 第一行包含整数 n。 接下来 n 行&#xf…

通信原理(2)--随机过程

通信原理(2)–随机过程 3.1随机过程的基本概念 随机过程{x(t)}由一族时间函数 x i ( t ) x_i(t) xi​(t)&#xff0c;i1,2.3…组成&#xff0c;每一个时间函数 x i ( t ) x_i(t) xi​(t)称为随机过程{x(t)}的一个样本函数&#xff08;一个实现&#xff09; 每个样本函数在时间…

使用composer开发自己的扩展包

前言 日常的开发中我们经常用到composer去安装其他人封装好的扩展包&#xff0c;如果你有好的功能代码想分享给其他人使用&#xff0c;就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。 1.新建仓…

d10(104-112)-勇敢开始Java,咖啡拯救人生

目录 多态[面向对象的三大特征&#xff1a;封装 继承 多态]polymorphism 多态的好处 多态下的类型转换问题 注意事项 final关键字 注意事项 常量 抽象类abstract 好处 运用场景 接口interface 好处 接口中新增的三种方法&#xff1a; 接口的多继承 内部类[类中五…

江苏开放大学2024年春《机电设备安装与调试 050095》第三次形成性考核作业参考答案

电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题&#xff0c;包含国家开放大学、广东开放大学、超星等等多个平台题库&#xff0c;考试作业必备神器。 公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#…

boot2docker实践@FreeBSD

boot2docker是专为Docker而设计的轻量极Linux发型包&#xff0c;解决Windows、OS X、FreeBSD不能安装Docker的问题。Boot2Docker完全运行于内存中&#xff0c;24M大小&#xff0c;启动仅5-6秒。Boot2Docker需要运行在VirtualBox中&#xff0c;同时意味着有VirtualBox就能运行Bo…

万业企业发布23年年报、24年一季报,集成电路业务同比大增近七成 转型成效显著

4月26日晚间&#xff0c;万业企业&#xff08;600641&#xff09;发布2023年年度报告及2024年一季度报告。2023年&#xff0c;公司实现营业收入9.65亿元&#xff0c;归母净利润1.51亿元。其中&#xff0c;公司集成电路设备制造业务收入较上年同期大幅增长67.53%&#xff0c;公司…

CYCLE:学习自我完善代码生成

目录 IntriductionOverview of the Approach 预训练的代码语言模型在代码生成方面取得了可喜的性能&#xff0c;并提高了人类开发人员的编程效率。然而&#xff0c;现有的代码 LM 评估通常忽略了它们的 自我求精能力&#xff0c;这些评估仅关注一次性预测的准确性。对于代码 L…

Leetcode - 周赛394

目录 一&#xff0c;3120. 统计特殊字母的数量 I 二&#xff0c;3121. 统计特殊字母的数量 II 三&#xff0c;3122. 使矩阵满足条件的最少操作次数 四&#xff0c;3123. 最短路径中的边 一&#xff0c;3120. 统计特殊字母的数量 I 本题就是统计有多少个字母的大小写同时出现…