RAFT:让语言模型更聪明地用文档答题

RAFT:让语言模型更聪明地用文档答题

作者注: 本文旨在面向零基础读者介绍 UC Berkeley 提出的 RAFT(Retrieval-Augmented Fine-Tuning)方法。它是一种训练语言模型的新方式,让模型更好地利用“外部知识”——比如文档、网页或数据库回答问题。

  • 无需背景知识,本文将带你从“开卷考试”的类比出发,逐步理解它的核心理念与实践效果。

在这里插入图片描述

文章目录

  • RAFT:让语言模型更聪明地用文档答题
    • 一、背景:大模型真的理解文档了吗?
    • 二、RAFT 是什么?
    • 三、一场模拟“开卷考试”
    • 四、RAFT 的训练方法详解
      • 1. 训练输入
      • 2. 数据构造比例(P%)
    • 五、推理链与引用机制
    • 六、效果评估与实验结果
    • 七、重要发现:干扰文档不全是坏事


一、背景:大模型真的理解文档了吗?

如今的大语言模型(LLM),如 GPT、Claude、LLaMA 等,已具备强大的通用能力。然而,它们在处理 特定领域、基于文档回答问题 的任务时,表现常常不尽如人意。

为什么?因为它们:

  • 要么完全靠记忆作答;
  • 要么虽然可以看文档,但从未学会如何使用它们。

换句话说,它们面对“开卷考试”时,不知道怎么查资料


二、RAFT 是什么?

RAFT,全称 Retrieval-Augmented Fine-Tuning(检索增强微调),是一种专门针对特定领域问答任务的训练方法。核心思想是:

在训练阶段,给模型配上一些 相关文档 + 干扰文档,让它学会辨别、引用和推理,从而提升真实场景下的答题能力。

RAFT 属于“后训练”方法,适用于已有预训练模型基础上,通过额外训练,适配特定文档集合。


三、一场模拟“开卷考试”

在这里插入图片描述

RAFT 使用了一个非常易懂的比喻——“开卷考试”,来说明不同方法之间的差别:

方法类型比喻特点
闭卷模型考试时不能看书模型只靠预训练知识,答题效果有限
传统 RAG 方法考试时翻书但没准备模型能看文档,但不懂如何使用,效果不稳定
RAFT 方法考前练习开卷考试模型在训练阶段就学会了用文档答题,表现更好

RAFT 的“准备”包括:

  • 学会辨认哪些文档是“有用的”
  • 学会引用文档内容来回答问题
  • 学会写出有逻辑的、带有推理链(Chain-of-Thought) 的回答

四、RAFT 的训练方法详解

在这里插入图片描述

RAFT 的训练数据设计如下:

1. 训练输入

每条训练样本包括:

  • 一个问题(Question, Q)
  • 一组文档(Documents, Dₖ)
    • 1~N 篇“黄金文档”(含有正确信息)
    • 若干“干扰文档”(Distractors)
  • 一个推理链式答案(Answer, A*)

2. 数据构造比例(P%)

RAFT 有意识地控制黄金文档的出现比例:

  • P% 的样本包含黄金文档
  • (1-P)% 的样本仅包含干扰项

这样做的目的:

  • 一方面训练模型学会从文档中“找答案”
  • 另一方面,保留对问题本身的理解能力(即使没有黄金文档,也能作答)

五、推理链与引用机制

RAFT 的答案不是简简单单的一句话,而是具备结构化的推理过程:

  • 引用内容用 ##begin_quote##...##end_quote## 包裹
  • 这样训练出来的模型能写出更有逻辑、来源清晰的答案

在这里插入图片描述


六、效果评估与实验结果

RAFT 在多个基准任务上进行了测试,包括:

  • PubMed QA(医学问答)
  • Hotpot QA(多跳问答)
  • Gorilla APIBench(API 使用理解)

结果如下:

模型版本Hotpot QA 分数HuggingFace 分数
LLaMA2 + RAG0.0326.43
Domain-Specific + RAG4.4142.59
RAFT(Ours)35.2874.00

我们可以看出 RAFT 相比现有方法,优势非常明显。


七、重要发现:干扰文档不全是坏事

训练中适度加入干扰文档,反而能提升模型的鲁棒性——帮助它识别无关内容而不过度“记忆”答案。
黄金文档比例 P% 对模型性能的影响 (原文图 5):
在这里插入图片描述


如果你正面临“模型不会读文档”的问题,RAFT 是一个值得尝试的方案 – 但是训练代价比较大 (个人级不推荐!)

资源链接

  • 论文原文:RAFT: Adapting Language Model to Domain Specific RAG
  • 代码仓库(包含数据和模型训练脚本)

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

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

相关文章

【紧急预警】NVIDIA Triton推理服务器漏洞链可导致RCE!

2025 年 8 月 4 日消息,NVIDIA 旗下的 Triton 推理服务器(一款支持 Windows 和 Linux 系统、用于大规模运行 AI 模型的开源平台)被曝出一系列安全漏洞。这些漏洞一旦被利用,攻击者有可能完全接管存在漏洞的服务器。 Wiz 安全公司…

基于深度学习的医学图像分析:使用PixelCNN实现医学图像生成

前言 医学图像分析是计算机视觉领域中的一个重要应用,特别是在医学图像生成任务中,深度学习技术已经取得了显著的进展。医学图像生成是指通过深度学习模型生成医学图像,这对于医学研究、疾病模拟和图像增强等任务具有重要意义。近年来&#x…

React ahooks——副作用类hooks之useDebounceFn

useDebounceFn 是 ahooks 提供的用于函数防抖的 Hook,它可以确保一个函数在连续触发时只执行最后一次。一、基本用法import { useDebounceFn } from ahooks; import { Button } from antd;const Demo () > {const { run } useDebounceFn(() > {console.log(…

【机器学习深度学习】 知识蒸馏

目录 前言 一、什么是知识蒸馏? 二、知识蒸馏的核心意义 2.1 降低算力与成本 2.2 加速推理与边缘部署 2.3 推动行业应用落地 2.4 技术自主可控 三、知识蒸馏的本质:大模型的知识传承 四、知识蒸馏的“四重红利” 五、DeepSeek的知识蒸馏实践 …

Python高级编程与实践:Python高级数据结构与编程技巧

高级数据结构:掌握Python中的高效编程技巧 学习目标 通过本课程,学员将深入了解Python中的高级数据结构,包括列表推导式、字典推导式、集合推导式和生成器表达式。学员将学习如何利用这些结构来编写更简洁、更高效的代码,并了解它…

【C++】Stack and Queue and Functor

本文是小编巩固自身而作,如有错误,欢迎指出!本次我们介绍STL中的stack和queue和其相关的一些容器和仿函数一.stack and queue1.适配器stack和queue其实不是真正意义上的容器,而是容器适配器,而容器适配器又是什么呢&am…

Python爬虫实战:研究OpenCV技术构建图像数据处理系统

1. 引言 1.1 研究背景 在当今数字化时代,图像作为一种重要的信息载体,广泛存在于各类网站、社交媒体和在线平台中。这些图像数据涵盖了从自然风光、人物肖像到商品展示、新闻事件等丰富内容,为数据分析和模式识别提供了宝贵的资源。随着计算机视觉技术的快速发展,对大规模…

电感矩阵-信号完整性分析

电感矩阵:正如电容矩阵用于存储许多信号路径和返回路径的所有电容量,我们也需要一个矩阵存储许多导线的回路自感和回路互感值。需要牢记的是,这里的电感元件是回路电感。当信号沿传输线传播时,电流回路沿信号路径传输,然后立即从返…

JUC相关知识点总结

Java JUC(java.util.concurrent)是Java并发编程的核心工具包,提供了丰富的并发工具类和框架。以下是JUC的主要知识点,按难易程度分类,供你参考: 1. 基础概念与工具类 1.1 并发与并行(易&#x…

激光频率梳 3D 测量方案革新:攻克光学扫描遮挡,130mm 深孔测量精度达 2um

一、深孔测量的光学遮挡难题在精密制造领域,130mm 级深孔(如航空发动机燃油孔、模具冷却孔)的 3D 测量长期受困于光学遮挡。传统激光扫描技术依赖直射光束,当深径比超过 10:1 时,孔壁中下部形成大量扫描盲区&#xff0…

clickhouse 中文数据的正则匹配

中文数据的正则匹配 在ClickHouse中,正则匹配通常用于数据的筛选、格式化等操作。以下是一些常用的正则匹配技巧: 1. 匹配中文字符 要匹配中文字符,可以使用以下正则表达式: SELECT * FROM my_table WHERE my_column REGEXP [\\x{4e00}-\\x{9fa5}];这里的 \\x{4e00}-\\…

[驱动开发篇] Can通信进阶 --- CanFD 的三次采样

驱动开发篇] Can通信进阶 --- Can报文的三次采样一、CAN FD的采样次数1.1. 标准规定1.2. 传统标准CAN采样1.3. CAN FD的采样策略1.3.1. 基础采样策略1.4. 配置位置1.5. 常见步骤二、CAN FD与标准CAN在采样机制上的主要区别三、使用建议四. 芯片厂商实现4.1. 实际市面情况4.2. 例…

分布式文件系统06-分布式中间件弹性扩容与rebalance冲平衡

分布式中间件弹性扩容与rebalance冲平衡176_如果宕机的数据节点事后再次重启会发生什么事情?某个之前某个宕机的数据节点DataNode-A又重启后,肯定会再次注册,并进行全量上报的流程,此时,就会导致DataNode-A上的文件副本…

芯祥科技:工业/车规级BMS芯片厂商 规格选型对比

芯祥科技公司专注于工业和车规级BMS芯片,电源芯片及可编程模拟芯片的研发与销售,客户遍及新能源储能,汽车,电脑,服务器及电动工具等领域。并具有创业公司成功经验,平均具有逾17年以上的芯片研发和市场销售经…

莫队基础(Mo‘s algorithm)

莫队算法简介 莫队算法是一种用于高效处理离线区间查询问题的算法,由莫涛(Mo Tao)在2009年提出。其核心思想是通过对查询区间进行分块和排序,利用前一次查询的结果来减少计算量,从而将时间复杂度优化至接近线性。 莫…

板卡两个ADC,一个JESD204b sync正常,另一个JESD204B同步不上的问题

目录 1.问题来源: 2.问题分析 进一步测试表现: 抓取204B高速链路数据如上所示。 说明不是配置流程的问题 1.问题来源: 在工控机上和部分电脑上面出现时钟锁不住的现象,无法正常使用板卡。 经过分析,发现板卡上有两片ADC,其中一片的ADC的sync信号经过测量,是正常的,…

Android10 系统休眠调试相关

Android10 系统休眠调试相关实时打印休眠日志(实测好像没作用):echo 1 > /sys/module/printk/parameters/console_suspend查看唤醒锁:cat sys/power/wake_lock msm8953_64:/ # cat sys/power/wake_lock PowerManager.SuspendLockout PowerManagerServ…

一文掌握Bard机器翻译,以及用python调用的4种方式(现已升级为 Gemini)

文章目录一、Bard机器翻译概述1.1. Bard机器翻译介绍1.2 Bard机器翻译的核心特点1.3 技术背景1.4 与同类模型对比二、Bard机器翻译案例2.1 官方 REST API(推荐生产)2.2 通过Google Cloud API调用2.3 私有化部署方案2.4 开源镜像 PyBard(无需 …

Kafka-Eagle 安装

Kafka-Eagle官网 1)上传压缩包 kafka-eagle-bin-2.0.8.tar.gz 到集群第一台的/opt/modules 目录 2)解压到本地 tar -zxvf kafka-eagle-bin-2.0.8.tar.gz 3)将 efak-web-2.0.8-bin.tar.gz 解压至/opt/installs cd kafka-eagle-bin-2.0.8 …

接口请求的后台发起确认

场景讲解做业务开发时经常遇到这些场景,在后端代码执行命中了些业务规则,需要前端用户确认一下再往下执行。示例1:后端判断申请1笔超过5万的资金时会发起监管流程,告诉前端操作用户风险并询问是否确认执行。示例2:数据…