RAFT: Adapting Language Model to Domain Specific RAG

RAFT: Adapting Language Model to Domain Specific RAG

相关链接:arXiv GitHub
关键字:Retrieval-Augmented Fine Tuning (RAFT)Large Language Models (LLMs)Domain Specific RAGDistractor DocumentsChain-of-Thought

摘要

预训练大型语言模型(LLMs)在大量文本数据上已成为标准范式。在使用这些LLMs进行许多下游应用时,通常会通过基于RAG的提示或微调,将新知识(例如,时效性新闻或私有领域知识)融入预训练模型中。然而,模型获取这些新知识的最优方法仍然是一个开放问题。本文提出了一种名为Retrieval Augmented Fine Tuning(RAFT)的训练方法,它提高了模型在“开卷”领域特定设置中回答问题的能力。RAFT通过训练模型忽略那些对回答问题没有帮助的文档(我们称之为干扰文档),来实现这一点。RAFT通过引用相关文档中正确的序列来回答这个问题。RAFT的链式思维风格响应有助于提高模型的推理能力。在特定领域的RAG中,RAFT在PubMed、HotpotQA和Gorilla数据集上持续提高了模型的性能,为提高预训练LLMs在领域特定RAG中的表现提供了一种后训练方法。

核心方法

在这里插入图片描述

  1. Retrieval Augmented Fine Tuning (RAFT):RAFT是一种训练方法,旨在通过微调来适应特定领域的开卷考试设置,即领域特定的RAG。
  2. 区分文档类型:在训练数据中,区分“oracle”文档(包含问题答案的文档)和“distractor”文档(不包含答案相关信息的文档)。
  3. 链式思维风格答案:RAFT训练模型生成包含链式思维的答案,这些答案引用了上下文中的原始文档,并详细解释了如何基于引用得出结论。
  4. 处理干扰文档:在训练过程中,模型被训练以在存在干扰文档的情况下回答问题,这有助于提高模型在测试时对检索结果的鲁棒性。

实验说明

实验使用了多个数据集来评估RAFT模型的性能,包括PubMed QA、HotpotQA和Gorilla API Bench。实验结果显示,RAFT在所有专业领域中都显著提高了性能,尤其是在处理领域特定RAG任务时。实验还包括了对RAFT模型在不同数量的测试文档下的性能进行评估,以测试模型对检索结果中干扰文档的鲁棒性。

数据集GPT-3.5 + RAGLLaMA2-7BLLaMA2-7B + RAGDSFDSF + RAGRAFT (LLaMA2-7B)
PubMed71.6056.558.859.771.673.30
HotpotQA41.50.540.036.384.4135.28
HuggingFace29.080.2226.4361.0642.5974.00
Torch Hub60.2108.6084.9482.8084.95
TensorFlow Hub65.59043.0686.5660.2986.86

结论

RAFT是一种旨在提高模型在特定领域内回答问题性能的训练策略。这种技术展示了一种针对基于选定文档集合的领域特定问题回答任务的LLMs微调配方。我们确定了一些关键设计决策,例如与干扰文档一起训练模型、组织数据集以便部分数据缺乏上下文中的oracle文档,以及以链式思维方式制定答案并直接引用相关文本。我们在PubMed、HotpotQA和Gorilla API Bench上的评估强调了RAFT的显著潜力。展望未来,我们预计领域特定的检索增强生成(RAG)将继续在工业和学术领域内获得关注。与一般RAG不同,我们的工作解决了LLMs被赋予使用领域特定知识回答问题的实际场景。与当前趋势一致,我们的发现表明,较小的微调模型能够在领域特定问题回答任务中表现得与它们的通用LLM对应物一样好。

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

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

相关文章

云原生:重塑未来应用的基石

随着数字化时代的不断深入,云原生已经成为了IT领域的热门话题。它代表着一种全新的软件开发和部署范式,旨在充分利用云计算的优势,并为企业带来更大的灵活性、可靠性和效率。今天我们就来聊一聊这个热门的话题:云原生~ &#x1f4…

Android Studio实现内容丰富的安卓自行车租赁平台

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号105 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.查看自行车分类 4.预订自行车, 5.…

vue3之声明式和编程式导航

在组件内部,可以使用 r o u t e r 属性访问路由,例如 t h i s . router 属性访问路由,例如 this. router属性访问路由,例如this.router.push(…)。如果使用组合式 API,你可以通过调用 useRouter() 来访问路由器&#…

jdk8的stream新特性写法

1、集合A判断是否包含集合B里面的元素&#xff0c;并且把包含元素放到一个新集合里面 List<TagBean> tagBean tagBeans.stream().filter(adminMo.getTagList()::contains).collect(toList());2、把subListByChildId里面的subId作为key,本身对象ChannelSubMo作为value …

【高效开发工具系列】语雀Excel入门

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

富格林:亏损总结正规经验预防

富格林悉知&#xff0c;在现货黄金投资中亏损是投资者最不愿意看到的&#xff0c;想要避免亏损&#xff0c;在进入市场之前应该做好基础知识的学习&#xff0c;对亏损案例进行分析深剖其中的规律和特征&#xff0c;从而运用正规的学习方法经验规避风险。以下总结几点正规的做单…

前端项目,个人笔记(三)【Vue-cli - api封装-axios使用举例】

目录 前言 1、axios配置与测试 1.1、配置 1.2、测试 2、使用axios案例-渲染header 3、Pinia优化重复请求 3.1、为什么&#xff1f; 3.2、使用Pinia优化代码步骤 步骤一&#xff1a;在main.js中创建 Pinia 实例&#xff0c;并将其作为插件添加到 Vue 应用中 步骤二&am…

3703. 括号的匹配 北京师范大学考研上机真题 栈的思想

在算术表达式中&#xff0c;除了加、减、乘、除等运算外&#xff0c;往往还有括号。 包括有大括号 {}&#xff0c;中括号 []&#xff0c;小括号 ()&#xff0c;尖括号 <> 等。 对于每一对括号&#xff0c;必须先左边括号&#xff0c;然后右边括号&#xff1b;如果有多个…

2024年数据隐私将成为定义科技问题的关键问题。

数据隐私&#xff1a;2024年科技领域的核心议题 引言 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;如ChatGPT等AI驱动的聊天机器人正在重塑我们熟知的行业。然而&#xff0c;每一次技术的进步&#xff0c;都伴随着传统角色的消逝。2023年6月&#xff0…

初识数据库|数据库的特点、分类以及作用

数据库系统&#xff08;DateBase System&#xff0c;简称DBS&#xff09;是指在计算机系统中引入数据库后的系统构成&#xff0c;由计算机硬件&#xff0c;操作系统&#xff0c;DBMS&#xff0c;DB&#xff0c;应用程序和用户以及数据库开发和管理人员等组成。 &#xff08;一…

C#基础语法学习笔记(传智播客学习)

最近在学习C#开发知识&#xff0c;跟着传智播客的视频学习了一下&#xff0c;感觉还不错&#xff0c;整理一下学习笔记。 C#基础语法学习笔记 1.背景知识2.Visual Studio使用3.基础知识4.变量5.运算符与表达式6.程序调试7.判断结构8.循环结构9.常量、枚举类型10.结构体类型11.数…

[BT]BUUCTF刷题第一天(3.19)

第一天&#xff08;共4题&#xff09; Web [极客大挑战 2019]EasySQL Payload&#xff1a; 用户名&#xff1a;admin or 11# &#xff08;密码也可以改成这个&#xff09; 密码&#xff1a;1&#xff08;可任意&#xff09; 网站漏洞代码&#xff1a; sql"select *…

Android和IOS Flutter应用开发使用 Provider.of 时,可以使用 listen: false 来避免不必要的重建

文章目录 listen: false解释示例 listen: false 使用 Provider.of 时&#xff0c;可以使用 listen: false 来避免不必要的重建 解释 当您使用 Provider.of 获取状态对象时&#xff0c;默认情况下&#xff0c;该对象每次发生变化时都会触发重建该对象所在的组件。这在大多数情…

云平台一键迁移(腾讯云windos服务器迁移到阿里云windos服务器)

参考文档 https://help.aliyun.com/zh/smc/use-cases/one-click-cloud-platform-migration 迁移文档 https://cloud.tencent.com/document/product/598/37140 #腾讯密钥创建 https://cloud.tencent.com/document/product/1340/51945 安装腾讯云自动化服务助手 一.导入迁移…

adb的使用(安装apk和传输文件)

adb命令安装apk包 先传apk adb pull /tmp/app-test.apk /data/local/tmp/ 指定文件安装 adb install apk路径 adb命令传输文件 1.从手机端将文件传输到电脑 1&#xff09;在电脑端打开文件将要存储的路径&#xff0c;按住shift键右击&#xff0c;选择“在此处打开命令窗口…

GitHub gpg体验

文档 实践 生成新 GPG 密钥 gpg --full-generate-key查看本地GPG列表 gpg --list-keys关联GPG公钥与Github账户 gpg --armor --export {key_id}GPG私钥对Git commit进行签名 git config --local user.signingkey {key_id} # git config --global user.signingkey {key_id} git…

JVM常用垃圾收集器

JVM 4.1 哪些对象可以作为GC ROOT? 虚拟机栈&#xff08;栈帧中的局部变量表&#xff09;中引用的对象本地方法栈中引用的对象方法区静态变量引用的对象方法区常量引用的对象被同步锁持有的对象JNI&#xff08;Java Native Interface&#xff09;引用的对象 4.2 常用垃圾收集…

计算机二级(Python)真题讲解每日一题:《方菱形》

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬ 请写代码替换横线&#xff0…

golang踩坑记录

1. server gave HTTP response to HTTPS client 出现场景&#xff0c;http包get请求https的 原代码 response, err : http.Get(fmt.Sprintf("https://%v/api/user/secret/?name%v&password%v", djang_ip, username, password))修改后 有地方说go的版本问题&…

accessToken

1、介绍 accessToken&#xff0c;通常是用于身份验证和授权的令牌,它可以用于前端和后端&#xff0c;具体使用方式取决于应用程序的架构和需求。 前端应用 accessToken通常用于向后端API发送请求时进行身份验证和授权。 &#xff08;1&#xff09;前端应用程序会在用户登录成…