微信扫码
与创始人交个朋友
我要投稿
如何使预训练大模型适应于特定领域的RAG?
作者用考试来作类比,问题就变成如何最好地准备一个考试?。
经典的SFT方式:旨在提升回答问题的能力,知识来源可以是预训练阶段,也可以来源于SFT阶段。而 RAFT 本质是用 SFT + RAG,训练模型更好的使用外部文档进行知识密集型问答。但注意:RAFT 是不关注检索部分的。
每个数据点包含一个问题(),一组文档(),以及一个对应的CoT思维链回答(),该回答是从其中一个文档()生成的。论文提及将文档分为两类:
训练数据采样策略:
对于其中 的数据,包含 oracle 文档();而剩下的 的数据只包含 distractor 文档
论文提到,改善训练质量的关键,是生成CoT推理步骤,来解释所提供的答案。数据样例如下所示:如果按照Instruction、Input、Output的方式来看待这个模式,那么:
? 提问:CoT Answer(即) 是如何生成的?
作者先对文档分块(chunk)处理,针对每个chunk用GPT4生成k个用户可能问的Questions(k默认是5);接着针对每条Questions,构建 oracle文本块列表 或 distractor文本块列表 作为上下文(注意:这里没有用到检索!);然后把用户问题和上下文丢给GPT4继续生成 CoT Answer,生成的提示词中用了 ##begin_quote## 和 ##end_quote## 来标记引用的原始上下文内容。现在每个QA对,都包含了 {问题,上下文,CoT答案} 三元组。最后通过一个指令模板,把用户问题和上下文合并成一条SFT样本的Input,CoT答案作为Output,进行后续的微调。(流程描述来自raft.py的codeview)
通过这种数据构造方式,作者证明了,在创建一个完整的推理链,以及清楚地引用来源可以提高模型回答问题的准确性。
从结果来看,小量级模型的RAFT效果比更大模型的直接RAG效果要好,但在某些数据集如HotpotQA却不尽人意。论文在“Evaluation”部分,提到了使用Gorilla API Bench数据集,该数据集已经包含人工验证后的正确CoT的基准。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-05-14
2024-04-25
2024-07-18
2024-04-26
2024-05-06
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19