【RAG 论文】RAFT:适用于 domain specific RAG 的 LLM

论文:RAFT: Adapting Language Model to Domain Specific RAG

⭐⭐⭐⭐

UC Berkeley, arXiv:2403.10131

Blog:gorilla.cs.berkeley.edu/blogs/9_raft.html

文章目录

    • 一、论文速读
    • 二、论文中一些讨论
      • [2.1 LLMs for Open-Book Exam](#2.1 LLMs for Open-Book Exam)
      • [2.2 RAG & SFT](#2.2 RAG & SFT)
    • [三、CoT 的使用](#三、CoT 的使用)
    • [四、RAFT 成功的总结](#四、RAFT 成功的总结)

一、论文速读

RAFT(Retrieval Aware Fine-Tuning)是一个经过监督微调(SFT)后的 LLM,在运行时通过检索特定领域的参考资料来回答用户的问题。

RAFT 的特点在于它的微调(SFT)过程。在 SFT 过程中,训练模型忽略任何检索到的、无助于回答特定问题的文档,从而让模型学会消除干扰。另外,RAFT 使用 chain-of-though 来进一步提高模型的推理能力。

RAFT 在 LLaMa2-7B 模型上经过 SFT 得到的,SFT 的思路如下

在每一个训练样本中,包含一个 question Q Q Q,一个文档集合 D k D_k Dk,一个针对 question 的 chain-of-though 风格的 answer A ∗ A* A∗,另外还有两类 documents:

  • oracle document D ∗ D* D∗:可以推导出问题答案的 doc,也就是对回答问题有用的 doc
  • distractor document D i D_i Di:干扰文档,对回答问题没有用的 doc

我们期望 RAFT 能够在看到输入 Q Q Q、 D ∗ D* D∗、 D i D_i Di 后,能够生成 A ∗ A* A∗,以此为目标对其进行监督微调。

但这里有一个关键 trick:对于 P P P% 的训练样本,我们给 RAFT 输入了 Q Q Q、oracle doc 和 distractor doc,但剩下的 ( 1 − P ) (1-P) (1−P)% 的训练样本,只给 RAFT 输入 Q Q Q 和 distractor doc,不再给他输入 oracle doc,如下所示:

这种在微调时特意混合相关文档和不相关文档的做法,可以有效提高模型忽略不相关信息的能力。这种思路是特意针对目前的 LLM 具有对不相关文本太脆弱的问题而设计的。

二、论文中一些讨论

2.1 LLMs for Open-Book Exam

论文用现实世界的"让 LLM 去准备一场考试"做了一个很形象的比喻,存在三类考试:

  1. Closed-Book Exam:即闭卷考试,在考试期间,LLM 不允许去参考任何其他文档资料,只能凭借自己的预训练期间得到的参数化知识来完成回答。
  2. Open Book Exam:即开卷考试,考试期间,LLM 可以去参考任何互联网资料,从而获取 "new knowledge" 来完成回答。
  3. Domain Specific Open-Book Exam:这是本文重点关注的方向。LLM 事先知道自己将要被测试的 domain,并会提前准备,考试时,可以参考该领域的所有文档资料来完成回答。

在我们的场景中,特定领域的文档资料就是企业的内部文档、最新的新闻或者企业私有的代码库等等。而所谓的"提前准备考试",就是使用特定领域的训练数据来对 LLM 进行 SFT。

下图展示了不同的考试类型:

2.2 RAG & SFT

  • RAG:Retriveal Augmented Generation
  • SFT:Supervised Fine-Tuning

论文对两者的特点和存在的缺点进行了讨论:

  • RAG only:基于 RAG 的方法,允许 LLM 在测试期间去参考相关文档,但没能利用模型在训练学习期间去适应这个 domain 的场景,也没有学习如何去利用可以参考的文档,相当于"不学习直接带着课本去考试"
  • SFT only:像最开始发布的 ChatGPT,在测试期间只能凭借自己的参数化记忆来完成用户回答,无法参考文档,相当于"努力学习了但没带课本去考试"

所以本文所研究的核心问题就是:How to adapt pre-trained LLMs for Retrieval Augmented Generation(RAG) in specialized domains?

RAFT 模型关注的就是如何让 SFT 和 RAG 进行结合,来达到更好的效果

三、CoT 的使用

前面第一节就介绍了 RAFT 的训练思路,这里着重介绍一下 chain-of-though 是如何用于提升 RAFT 的推理能力的。

用于对 RAFT 进行 SFT 的训练数据中,每个 question 的 answer 都是 CoT style 的,并且 answer 中还清晰地标注了引用来源。一个训练数据样本如下所示:

使用这个 CoT style 的 answer 作为训练样本对 RAFT 进行 SFT,是提高训练质量的关键因素之一

四、RAFT 成功的总结

总结一下 RAFT 模型能够表现好的原因:

  1. 对原生的 LLM 模型,使用 domain specific 的训练数据对其进行 SFT,让 LLM 能够提前熟悉这个 domain,并学会利用检索到的文档来生成回答。
  2. SFT 训练中,将 oracle doc 和 distractor doc 进行混合来对 LLM 做训练,提高了 RAFT 忽略不相关信息的能力。
  3. SFT 训练样本中,answer 采用 CoT style,提高了模型的推理能力。

RAFT 是一个巧妙融合了 SFT 和 RAG 的方法,它独立于 retriever 的选型,是一个很值得参考的工作。

相关推荐
tedcloud1231 天前
UI-TARS-desktop部署教程:构建AI桌面自动化系统
服务器·前端·人工智能·ui·自动化·github
曦月逸霜1 天前
啥是RAG 它能干什么?
人工智能·python·机器学习
AI医影跨模态组学1 天前
Lancet Digit Health(IF=24.1)广东省人民医院刘再毅&南方医科大学南方医院梁莉等团队:基于可解释深度学习模型预测胶质瘤分子改变
人工智能·深度学习·论文·医学·医学影像·影像组学
应用市场1 天前
AI 编程助手三强争霸(2026 版):Claude、Gemini、GPT 各自擅长什么?
人工智能·gpt
浅念-1 天前
递归解题指南:LeetCode经典题全解析
数据结构·算法·leetcode·职场和发展·排序算法·深度优先·递归
Kiling_07041 天前
Java集合进阶:Set与Collections详解
算法·哈希算法
AC赳赳老秦1 天前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
脑极体1 天前
从Token消耗到DAA增长,AI价值标尺正在重构
人工智能·重构
csdn小瓯1 天前
LangGraph自适应工作流路由机制:从关键词匹配到智能决策的完整实现
人工智能·fastapi·langgraph
QYR-分析1 天前
高功率飞秒激光器行业发展现状、市场机遇及未来趋势分析
大数据·人工智能