ITPub博客

首页 > 数据库 > 数据库开发技术 > 端到端RAG的尝试:RAFT-为特定领域定制的语言模型适应性训练方法

端到端RAG的尝试:RAFT-为特定领域定制的语言模型适应性训练方法

原创 数据库开发技术 作者:芝士AI吃鱼 时间:2024-03-26 07:13:03 0 删除 编辑

RAFT: Adapting Language Model to Domain Specific RAG

引言

随着大型语言模型(LLMs)在各种文本处理任务中的广泛应用,如何将这些预训练模型适应于特定领域的任务成为了一个重要的研究课题。在实际应用中,我们经常需要模型在拥有大量相关文档的情况下回答问题,这类似于一个“开卷考试”的场景。然而,如何有效地将预训练模型与特定领域的知识结合起来,以提高在这些领域内的任务性能,仍然是一个开放性问题。本文介绍的RAFT(Retrieval Augmented Fine Tuning)方法,正是为了解决这一问题而提出的。

方法背景与动机

在大型语言模型(LLMs)的应用实践中,尤其是在特定领域的任务中,存在几个关键问题:

  1. 领域适应性不足:预训练的LLMs通常在大规模的通用数据上训练,这使得它们在特定领域的任务上可能不够精准,因为这些任务往往需要对特定领域的最新或私有知识有所了解。

  2. 检索过程的不完美:现有的基于检索的生成(RAG)方法允许模型在回答问题时引用外部文档,但这些方法未能充分利用测试阶段对文档的提前访问所带来的学习机会,也未能充分考虑检索过程中可能出现的错误。

  3. 干扰信息的处理:在实际应用中,检索到的文档可能包含与问题无关的信息,这些干扰信息可能会影响模型的性能。

  4. 训练与测试的不一致:现有的微调方法可能未能在训练时考虑到测试时的实际场景,例如,测试时可能会遇到比训练时更多的文档,或者文档的相关性可能有所不同。

在大型语言模型的训练过程中,通常会使用大量的公共数据来训练模型,使其具备广泛的知识理解能力。但是,当这些模型被应用于特定领域的任务时,如法律文件的问答或特定软件框架的代码补全,模型往往需要结合最新的领域知识或私有数据来进行更准确的任务处理。现有的方法主要有两种:基于检索的生成(RAG)和监督式微调(SFT)。RAG方法允许模型在回答问题时引用文档,但未能充分利用固定领域设置和测试时对文档的提前访问所带来的学习机会。而SFT方法则提供了学习文档中更一般模式的机会,更好地与最终任务和用户偏好对齐。然而,现有的基于SFT的方法要么未能在测试时利用文档(不包含RAG),要么在训练时未能考虑到检索过程中的不完美。
RAFT方法的提出,正是为了解决上述问题,通过结合SFT和RAG的优势,提高模型在特定领域内的性能。RAFT通过训练模型忽略那些对回答问题没有帮助的文档(称为干扰文档),同时引用相关文档中正确的序列来回答问题,从而提高模型的推理能力。

RAFT方法详解

RAFT方法提出了以下几个解决思路和方法:

  1. 领域特定的微调:通过在特定领域的数据集上进行微调,使模型能够学习到与该领域相关的特定知识,从而提高在该领域内的性能。

  2. 检索增强的微调(RAFT):RAFT方法通过在训练数据中引入检索到的文档,模拟测试阶段的“开卷考试”场景,使模型能够学习如何处理检索到的信息。

  3. 干扰文档的处理:RAFT通过在训练数据中包含干扰文档,训练模型学会忽略不相关的信息,从而提高模型对于干扰信息的鲁棒性。

  4. 链式思考风格的答案生成:通过生成包含详细推理过程的答案,RAFT方法不仅提高了答案的准确性,也增强了模型的可解释性。

1. 训练数据的准备

RAFT方法首先需要准备训练数据,这些数据包括问题(Q)、一组文档(Dk)和从某个文档(D_)中生成的链式思考风格的答案(A_)。在这些文档中,D*被称为“神谕”文档,即包含问题答案的文档,而其他文档Di被称为“干扰”文档。

2. 训练过程

在训练过程中,RAFT方法将数据分为两部分:

  • P%的数据:包含问题Q、神谕文档D_和干扰文档D2至Dk,目标是生成答案A_。

  • (1-P)%的数据:仅包含问题Q和干扰文档D1至Dk,同样目标是生成答案A*。

这种设置迫使模型在某些情况下不依赖于神谕文档,而是通过上下文来记忆答案,以此来提高模型对于干扰信息的鲁棒性。

3. 答案生成

RAFT方法在生成答案时采用了链式思考(Chain-of-Thought)的方式,即在答案中包含对原始上下文的引用和详细的解释,以展示如何基于引用达到结论。

实验分析

RAFT方法在多个数据集上的实验结果表明,它能够有效地解决上述问题,并在特定领域的RAG任务中取得了显著的性能提升:

  • 性能提升:RAFT在PubMed QA、HotpotQA和Gorilla API Bench等数据集上均实现了显著的性能提升,证明了其在特定领域内的适应性和鲁棒性。

  • 鲁棒性增强:通过在训练中引入干扰文档,RAFT提高了模型对于不相关信息的鲁棒性,使其在测试阶段能够更好地处理检索到的文档。

  • 可解释性改善:链式思考风格的答案生成方式使得RAFT生成的答案更加详细和可解释,有助于理解模型的推理过程。

RAFT方法通过其创新的训练策略,有效地解决了特定领域任务中的语言模型适应性问题,提高了模型的性能和鲁棒性,同时也增强了答案的可解释性。这些成果为未来在更广泛领域的应用和研究提供了有价值的参考。
RAFT方法在多个数据集上进行了测试,包括PubMed QA、HotpotQA和Gorilla API Bench等。实验结果显示,RAFT在所有特定领域的RAG任务中均取得了显著的性能提升。与基于SFT的方法相比,RAFT在提取信息和对抗干扰方面表现得更好。例如,在Hotpot QA数据集上,RAFT相比于基础的Llama2指令调整模型,在提取信息方面提升了35.25%,在Torch Hub评估中提升了76.35%。

创新点

RAFT方法的主要创新点在于:

  1. 结合了SFT和RAG的优点,通过训练数据的特殊准备,提高了模型在特定领域内的推理和回答问题的能力。

  2. 引入了链式思考的答案生成方式,使模型能够生成包含详细推理过程的答案,从而提高了答案的准确性和可解释性。

  3. 通过在训练数据中包含干扰文档,增强了模型对于不相关信息的鲁棒性。

不足与展望

尽管RAFT方法在特定领域内取得了显著的性能提升,但仍有一些潜在的不足和改进空间。例如,RAFT方法在处理大量干扰文档时的性能如何,以及如何确定最佳的P%值(即包含神谕文档的训练数据比例)等问题还需要进一步的研究。此外,RAFT方法在不同领域的通用性和可迁移性也是未来研究的重要方向。

结语

RAFT方法为特定领域的语言模型适应性训练提供了一种新的视角和方法。通过结合SFT和RAG的优势,RAFT不仅提高了模型的性能,也为未来的研究提供了新的思路和方向。随着在更多领域的应用和验证,我们期待RAFT方法能够为语言模型的领域适应性训练带来更多的启示和进步。

原文作者:芝士AI吃鱼;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-07-26

  • 博文量
    200
  • 访问量
    95477