训练大模型自动在RAG和记忆间选择

news2024/9/19 10:55:34

现如今,检索增强生成(Retrieval-augmented generation,RAG)管道已经能够使得大语言模型(Large Language Models,LLM)在其响应环节中,充分利用外部的信息源了。不过,由于RAG应用会针对发送给LLM的每个请求,都去检索外部信息,而LLM实际上已经包含了大量无需检索即可使用的知识,因此整个过程反而显得效率低下。

那么,我们是否可以通过配置LLM,使其只在内部知识不足的情况下,才去使用RAG呢?目前,博尔扎诺大学(University of Bozen-Bolzano)和布鲁诺-凯斯勒基金会(Fondazione Bruno Kessler)的研发人员开发的一项“自适应LLM(Adapt-LLM,https://arxiv.org/abs/2404.19705)”技术,可以训练LLM动态地确定它们是否需要在问题解答任务中,检索额外的上下文信息,并避免不必要的外部检索,来提高LLM应用的效率。

记忆与检索

通常,LLM回答问题的方法主要有两种。这两种方法好比闭卷答题与开卷答题:

第一种是依靠在训练过程中获得的参数记忆。而这些参数记忆的局限性在于它需要完全基本语料的训练。你可以通过微调或少量提示技术,来提高参数记忆的性能,从而将模型的注意力集中在相关参数上。不过,在模型必须动态使用新的信息(例如:近期的新闻或是未包含在训练语料库中的私人信息)的情况下,这种方法并不实用。

第二种是使用信息检索器为模型提供上下文信息。而检索增强生成就属于这种方法。不过,信息检索的问题在于,有时模型并不需要额外的上下文信息,其内部知识足以回答问题。

而作为人类的我们,使用的却是混合方法。例如,当我们对某个问题的答案了如指掌时,我们便可立即作答。但当我们对自己的知识没有信心时,就会去查找外部来源。目前,一些LLM技术通过“常见度评分”机制,来使用此类混合方法。其假设前提是:当问题十分常见时,模型就会利用内部记忆知识进行回答;而对于不太常见的问题,模型则需要RAG系统的帮助来获取必要的信息。不过,这种方法往往要求问题附有常见程度的评分,而这并非总能够获取到的。

Adapt-LLM

Adapt-LLM框架

顾名思义,Adapt-LLM为了实现“自适应检索”而训练语言模型,使其能够自主地决定何时该使用信息检索系统,来获取更多的上下文信息。其研发人员指出:“在这种方法中,如果任务的解决方案已被编码在模型的参数中,它将直接使用由模型生成的解决方案。反之,如果答案没有被编码在模型的知识域里,那么就需要借助外部知识来生成答案。”

就工作流程而言,Adapt-LLM可分为四个步骤:

  • 首个包含了问题的提示被发送给Adapt-LLM模型处。
  • 该模型会对提示进行评估,以确定是否需要额外的语境,来有效地回答问题。
  • 如果模型认为不需要额外的上下文,它就会直接根据参数存储做出响应。
  • 如果Adapt-LLM模型需要额外的上下文,它会返回一个类似的特殊token。然后,应用程序可以使用信息检索器,根据问题获取上下文,并将其与原始提示结合起来。

可见,这种灵活的方法使得模型能够在利用外部环境和提供直接答案之间取得平衡。

训练Adapt-LLM

为了训练 Adapt-LLM模型,我们首先需要一个包含了问题、上下文和答案的元组(tuples)数据集。然后,针对每个元组,为模型提供并不包含上下文的问题,并指示它在对自己的知识“有信心”时直接回答,而在需要额外上下文时返回 。

如果模型返回了正确的答案,则表明它已掌握了参数知识,并创建了一个包含问题和答案(但不包含上下文)的新的训练实例。如果模型返回错误的答案,则需要创建两个训练实例:一个是包含了问题和 答案的“参数提示”,另一个是包含了问题、上下文、说明和答案的“上下文提示”。

然后,在包含了这两种类型示例的数据集上,研发人员对基础模型进行训练,从而形成Adapt-LLM的行为。

Adapt-LLM的测试结果

研发人员在PopQA(https://huggingface.co/datasets/akariasai/PopQA)上对Adapt-LLM进行了多次测试。此处的PopQA是一个从各种在线平台上收集问题的数据集。他们使用 Llama-2 7B 作为基础的LLM,并在由 NQ 和 SQuAD 问答数据集所创建的Adapt-LLM数据集上,对其进行了训练。测试完毕后,他们将Adapt-LLM模型与完全不检索模型、以及始终检索模型进行了比较。

研究结果表明,Adapt-LLM的表现比只依赖参数记忆的永不检索模型要好得多。同时,与始终检索模型相比,它也能够减少检索的使用量,同时当其参数记忆优于RAG系统返回的信息时,还能够提高整体性能。

据此,研发人员认为“当Adapt-LLM决定去检索额外的信息时,其有上下文的结果明显优于没有上下文的结果。同样,当Adapt-LLM依靠其参数记忆直接回答问题时,也能提供较高的准确率。”研发人员补充道:“这些测试结果足以表明,该模型能够有效地分辨出何时检索信息,以及何时可以在没有进一步语境的情况下回答问题。”

利与弊

遗憾的是,研发人员并没有公布 Adapt-LLM的代码和模型,因此我们很难去验证他们的实验结果。然而,由于这是一项非常实用的技术,他们应该公布关于token的使用、及其推理时间等研究结果。幸运的是,该算法实现起来比较容易,任何人都可以创建自己的 Adapt-LLM版本,进而去验证它在各个领域数据集上的表现。

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

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

相关文章

RabbitMQ-Stream(高级详解)

文章目录 什么是流何时使用 RabbitMQ Stream?在 RabbitMQ 中使用流的其他方式基本使用Offset参数chunk Stream 插件服务端消息偏移量追踪示例 示例应用程序RabbitMQ 流 Java API概述环境创建具有所有默认值的环境使用 URI 创建环境创建具有多个 URI 的环境 启用 TLS…

C# WinForm ——31 32 Menustrip菜单栏

1. 介绍 菜单控件,包含多个菜单项的菜单容器 主菜单下面可以有子菜单,子菜单下面可以有下一级子菜单 2. 常用属性 属性解释(Name)控件ID,在代码里引用的时候会用到Enabled控件是否启用Dock定义要绑定到容器的控件边框,默认是t…

最短路:Bellman-Ford

最短路&#xff1a;Bellman-Ford 题目描述参考代码 题目描述 输入样例 3 3 1 1 2 1 2 3 1 1 3 3输出样例 3参考代码 #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 510, M 10010;int n, m, k; int dist…

Master-Worker 架构的灰度发布难题

作者&#xff1a;石超 一、前言 Master-Worker 架构是成熟的分布式系统设计模式&#xff0c;具有集中控制、资源利用率高、容错简单等优点。我们数据中心内的几乎所有分布式系统都采用了这样的架构。 &#xfeff; 我们曾经发生过级联故障&#xff0c;造成了整个集群范围的服…

使用 C# 进行面向对象编程:第 9 部分

使用 OOP 的用户活动日志 应用程序背后的关键概念 在这一部分中&#xff0c;我们将使用之前学到的一些 OOP 概念。我们将创建一个小型应用程序。在继续之前&#xff0c;请阅读我的文章user-activity-log-using-C-Sharp-with-sql-server/。在本课程中&#xff0c;我们将再次使…

Python实现base64加密/解密

实现原理&#xff1a;导入base64库 一、加密 import base64# 加密 username "admin" base64_username base64.b64encode(username.encode(utf-8)).decode() print(base64_username) password "123" base64_password base64.b64encode(password.encod…

Vue23-过滤器

一、效果图 二、好用的时间戳三方工具 该三方工具比较大 推荐使用 dayjs的用法&#xff1a; 三、过滤器的使用 3-1、计算属性实现 3-2、methods函数实现 3-3、过滤器filters属性实现 过滤器的本质就是函数&#xff01;&#xff01;&#xff01; 1、过滤器-未传参 默认将管道…

MySQL常用命令(Linux环境)

一、数据定义语句(DDL) 数据库操作 ●登录数据库&#xff1a; mysql -uroot -proot ●创建数据库&#xff1a; create database test ●查看所有数据库&#xff1a; show databases ●选择数据库并使用&#xff1a; use test ●查看所有数据表&#xff1a; show tabl…

【MySQL】性能分析

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p78 查看执行频次 查看当前数据库的 INSERT, UPDATE, DELETE, SELECT 访问频次&#xff1a; SHOW GLOBAL STATUS LIKE Com_______; 或者 SHOW SESSION STATUS LIKE Com_______; 慢查询日志 慢查询日志记录了所有执行时间超过指…

Vue2后台管理:项目开发全流程(二)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:Vue2后台管理&#xff1a;项目开发全流程(二) 目录 功能实现 8、会员用户管理 ①使用数据模拟文…

国标GB/T 28181详解:事件通知流程详细解释

目录 一、定义 二、特点和作用 1、系统事件的实时性 2、整个系统数据变化的协同性 3、智能化应用 4、可管理性 5、安全性 6、灵活和实用性 三、基本要求 1、事件订阅通知基本要求 2、关键要素 四、命令流程 1、流程图 2、流程描述 五、协议接口 六、实际应用效…

大众点评全国亲子POI采集46万家-2024年5月底

大众点评全国亲子POI采集46万家-2024年5月底 店铺POI点位示例&#xff1a; 店铺id H1IZ2B7vPGVGfbFJ 店铺名称 儿童天堂旗舰店(全国总店) 十分制服务评分 9.2 十分制环境评分 9.1 十分制划算评分 9.1 人均价格 4624 评价数量 17003 店铺地址 八一路金渝大厦1楼&#x…

流媒体传输协议HTTP-FLV、WebSocket-FLV、HTTP-TS 和 WebSocket-WS的详细介绍、应用场景及对比

一、前言 HTTP-FLV、WS-FLV、HTTP-TS 和 WS-TS 是针对 FLV 和 TS 格式视频流的不同传输方式。它们通过不同的协议实现视频流的传输&#xff0c;以满足不同的应用场景和需求。接下来我们对这些流媒体传输协议进行剖析。 二、传输协议 1、HTTP-FLV 介绍&#xff1a;基于 HTTP…

ESP RainMaker®为企业提供AIoT云解决方案,启明云端乐鑫代理商

在AIoT的浪潮中&#xff0c;企业面临着前所未有的机遇与挑战。如何快速响应市场变化&#xff0c;开发出具有竞争力的智能产品&#xff1f;如何确保数据安全&#xff0c;同时实现高效的设备管理&#xff1f;这些问题&#xff0c;ESP RainMaker给出了答案。 ESP RainMaker是一个…

鸿蒙开发:通过startAbilityByType拉起垂类应用

通过startAbilityByType拉起垂类应用 使用场景 开发者可通过特定的业务类型如导航、金融等&#xff0c;调用startAbilityByType接口拉起对应的垂域面板&#xff0c;该面板将展示目标方接入的垂域应用&#xff0c;由用户选择打开指定应用以实现相应的垂类意图。垂域面板为调用…

404 页面代码

<template> <div class"container"><h1>404</h1> <div ><p class"text-center">当前页面无法访问,可能没有权限或已删除</p><p class"text-center"> 去别处看看吧</p> </div> <…

语义分割——mmsegmentation框架使用

目录 1.mmsegmentation简介 2.mmsegmentation安装 3.mmsegmentation使用&#xff08;代码结构介绍&#xff09; 4.mmsegmentation使用实战&#xff08;deeplab v3为例&#xff09; 4.1配置 4.2训练&#xff1a; 4.3预测&#xff1a; 1.mmsegmentation简介 mmsegmentatio…

结合兴趣行业和手头资源来看计算机专业是否还是好的选择,再前行路上FlowUs息流一直陪你成长

在这个数字化时代&#xff0c;计算机专业以其广阔的就业前景和持续的行业需求&#xff0c;依旧是许多有志青年的优选。无论你是被编程的逻辑之美所吸引&#xff0c;还是对人工智能的无限可能充满好奇&#xff0c;选择计算机专业意味着你将踏上一条充满挑战与机遇的道路。而Flow…

橘子叶子病害分类数据集38432张5类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;38432 分类类别数&#xff1a;5 类别名称:["Citrus_Canker_Diseases_L…

有人说C语言99%的代码是可以包含在c++中,那剩下的1%是什么?

关于C语言99%的代码可以包含在C中&#xff0c;这个说法基本上是正确的&#xff0c;但并非完全绝对。至于剩下的1%不兼容的部分&#xff0c;这主要涉及一些C99标准中引入的新特性&#xff0c;这些特性在C中默认是不支持的。以下是一些主要的不兼容点&#xff1a; 刚好我有一些资…