期待CRAG能够在各种复杂的信息检索和知识生成场景中发挥重要作用,也期望各位读者能够通过阅读本文有所收获。
作者|FlorianJune
编译|岳扬
最后,将在本文中介绍第三种方法,即CorrectiveRetrievalAugmentedGeneration(CRAG)。
此外,大多数传统RAG方法都是将检索到的整篇文档传递给大模型。然而,这些文档中的大部分内容实际上对模型响应的生成过程并没有实质性的帮助,不应该被无差别地传递给大模型。
CRAG构思了一种轻量级的检索评估机制,可用于评判针对特定用户请求所获取文档的总体品质,并创造性地运用网络搜索(websearch)技术,以此增强检索结果的准确性。
CRAG具备出色的兼容性,即插即用,能够轻松融入各种基于RAG的策略体系,其整体框架如图2所示。
存在三种可能的判定结果:
最后,经过一系列加工处理的信息会被转发给大语言模型(LLM),以便生成最终的模型响应。图3详细描述了这一过程。
图3:评估与处理步骤,摘选自《CorrectiveRetrievalAugmentedGeneration》一文
请注意,网络搜索技术(websearch)并非直接使用用户的原始输入进行搜索。相反,该技术会先构建一个引导性提示词(prompt),然后给出少量示例(few-shot),将其发送给GPT-3.5Turbo,借此获取更精准的搜索查询语句。
在对整个处理流程有了一定的了解后,接下来我们将聚焦于CRAG体系中的两大核心模块——检索评估机制(retrievalevaluator)与知识精炼算法(knowledgerefinementalgorithm),逐一展开深入探讨。
如图4所示,检索评估器对后续环节的成效具有深远影响,其对整体系统性能的影响较大。
图4:CRAG的知识修正(Knowledgecorrection)流程。Source:CorrectiveRetrievalAugmentedGeneration[1]
CRAG采用一个经过微调的T5-large模型作为检索评估器(retrievalevaluator),在如今这个大语言模型时代,T5-large[2]也被视为轻量级的语言模型。
第一步依赖于一套启发式规则,将每篇文档分解为多个细粒度的知识点,以便挖掘更加精确的信息。如果检索到的文档只有一两句话,则应将其视作一个独立的信息单元;而对于篇幅较长的文档,则依据其总长度,灵活切分为由数个句子组成的多个更小单元,确保每个小单元都封装一条独立完整的信息。
CRAG是一种开源技术,Langchain和LlamaIndex这两大平台都支持并实现了这种技术。在此我们将以LlamaIndex的实现版本为蓝本进行详细解析。
安装完成后,LlamaIndex和Tavily的相应版本如下:
测试代码如下。第一次运行需要下载CorrectiveRAGPack。
其中YOUR_TAVILYAI_API_KEY可通过此网站[3]申请。
测试代码的运行结果如下(大部分调试信息已被删除):
要了解测试代码,需要深入剖析corrective_rag.run()方法的实现细节,接下来让我们一探究竟。
首先我们来看看该构造函数,其源代码[4]如下:
请注意,系统默认配置采用的是gpt-4模型。若您不具备使用gpt-4的权限,可将其手动调整为gpt-3.5-turbo或其他大模型的API。
函数run()的源代码[5]如下所示:
上述代码与CRAG的标准流程相比,有三点显著不同之处:
尽管如此,LlamaIndex还是引入了另一种方法论(langchain亦有类似实践),为此类任务的处理提供了另外一种思考路径。
具体代码[6]如下:
调用LLM的提示词[7]如下所示:
而在实际项目中,我们完全能够使用初始的知识精练算法(knowledgerefinementalgorithm)。相应的代码实现,您可以在此链接[8]获取。
网络搜索功能(websearch)并未直接采用用户输入的查询语句。而是通过一种“小样本(few-shot)”策略,精心构造一个引导性提示词,提交给GPT-3.5Turbo模型,借此生成更适配的搜索请求。该引导性提示词的构造方法如下所示:
图6:通过整合更多额外特征,CRAG系统中检索评估器的训练效能进一步提升。图片由作者提供。
另外,从T5-Large模型取得的成效来看,轻量级模型似乎也能取得不错的效果,这无疑为CRAG技术在规模较小的团队或公司中的推广与应用带来了希望。
针对实际应用场景,需紧密贴合具体问题情景与实际需求进行灵活调整。
本文从一个生动实例入手,逐步概述CRAG的核心流程,并辅以代码解析,其间穿插个人的见解与深度思考。
综上所述,CRAG作为一个即插即用的插件,可以大幅度提高RAG的性能表现,为RAG的改进提供了一个轻量级解决方案。
Thanksforreading!
FlorianJune
END
原文链接:
IDP是AI训推云平台,旨在为企业和机构提供算力资源、模型构建与模型应用于一体的平台解决方案,帮助企业高效快速构建专属AI及大模型。