·Concavity Team

全文档推理(FCR)准确率再度远超RAG!

在上一篇文章中,面对多跳难题,全文档推理FCR准确率高达RAG的4倍。很多读者会问:FCR面对难题表现好,是否简单一些的题也能有好的表现呢?面对简单问题,是否使用RAG就已经满足业务需求,而不必要使用FCR了?这篇文章使用公开测试集来对比FCR和RAG在面对简单问题时的表现。结论是:即使问题简单,FCR也很有必要,因为FCR的准确率是RAG的2倍!


结论先行:FCR的准确率是RAG的2倍

本文将使用实例来展现FCR和RAG面对同一个简单问题时的回答能力,并给出benchmark上的得分。

本文的benchmark使用的测试集是MuSiQue Dev Set,从中随机抽样30道简单问题。随机抽样保证了测试集不会是“人工挑选出来适合FCR”的样本,保证了结果无偏。我们测试了3套方法:混合 RAG(Hybrid RAG,BM25 + 语义相似度)得分50%;迭代 RAG(Iterative RAG)得分70%;而全文档推理(Full Context Reasoning, FCR)拿到100%的绝对高分! 这个结果说明,即使问题简单,FCR相较于RAG,依然是质的飞跃!

案例一:问题简单,RAG也找不到关键信息

由于RAG切割文档的特性,即使问题简单,RAG在检索信息时仍然会遗漏关键信息。来看测试集的一个问题:

"When did the Japanese get to Liang Jiahong's birthplace and the rest of Guangdong?"
(日军何时到达 Liang Jiahong 的出生地及广东其余地区?)

这个问题其实很简单,人类的逻辑链条是:找到Liang Jiahong 的出生地 → 找到这个地点对应的战争时间线。正确答案是November, 5。

FCR的处理流程是:

  1. 找到Liang Jiahong 的出生地在Foshan, Guangdong(广东佛山),并验证;
  2. 找到日军在1939年11月5日占领佛山,并验证; 最终给出正确答案November, 5。

混合RAG (BM25 + 语义相似度):

Hybrid RAG的回答是:

“我无法回答,因为摘录里没有出现 Liang Jiahong 这个名字。”

可以看到,单轮检索的Hybrid RAG找不到关键信息,因此无法回答。

迭代 RAG: Iterative RAG 在这题上通过多轮检索,最终找到关键信息,回答出正确答案。

然而迭代RAG的成功带有偶然性,因为迭代RAG并没有改变RAG架构信息碎片化、缺乏全局视角的本质缺陷,换道题迭代RAG就也无法奏效。来看下一道题:

"Who was the first president in the country where the Kamchatka Peninsula is located?"
(堪察加半岛所在国家的第一任总统是谁?)

人类逻辑链条其实很短:找到Kamchatka Peninsula所在国家 → 找到这个国家的第一任总统。正确答案是 Boris Yeltsin(鲍里斯·叶利钦)。

FCR的处理流程是:

  1. 找到Kamchatka Peninsula所在国家是俄罗斯,并验证;
  2. 俄罗斯的第一任总统是鲍里斯·叶利钦,并验证。

迭代 RAG:

"The information is not available in the provided excerpts."
(提供的摘录中没有这个信息。)

迭代RAG经过多轮检索,找到信息"The Kamchatka Peninsula is located in Russia",然而后续找不到“俄罗斯的第一任总统”的相关信息,从而放弃回答。因此,虽然拥有多轮检索的迭代RAG在某些问题上强于单轮检索的混合RAG,但治标不治本,文档切割、信息碎片化、匹配不上文档的底层缺陷让多轮检索也是无用功。

案例二:RAG的已读乱回,给出误导性的错误回答

在前文中也提到过,相比于RAG找不到信息拒绝回答的情况,更灾难的是RAG找不到正确信息从而自发抓取误导性信息给出错误回答。对于利用RAG搭建问答agent的业务,这种“已读乱回”往往会误导从业者,引发严重后果。在实际使用agent的过程中,比agent老实说“不懂”更可怕的是agent“不懂装懂”。来看一个例子:

"Which city shares border with the area having Bella Vista High School?"
(Bella Vista High School 的所在地区,与哪个城市接壤?)

逻辑链条是:找到Bella Vista High School所在地区 → 找到该地区接壤的城市。正确答案是Citrus Heights。

FCR的处理流程是:

  1. 找到Bella Vista High School所在区域是Fair Oaks,并验证;
  2. 找到Fair Oaks北边接壤的城市是Citrus Heights,并验证。

混合RAG:

Citrus Heights, Carmichael, Orangevale, and Folsom

混合RAG给出了一堆无关信息,正确答案淹没在无关信息中让人摸不着头脑。

迭代RAG:

Orangevale

迭代RAG给出了完全错误的答案。迭代RAG在这题上进行了5轮搜索,读了36个片段,但是随着轮数增加、上下文越积越多,模型最后跑偏到Orangevale这个答案上。在迭代RAG的分析中,曾出现过"Fair Oaks is bounded to the north by the city of Citrus Heights"这样的信息,但是多轮检索积累了海量无关信息,反而有用的信息被淹没,模型跑偏到错误答案。在利用RAG搭建问答agent中,这个问题时常出现:回答太过冗杂,包含无用信息,让求助于agent的人无法判断正确信息,反而误导求助者。

案例三:RAG无法应对“问题本身有偏差”的情况,而FCR可以!

自从agent爆发以来,很多时候使用者会纠结于:到底怎么提问,才能让agent回答更好?现实情况时,提问者换一种问法,agent就回答另一个答案。回答不稳定也是利用RAG搭建agent的常见问题。 来看一个例子:

"What award did the singer of Never Had a Friend Like Me in Aladdin receive?" (《阿拉丁》里《Never Had a Friend Like Me》的演唱者获得过什么奖?)

逻辑链条是:找到《阿拉丁》里《Never Had a Friend Like Me》这首歌的演唱者 → 找到该演唱者获得过的奖项。正确答案是Academy Award for Best Supporting Actor。而此题的难点在于,题目本身有偏差:《阿拉丁》里的歌叫《Friend Like Me》,而不是题目里的《Never Had a Friend Like Me》。这个场景在实践中经常可见,使用agent的人往往难以用专业准确的语言去提问,很多提问本身就不准确。这时候,自动改正信息并继续回答的能力就尤为重要。

FCR的表现:

FCR没有被题目措辞带偏,而是自动更正信息:

  1. 自动更正《阿拉丁》中的歌是《Friend Like Me》,而不是《Never Had a Friend Like Me》;
  2. 找到演唱者是Robin Williams;
  3. 他获得过的奖项是Academy Award for Best Supporting Actor。

混合RAG的表现:

混合RAG直接按照题目中的信息走,最后定位到错误歌手2Pac身上,并回答:

“提供的摘录中没有关于 2Pac 因这首歌获得什么奖的信息。”

迭代RAG的表现:

迭代RAG跟混合RAG一样,错误定位到歌手2Pac身上,多做了几轮检索并尝试纠偏,但持续错误检索无法稳定收敛,最后回答:

"The excerpts do not contain information about what award 2Pac received for 'Never Had a Friend Like Me'."

在实践中,模型能够自动纠偏并给出正确逻辑链条是非常重要的能力,RAG做不到,但FCR可以! 背后原理是,RAG仅仅是“把题目改写成查询”,一旦题目本身略有偏差,RAG的每一轮检索都是在围绕着偏差信息,无法自动纠错;同时,当用户换一种问法措辞,RAG的查询方向也会变得不同,回答不稳定。而FCR拥有全文档语境,可以识别用户真正的问题是什么,自动纠偏,并且回答稳定

FCR的超强自主纠偏能力:比标准答案回答的还好!

上一节我们通过案例展现了FCR自主纠偏的能力,这并不是偶然一题:在测试集中的多道题上,FCR的回答甚至超过了参考答案!来看一下其中两个例子:

第一题

“How many mandatory transmitters of the Canadian Broadcasting Centre's owner were updated before the deadline?” (在截止日期前,加拿大广播中心所有者更新了多少个强制性发送机? )

参考答案:"only about half"。参考答案是直接从原文中提取片段:

  • "While its fellow Canadian broadcasters converted most of their transmitters to digital by the Canadian digital television transition deadline of August 31, 2011, CBC converted only about half of the analogue transmitters in mandatory areas to digital (15 of 28 markets with CBC Television stations, and 14 of 28 markets with Télévision de Radio-Canada stations)..." (CBC更新了大约一半的强制性发送机(其中15个来源于CBC Television stations,14个来源于Radio-Canada stations)

FCR的答案:

  1. 找到Canadian Broadcasting Centre 的所有者是CBC;
  2. 找到CBC在2个不同的渠道更新了发送机:其中一个更新了15个,另一个更新了14个;
  3. 合起来是15+14=29

可以看到,参考答案只是傻瓜式地从原文里截取了片段"only about half",而没有推理过程。但FCR直接通过推理计算得到了精确答案。题目问的是“How many”,即需要一个精确数值,FCR的回答显然优于参考答案。通过这一题我们可以看到FCR的超强推理能力,它能通过全文档视角,深刻理解文档的含义并进行深度推理,而不是简单截取答案。

第二题

“The Live Life Loud album's band signed to which label?” (《Live Life Loud》专辑的乐队属于哪家唱片公司?)

参考答案: "Fair Trade Services"。原文中有这样的信息:《Live Life Loud》专辑是Hawk Nelson在2009年发行的专辑,Hawk Nelson现在签约于名叫Fair Trade Services的唱片公司。

FCR的答案:

  1. 《Live Life Loud》专辑是Hawk Nelson在2009年发行的专辑;
  2. 在2009年时,Hawk Nelson签约的唱片公司是BEC Recordings,所以FCR给出的答案是BEC Recordings。

可以看到,题目本身就有歧义,是问现在的唱片公司,还是专辑发行时的唱片公司呢?从语境上,FCR的回答更符合人类的理解,因为《Live Life Loud》发行的时候Hawk Nelson是属于BEC Recordings。而参考答案依然只是机械截取了部分信息。

综合来看,即使数据集本身的标注不够准确时,FCR都可以给出比参考答案更优秀的回答。拥有超强推理能力和自主纠偏能力的FCR,可以降低用户的使用门槛。用户不需要“完美提问”,因为FCR会理解你真正想要问的!

测试结果统计

在简单问题的测试集中,FCR得到了100%的准确率! 混合RAG准确率50%;迭代RAG准确率70%。

总结

本文中的题目较为简单,逻辑链只需要1-2步。很多人会想,简单题RAG应该够用了吧?但实际上,信息碎片缺失、检索匹配不到、混入过多无关信息、回答效果随着用户的问法而不稳定,都是RAG本身自带的缺陷,并不会因为问题简单而消失了。本文的结果也说明,FCR的价值不只在特别复杂的问题里才体现。只要你追求答案准确、可信赖、稳定、对用户使用门槛低(不需要用户用专业完美的措辞提问),就应该使用FCR!