AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


纠正性检索增强生成(CRAG):提升语言模型鲁棒性的新方法
发布日期:2024-03-28 08:23:56 浏览次数: 2009 来源:北漂程序员日记


写在前面

在用RAG的路子对大模型做一个增强问答的过程中,我们会遇到几个典型且棘手的问题,比如:

  1. 检索到的文档不相关或者错误的信息。这些信息在很大程度上会导致模型的回答错误。

  2. 检索的文档中会包含无用的信息。这些信息除了会增加参考信息上下文的长度外,还会一定程度上会让模型回复产生信息冗余。


引用论文的截图:

当然,我们在讨论这个问题之前,有一个非常重要的前提条件,就是prompt 中限制了模型一定依赖参考信息进行作答,简单的说就是LLM在这里是做的MRC(阅读理解)的任务。笔者在之前的文章也提到过,RAG的问题,Prompt一般会有两种表示形式,一是完全按照参考信息作答,即便参考信息是错的,另一种是结合模型自身的知识+参考信息进行作答,这种方式其本质上也让LLM 对参考信息做了一遍过滤,但带来的负面效果就是给了LLM 自由发挥的空间,从而导致幻觉的控制能力更差。

这篇论文中并没有上述笔者描述的前提,但笔者觉得有必要进行展开描述。接下来,笔者会从该论文的角度来解析整个的实现过程。


论文解析

这篇论文主要解决的问题是如何提高语言生成模型在面对不准确或不相关的检索文档时的鲁棒性。论文提出了一种名为CRAG(Corrective Retrieval Augmented Generation,即纠正性检索增强生成)的方法,该方法通过引入一个轻量级的检索评估器来评估检索到的文档质量,并根据文档的相关性采取适当的办法,从而提高生成内容的准确性和可靠性。

接下来引用论文的截图来看看具体的实现流程:

论文中的实现过程如下:

  1. 对检索到的文档进行相关性的判断,论文这里使用T5-large 进行微调来进行实现。微调数据的生成采用标注对问题的召回候选进行标注(1是相关,-1是不相关)。笔者觉得这里还有两个候选方案:第一个方案:直接对问题和候选文档进行embedding,然后卡相似度阈值来进行快速的实现,第二个方案:lora-7B的模型,第二个方案理论上能实现更好的效果。

  2. 如果文档和问题是相关的,那么就对文档进行细粒度的知识拆解。拆解的流程为:对文档拆分成更小的语义单元(通常按几个句子来定义一个语义单元),然后对拆分后的语义单元用相关性判断器(就是流程一中微调的)进行判断,选Top-5, 并卡阈值进行筛选。笔者认为这里和之前的解决方案差别在于:之前是先chunk再召回,这里是先召回再chunk,并且对每一个chunk 的拆分粒度遵循语义单元的标准(即按照句子的拆分粒度)而不是直接卡一个chunk 的长度,这种方式理论上肯定要比之前的更优,拆分的效果要更好。

  3. 如果文档和问题不相关则直接进行丢弃,且会触发后续调用第三方通用检索接口的逻辑。另外还存在一个情况为:Ambiguous,对于这种情况,论文将拆分和调第三方搜索接口融合,以增强鲁棒性。笔者在论文中没找到与这条件相符合的数据参考,但笔者认为,可以完全抛弃模棱两可的情况,直接进行第三方检索,增加回复的准确度。


以下是三种情况的伪代码流转实现:

方法的具体实现,我们介绍完了,接下来看看论文的评测效果:

写在后面

笔者在实际的尝试中以及各种论文的阅读中发现了关于RAG的几个点:

  1. 整体的框架设计肯定不是由一个单一的模型来完成,而是由多个模型共同组合。在考虑性能和成本的情况下,最好的组合方式是:一个大参数模型+多个小参数模型。大参数模型负责生成回复,小参数模型负责其他模块的一些处理工作

  2. 在未融入Agent 的情况下,是非常有必要添加一个是否检索的判别器。这个笔者在之前的文章中很早就表述过了,这里就不再赘述了,感兴趣的读者可以翻之前的文章。

  3. 在文章开头的描述中有两种提示策略,笔者更倾向完全按照参考信息来回答的方式,此外,提高检索的精度和减少冗余信息,比如这篇论文提到的文档级别相关性过滤,以及chunk级别相关性过滤。另外还需要考虑到没有任何相关信息的情况下的办法,一种是拒答(回复类似模型暂不支持回复该问题等等一些固定话述),一种是调第三方搜索引擎,但在闭域的问答场景下,笔者更推荐用拒答的方式。

  4. chunk 的拆分策略。暴力的对文档以长度的方式进行chunk 拆分,这只是一个Baseline 的实现,笔者并不建议,更好的方案是,不对文档进行拆分,或者以非常粗的粒度进行前期的拆分,在该文档被检索到后,结合当前的问题,和相关性的模型进行细粒度的知识抽取。具体的实现可以参考这个论文中的办法。


提前祝大家新的一年新的气象,动动大家的小手,进行投币~



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询