链载Ai

标题: 如何提升大模型RAG系统的效果?RAG推理增强(二) [打印本页]

作者: 链载Ai    时间: 1 小时前
标题: 如何提升大模型RAG系统的效果?RAG推理增强(二)


如何提升大模型RAG系统的推理能力,尤其是RAG中的Generation部分,即假定我们已经检索到了Top K的相关文档出来之后,如何排除不相干的信息?如何根据已有信息进行知识推理?



本文试图从几篇paper中提炼几个提升大模型RAG系统推理能力的方法:

  • 强大的基座模型

  • 数据构造提升大模型RAG推理能力

  • CoT与RAG相辅相成提升大模型RAG推理能力

  • OODA迭代式推理提升大模型RAG推理能力



01


Base模型足够强大


Retrieval-Augmented Generation,对于知识密集型任务来说,如果前半部分的Retrieval已经完成了使命,剩下的就是如何提升大模型结合知识更好回答问题的能力了。那么这部分的推理,其实,很大的比重都来自于大模型本身的推理能力了,所以其实这里可能还是个选型的工作。

对于闭源API来说,GPT4-Turbo、Kimi Shot可能是个不错的选择;

对于开源基座模型来说,我们需要从推理能力本身去做一些思考:

  • 模型是否足够大?

  • 是否有足够的代码数据参与?

  • 是否有足够的几T数据进行预训练?

  • 是否经过COT等慢思考的增强?

  • 是否有过复杂的指令遵循能力提升?

  • 是否有对针对推理相关任务用户偏好进行对齐强化?

  • 中英文预训练数据比例?

目前阶段来说,可能Qwen1.5-72B-Chat、LLaMa3-70B-Instruct对应量化版本是不错的选择。

02



RAFT:负例样本不可少


在RAFT(Retrieval Augmented Fine Tuning)方法中,训练数据的构造是为了模拟真实世界中的语言模型在特定领域内进行问答的场景。具体来说,训练数据的构造包括以下几个关键步骤:

1. 问题和答案对:对于每个训练样本,RAFT需要一个问题(Q)和一个相应的答案(A*)。
2. 文档集合:每个问题都会关联一组文档(Dk),这些文档中可能包含一个或多个“oracle”即黄金文档(D*),这些文档包含了回答问题所需的信息。同时,也会包含一些“distractor”文档即诱导答案干扰文档(Di),这些文档不包含答案相关的信息,用于模拟真实场景中的干扰信息。
3. 正负样本混合:在训练数据中,一部分样本(P%)会包含正确的“oracle”文档和一些干扰文档,而另一部分样本(1-P%)则只包含干扰文档,不包含“oracle”文档。这种设计旨在训练模型在没有正确文档的情况下也能通过上下文理解和推理来回答问题。最终训练数据的分布为:

4. 训练数据的多样性:为了提高模型的泛化能力,训练数据应该包含多样化的问题和文档,覆盖不同的主题和领域。

通过这样的训练数据构造,RAFT方法旨在提高模型在特定领域内处理复杂问题和检索结果的能力,同时提高对干扰信息的鲁棒性。


03



RAFT:CoT增强RAG


在生成答案时,RAFT方法鼓励模型直接引用相关文档中的关键信息,并在此基础上构建思维链。这样的训练数据不仅提供了答案,还展示了答案的推导过程,有助于提高模型的推理能力。

以下是一个使用RAFT(Retrieval Augmented Fine Tuning)方法时,Chain-of-Thought(CoT)如何起作用的例子:

问题(Q): “谁是进化论的提出者?”

相关文档(D): “查尔斯·达尔文是一位英国自然学家,他提出了进化论,该理论在他的著作《物种起源》中得到了详细阐述。”

干扰文档(Di):


CoT答案(A): ##Reason: 查尔斯·达尔文是一位英国自然学家,他提出了进化论,该理论在他的著作《物种起源》中得到了详细阐述。##Answer: 查尔斯·达尔文

在这个例子中,模型被训练以识别出“D*”文档中包含回答问题所需的信息,同时忽略“Di”文档中的无关信息。CoT答案不仅给出了最终答案“查尔斯·达尔文”,还展示了推理过程,即引用了相关文档中的关键信息来支持这个答案。

这种CoT风格的答案有助于模型学习如何从给定的文档中提取和构建答案,同时展示了其推理过程。这种方法使得模型在面对复杂的问答任务时能够提供更加准确和有说服力的答案。通过这种方式,RAFT方法能够提高模型在特定领域内处理检索增强型任务的能力。


04



RAT:RAG增强CoT

CoT增强RAG指的是CoT能提升RAG生成过程中的推理能力,RAG增强CoT指的是通过检索到的外部知识提升思维链的准确性,二者相辅相成。为最终的问题解决提供更多推理增强能力。

下面通过一个例子简单说明,假设我们要解决一个简单的任务:在Minecraft游戏中制作一个钻石剑。这个任务需要多步骤的逻辑和上下文感知推理。

  1. CoT生成:首先,语言模型(LLM)在没有示例的情况下根据任务提示生成一个初步思维链(Chain of Thoughts, CoT)。这个思维链可能包含错误或不准确的步骤,因为模型是在一个封闭的环境中生成这些步骤的,没有外部信息的帮助。

    例如,初步的CoT可能是:






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5