前一阵多步RAG的风吹入了工业界,kimi推出了探索版本,各应用都推出了深度搜索,You.COM更是早就有了Genius的多步模式。其实都是类似multi-hop RAG的实现。之前学术界在讨论multi-hop RAG的时候总是给一些基于历史知识类的问题,什么某年诺贝尔奖的获奖人在哪读的大学呀,给人一种错觉就是这类问题现实世界里真的有人这么提问么?其实还真有!
这里举几个单步RAG效果可能不好的case,在碰到的很多场景里,多步RAG其实主要针对模糊指代的问题,包括
前面说单步RAG可能解决不好,因为以上的场景当你幸运的召回了正确的数据时,包括但不限于query改写拆解引入相关信息,检索部分解决了时效性问题,模型自身压缩知识的辅助等等,其实是有可能解决的,当然需要碰运气哈哈哈~~
例如华为手机刚发布大热,那你不需要获取华为最新的手机号,直接使用搜索引擎搜索“华为最新型号的手机市场怎么看”,这时搜索引擎已经帮你处理了热点的时效性问题,大概率你就能获得正确的答案。
再比如"光伏上下游产业链近期有哪些利好政策",可能把query拆解为光伏上游产业链利好政策+光伏中游产业链利好政策+光伏下游产业链利好政策,你不需要知道上中下游具体是啥,也是能检索到部分有效信息的。
但是!我们需要的是可以稳定解决复杂,多条件,模糊指代问题的方案!
所以下面我们会给出多步RAG的几个核心步骤和对比,再讨论几篇论文大致的实现方案,论文细节大家感兴趣可以自己去看。更多RAG query改写,召回,粗排,精排的多个步骤我们在前面的章节已经说过,这里就不提了~
懒得看具体方案的小伙伴直接看对比吧,这里总结对比下多步RAG的几个核心模块,和几种实现方案
模块 | 方案1 | 方案2 | 方案3 | 对比 |
---|---|---|---|---|
规划模块/COT | 每次只基于上一步的检索规划下一步的局部规划方案 | 全局预规划 | 先全局预规划再进行修订 | 局部规划方案容易歪楼,有时会缺少整体视角;全局规划是否需要修订其实部分取决于拆分步骤的方式,如果拆分过程不和query耦合其实多数场景不用修订也是可以的 |
子Query生成 | 和规划等同(规划本身就是子Q) | 和规划一起全局生成 | 依赖前面的的检索结果生成(全部or上一步) | 方案2和3结合的方式更常见,依赖检索结果的Query提供更加specific的检索视角,而只依赖主Q拆分的子Q提供更加general的检索视角 |
推理 | 每一步独立推理拼接最后润色 | 获得所有检索结果后一体生成 | 每一步基于上一步的推理和新获得的检索内容向后续写 | 连贯性最好幻觉较低,但对模型长文本有更高要求的肯定是一体化生成方案类似Kimi;You.COM的生成结果更类似于多步推理再拼接润色;而对于一些超长文本生成续写的方案使用更多 |
在尝试过You.COM的Genius模式,Kimi的探索模式,智谱的深度搜索后,发现除了以上的核心模块,多步RAG还有以下几个可以进一步提升效果的方向
Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions https://github.com/StonyBrookNLP/ircot
这里IRCOT的实现最为简单,我们那这篇论文作为基准论文。IRCOT的整个流程是
IRCOT的几个特点包括
以下是基于检索内容生成COT推理的prompt格式
Wikipedia Title: <Page Title>
<Paragraph Text>
...
Wikipedia Title: <Page Title>
<Paragraph Text>
Q: <Question>
A: <CoT-Sent-1> ... <CoT-Sent-n>
Search-in-the-Chain: Towards Accurate, Credible and Traceable Large Language Models for Knowledge-intensive Tasks https://github.com/xsc1234/Search-in-the-Chain
对比前面的IRCOT,Search in the chain会预先生成全局规划,并且规划的步骤中增加了子问题的拆解生成。每一步检索后,都根据检索重新生成新的全局规划。以下是Search in the Chain的实现步骤
SearchChain的几个特点包括
以下是Search in the chain构建search chain的prompt
Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Horizon Generation https://github.com/CraftJarvis/RAT
对比Search Chain,RAT也是生成全局规划,但是把query生成的步骤,放到了检索之后,同时把基于检索重新生成的方案,替换成了基于检索对初始回答进行修正。RAT的整体流程是
RAT的几个特点包括
以下分别为第一步COT回答的Prompt,query生成的prompt和基于检索内容的COT进行
想看更全的大模型论文·微调预训练数据·开源框架·AIGC应用 >> DecryPrompt
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。