人工智能AdvancedRAG10:引入检索评估知识精练的CRAG技术详解IDP技术干货

期待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及大模型。

THE END
1.算法练习平台大推荐:提升编程技能的五大网站里面有各个企业(包括腾讯、阿里、蚂蚁、shopee等一些名企的算法面试题)、收集了校招时候遇到的面试题以及由网站自创的面试题,能够满足你对算法练习的需求并且可以观摩大佬的写法及官方出示写法来学习。 里面还有社区可以进行学术交流,也许可以结识到这方面专业的大佬。 https://blog.csdn.net/xDarkSoulsIIIx/article/details/117284145
2.有什么适合大一计算机专业学生免费的刷题网站?下面猪学长来给你分享一些更多的OJ算法刷题平台! 二、免费OJ算法刷题网站大分享! 高中生版本:(高中信息学奥林匹克竞赛) 1、洛谷 题目列表 - 洛谷 洛谷是一个专门面向高中信息学奥林匹克竞赛NOIP的算法题目网站,其精美的UI,非常丰富的题目分类,以及各种在线考试等丰富的功能,几乎是现在国内高中NOIP训练的常用刷题https://www.zhihu.com/tardis/bd/ans/1854004998
3.计算机考研408算法大题怎么练?通过做题我发现我非常喜欢这个软件(网站),可以说打基础,没有比知能行更好的了。知能行考研数学知能行考研数学通过大数据分析历年真题的考点难点,为每位考生选择快速提高的突破口。知能行基于机器学习追踪考生知识点的掌握情况,测练合一从而达到高效备考 https://bestzixue.com/?app_referrer_id=BDR~atczc-408ds-0407-http://www.wjks.cn/news/104928.html
4.Python在哪个网站练?Worktile社区Python在哪个网站练 共3条回复我来回复 worktile Worktile官方账号 评论 在网上进行Python练习有很多可选的网站,以下是一些常见的Python练习网站: 1. LeetCode(https://leetcode.com/):LeetCode是一个非常受欢迎的算法和数据结构练习平台。它提供了大量的算法问题,每个问题都有不同的难度级别。你可以使用Python解决https://worktile.com/kb/ask/91059.html
5.OpenJudge百练百练 OpenJudge 登入 注册 百练是北京大学ACM训练和相关程序课程在线考试系统 管理员 frank 公告 2012-03-09踩气球活动即将开始,敬请关注 2009-11-03新版百练测试赛,丰富奖品等你来拿 2009-11-03test announcement1 2009-11-01踩气球活动即将开始, 欢迎大家参与http://bailian.openjudge.cn/
6.python练题网站,Python刷题(python题库刷题网站)以下是一些推荐的Python练题网站,这些网站提供了丰富的Python题库,可以帮助你提高编程技能: (图片来源网络,侵删) 1、LeetCode(力扣) 网址:https://leetcodecn.com/problemset/all/ 特点:题目丰富,难度适中,适合初学者和进阶者。 支持语言:Python、Java、C++等。 https://www.kdun.com/ask/501776.html
7.6个超酷的练习算法,学习编程的网站如果您已经编程了一段时间,想学习一种新的语言,学习一种新的思维方式,那就去运动吧! 总结 在本文中,我分享了6个超酷的网站来练习算法和学习编程! 我个人认为您不需要学习太多,如果想在面试之前进行练习,请访问Skilled / Hackerrank / Leetcode。 或者,如果您需要学习新的语言,请选择运动。https://news.51cto.com/art/202006/618315.htm
8.Dotcpp编程(C语言网)编程入门学习训练题库C语言网(Dotcpp编程),老牌的编程入门学习平台,不仅仅提供C语言、C++、Java、Python、编译器(编程软件)等技术的教程资源和工具,还提供包括计算机二级、蓝桥杯真题在内的编程题库,让初学者学练同步,真正学会编程!https://www.dotcpp.com/
9.几个常用的算法学习网站腾讯云开发者社区万丈高楼平地起,要想厚积薄发平时就必须努力!少说多做,能动手的决不动口。这几个网站收藏了,抽时间练习上面的算法!加油!Just fighting! http://www.lintcode.com https://www.topcoder.com http://train.usaco.org https://leetcode.com http://www.geeksforgeeks.org https://cloud.tencent.com/developer/article/1374687
10.算法练习网站Anthony7算法结构视图展示: 算法动态图:https://visualgo.net/zh 练题网站: 牛客网:https://www.nowcoder.com/ hihoCoder:https://hihocoder.com/ LeetCode:https://leetcode-cn.com/ Lintcode:https://www.lintcode.com/ educative:https://www.educative.io/courses/visual-introduction-to-algorithms https://www.cnblogs.com/Anthony7/p/13399531.html
11.课外练习使用PageRank算法对网站进行排名以下示例演示如何使用 PageRank 算法对多个网站进行排名。虽然 PageRank 算法最初是为确定搜索引擎结果排名而设计的,但也可以更广泛地应用到许多不同类型的图形中的节点。PageRank 得分根据每个图形节点与其他节点的连接方式,对该节点的相对重要性给出意见。 https://nonlinear.wtu.edu.cn/info/1098/1537.htm
12.不花一分钱自学算法刷题经验(零基础版)2、练题网站:力扣/leetcode(https://leetcode.cn/leetbook/) ①优点:题库强大,非常多的大佬都在分享题解,练习算法必备 ②缺点:有些功能仅会员支持使用,比如debug,但是可以直接复制代码到用本地IDE检查 3、笔记工具:OneNote ①优点:Office全家桶大部分电脑有预装、使用简单、适合多设备使用、可以用ipad做笔记、自https://www.douban.com/group/topic/294208572/
13.程序员一般都浏览这些网站,不仅仅提升编程水平哦!!这个是上面算法题网站的中文站点,英文不好的可以刷这个,英文好的推荐去刷英文网站的题目,还能提升英语能力。 6. 牛客网 — 面经和刷面试题:https://www.nowcoder.com 各个公司的面试题和面经分享,找工作前认真刷一刷,一定会有很大收获!拿到心仪的 offer! https://www.74cms.com/news/show-1814.html
14.高中信息技术《基本算法》练习题(附答案解析).pdf高中信息技术《基本算法》练习题(附答案解析).pdf,高中信息技术《基本算法》练习题(附答案解析) :___ ___ ___ 学校 姓名: 班级: 一、选择题 1.下列VB 表达式的值等于 2016 的是( ) A 2016 Mod 2 ^ 20 . B .Len(“2015”) + 1 C .Str(2https://max.book118.com/html/2024/0717/8037052037006112.shtm
15.编程学习计划3.多进行算法练习,提高编程能力。 第三步:学习编程框架和库 编程框架和库是为了简化编程过程而设计的。它们提供了一系列已经实现的`功能和工具,使编程人员能够更轻松地实现某些特定任务。 学习建议: 1.选择一个常用的编程框架或者库进行学习,如React、Django或者NumPy; https://www.yjbys.com/xuexi/jihua/4308746.html
16.邬良全成长足迹冯之刚工作室练一练:想一想,这三道题在解法上有什么区别和联系? 1、六⑴班和六⑵班订《少年科学》的人数比是3∶4,六⑴班有21人订,六二班有多少人订? 2、六⑴班和六⑵班订《少年科学》的人数比是3∶4,六⑴班有21人订,两个班一共有多少人订? 3、六⑴班和六⑵班订《少年科学》的人数比是5∶3,六(1)班比六http://www.slypzx.com/studio.php/index/content/id/6055
17.5个适合新手练习的Python刷题网站剑指offer里的Python面试题实现,有语法、算法、案例等 leetcode刷题攻略,教你如何刷题,包含了Python解法 2、leetcode Leetcode是一个专业的刷题网站,题目数量非常之多,你可以用Python等多种语言去解题,也有会相应参考答案,其中不乏大厂面试真题。 大家可以按照类别去刷题,比如说字符串,那么字符串下面的所有题都可以https://developer.aliyun.com/article/1599227
18.信息学奥赛NOIP少儿编程培训信奥赛历年真题 CSP复赛/noip/noi省选真题 信奥赛估分工具 输入准考证,秒出分数排名 刷题排行榜 坚持很酷,等你来战 限时活动 信奥初步 科学体系+专业题单/赛事,能力提升看得见! CSP-J预备1级 C++基础语法部分 CSP-J预备2级 初涉算法 CSP-J预备3级 https://oj.youdao.com/
19.信息学竞赛宝典基础算法本书的核心是信息学竞赛中经常用到的9种基础算法,包括模拟算法、递归算法、枚举算法、递推算法、分治算法、贪心算法、排序算法、高精度算法和搜索算法。本书直接以各类竞赛真题入手,内容讲解上由浅入深,设计合理:对于引入新知识点的题目,书中会提供该题目的完整参考代码,但随着读者对此知识点理解的逐步加深,后续的同https://labs.epubit.com/bookDetails?id=UBd1a15f91dc9b
20.LintCode炼码搜索题目、标签、题集 学校机构 企业服务 邀请有礼 中文 登录 注册 在线实操提升技能,专业刷题评测, 高效进阶学习体验! 使用LintCode刷题 实操题目精选题集学习课程码力评测 各类型技能在线实操,全面提升编程能力查看全部 算法1881道题 数据库263道题 Java222道题 https://www.lintcode.com/
21.九章算法算法面试训练课(精修) 大厂面试必修课(必修) 上岸简历镀金课(项目) 人工智能实战课(转码) 国内大厂曾就职于亿级日活跃用户(dau)的社交网络公司,拥有多年的网站开发(web development)经验,擅长基础架构,动手才是硬道理,边学边练效果好.知识掌握得更加踏实! 工作朋友 学员专属的微信群,互助答疑,找人内推,https://www.jiuzhang.com/
22.河南省济源第一中学河南省济源第一中学始建于1926年,是“全国文明校园”“河南省示范性普通高中”“河南省普通高中多样化发展示范校”。https://www.hnjyyz.com/