本文试图从几篇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)方法中,训练数据的构造是为了模拟真实世界中的语言模型在特定领域内进行问答的场景。具体来说,训练数据的构造包括以下几个关键步骤:
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游戏中制作一个钻石剑。这个任务需要多步骤的逻辑和上下文感知推理。
CoT生成:首先,语言模型(LLM)在没有示例的情况下根据任务提示生成一个初步思维链(Chain of Thoughts, CoT)。这个思维链可能包含错误或不准确的步骤,因为模型是在一个封闭的环境中生成这些步骤的,没有外部信息的帮助。
例如,初步的CoT可能是:
步骤1:获取4个木板。
步骤2:用木板制作一个工作台。
步骤3:(错误的步骤)直接用工作台制作钻石剑。
迭代修订:RAT方法通过迭代修订每个思考步骤来改进这个初步的CoT。在每一步,模型都会使用当前的思考步骤和任务提示作为查询,从外部知识库中检索相关信息。
例如,对于步骤3的错误,模型可能会检索到正确的信息,即需要先制作钻石镐来挖掘钻石块,然后才能制作钻石剑。
逐步生成和修订:模型会逐步生成和修订每个思考步骤,而不是一次性生成完整的CoT。这样,每一步的生成都基于最新和最相关的信息。
修订后的CoT可能是:
步骤1:获取4个木板。
步骤2:用木板制作一个工作台。
步骤3:用工作台制作木棍。
步骤4:用木板和木棍制作木镐。
步骤5:用木镐挖掘圆石。
步骤6:用圆石制作石镐。
步骤7:用石镐挖掘铁矿石。
步骤8:冶炼铁矿石得到铁锭。
步骤9:用铁锭制作铁镐。
步骤10:用铁镐挖掘钻石。
步骤11:用钻石制作钻石剑。
通过这个过程,RAT方法能够有效地减少LLMs在长视野任务中的幻觉现象,并提高其推理和生成的准确性。这个过程模仿了人类在解决复杂问题时如何利用外部知识来逐步调整自己的思考过程。
05
—
OODA:迭代式RAG推理
现在主流的RAG系统基本可以概括为以下几部分,可以看到基本围绕检索和生成两个模块在优化,而这篇论文提到一个新的迭代式推理的概念。
论文中提到的OODA(Observe-Orient-Decide-Act)方法是一种迭代推理框架,它强调在复杂环境中的持续适应和决策制定。OODA循环包括四个主要阶段:观察(Observe)、定位(Orient)、决策(Decide)和行动(Act)。在问答系统(Q&A)的背景下,OODA循环可以应用于以下几个方面:
1. 观察(Observe):在问答系统中,这个阶段涉及收集关于问题的信息,包括理解问题的上下文和相关领域知识。
2. 定位(Orient):这个阶段涉及分析收集到的信息,更新对问题情境的理解,并生成可能的解决方案或行动。在Q&A系统中,这可能意味着根据收集到的信息来调整问题的表述或搜索策略。
3. 决策(Decide):在这个阶段,系统需要评估潜在的解决方案或行动,并基于当前的理解选择最合适的一个。在Q&A系统中,这可能涉及到选择最佳的检索策略或生成答案的方法。
4. 行动(Act):执行选定的解决方案或行动,并监控其对环境的影响。在Q&A系统中,这可能意味着执行检索查询、生成答案或请求更多的信息。
通过将OODA循环整合到基于检索的生成(RAG)问答系统中,可以迭代地细化对问题的理解,检索更相关的信息,并生成更准确、更符合上下文的答案。这种迭代过程有助于克服许多当前大型语言模型(LLMs)和AI系统的一次性输入-处理-输出数据流的局限性。
例如,考虑一个金融分析领域的问答任务,系统可能需要回答关于公司财务报告的复杂问题。在OODA循环中:
- 观察:系统收集有关公司历史财务数据、市场趋势和最新新闻的信息。
- 定位:系统分析这些数据,识别出关键的财务指标和市场变化,以更好地理解问题的上下文。
- 决策:基于分析,系统决定使用特定的财务模型或理论来解释数据,并生成可能的问题答案。
- 行动:系统执行生成的答案,并根据反馈(例如,如果答案不完整或需要更多信息)进一步迭代循环。
通过这种方式,OODA循环可以帮助Q&A系统更有效地处理复杂的、多步骤的推理任务,从而提高答案的质量和准确性。
从效果上看,尤其是Harder任务,提升的幅度非常明显!
06
—
总结
RAG是有效降低大模型幻觉的一个手段,如今已经被应用在各大公司各大应用。本文重点关注 RAG中的“G”部分的推理总结能力,从基座的选择,训练数据的构造,RAG与COT的相互提升、OODA的迭代式推理进行了介绍,越来越认同吴恩达老师提到的Agentic Workflow中衍生的一些观点:在GPT5到来之前,我们可以通过workflow迭代的方式完成更多有意思的应用
希望本文能给读者一些参考。如有更好的Paper或方法,也请留言分享。如能给您带来一点启发,请帮忙点赞关注转发,感谢!
Reference:
1.RAT:arxiv/2403.05313
2.OODA:arxiv/2404.11792
3.RAFT:arxiv/2403.10131
4.不相干片段对LLM的影响:arxiv/2404.03302