大模型主流 RAG 框架TOP10

news/2024/9/23 6:37:52/

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。

针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。

总结链接如下:《大模型面试宝典》(2024版) 正式发布!


今天,我们来看看2个问题,一个是回顾下主流 RAG 框架TOP10及一个有趣的soda RAG小工具,另一个为防止恶意检索污染攻击的RAG方案RobustRAG思路,供大家参考。

会有一些思路,供大家一起参考。

RAGTOP10soda_RAG_13">问题1:主流RAG框架TOP10及一个有趣的soda RAG小工具

最近 RAG 的轮子越来越多,我们先后已经出现了多个RAG框架,例如langchain, llamaindex,langraph,qanything, ragflow等,

例如通过github可以找到如下排序,top10框架:

Rank1、LangChain(86k stars):https://github.com/langchain-ai/langchain/,当之无愧的霸主,范围很全面,但代码‍‍‍‍‍‍‍‍‍‍‍

Rank2、Quivr(33.4k stars):https://github.com/StanGirard/quivr

Rank3、LlamaIndex(32.1k stars):https://github.com/run-llama/llama_index/

Rank4、Dify(31.2k stars):https://github.com/langgenius/dify

Rank5、Langchain-Chatchat(28.5k stars):https://github.com/chatchat-space/Langchain-Chatchat

Rank6、QAnything(9.7k stars):https://github.com/netease-youdao/QAnything,特点是加入rerank,后期更新也加入了文档理解;‍‍‍‍‍‍‍

Rank7、danswer(9.5k stars):https://github.com/danswer-ai/danswer

Rank8、RAGFlow(8.3k stars):https://github.com/infiniflow/ragflow,特点是前期处理文档理解;‍‍‍‍‍‍

Rank9、langchain4j(3.5k stars):https://github.com/langchain4j/langchain4j

Rank10、Verba(4.3k stars):https://github.com/weaviate/Verba

最近有个新的框架,SODA: Search, Organize, Discovery Anything(https://github.com/Liuziyu77/Soda/),有点儿意思,根据其介绍。其支持网络检索、文本检索(本地数据库)、图像检索(本地数据库)。

在这里插入图片描述
其中在文本检索阶段,采用两阶段检索过程,第一阶段从数据库中检索信息,第二阶段对检索到的文本进行重新排序,其实标准的重排。

例如文本检索,其通过构建本地文本数据库并从中检索信息,通过修改上传的文件的路径,其中文件包括TXT, DOCX, PDF等文件格式。

又如图像检索结果,构建本地图像数据库并从中检索图像,其中核心在于图像embedding的生成,该项目中使用使用CLIP-B/32作为图像编码器。

又如网络检索结果,其核心在于利用各种搜索引擎的API来根据用户输入检索相关信息,包括google、Serper、Bing等不同的API

RAGRobustRAG_50">问题2:为防止恶意检索污染攻击的RAG方案RobustRAG思路

这个有点意思,《Certifiably Robust RAG against Retrieval Corruption》(https://arxiv.org/abs/2405.15556),其出发点在于,由于依赖外部知识库的检索结果,RAG模型容易受到Retrieval Corruption Attacks,也就是恶意的检索污染攻击,攻击方可以通过在检索结果中注入虚假或误导性的文本,操纵模型的输出,产生错误甚至有害的内容,从而影响RAG模型的可靠性和实用性,并带来难以预料的负面影响。

如下所示,检索到的三个段落中有一个被破坏,Vanilla RAG将所有段落串联起来作为LLM输入;其响应被恶意段落劫持。

在这里插入图片描述

不同的是,RobustRAG会隔离每个段落,这样三个隔离回复中只有一个被破坏。然后,RobustRAG会安全地汇总非结构化文本回复,以获得稳健的输出。

因此,其思想很简单,就是"先隔离后聚合"(Isolate-then-Aggregate)策略。具体而言,该框架包含以下两个关键步骤:

一个是隔离回复,对于检索到的每一段文本,先独立地获取LLM的回复,而不是将所有文本拼接在一起作为输入,以限制恶意文本对其他回复的影响。

一个是安全聚合,设计基于关键词和解码的方案,如下两个代码逻辑,以安全的方式聚合这些独立的回复,生成最终的输出,以实现即使存在少量恶意回复,也能从正常回复中提取关键信息,得出可靠的结果。

其中,关键词聚合方案思路如下:

1、提取关键词,对每个独立的LLM回复进行关键词提取。使用启发式规则,例如保留名词、形容词、数字等信息量大的词,形成关键词集合;

2、聚合关键词,统计不同回复中关键词的出现频率。出现频率高的关键词更有可能携带正确和相关的信息。过滤掉出现频率低于阈值的关键词;

3、生成最终回复:使用筛选后的高频关键词,再次提示LLM生成最终的回复。关键词集合以一定的顺序(如字母序)排列,作为额外的上下文信息输入到LLM中。

解码聚合算法的思路如下:

1、独立解码,对每个检索到的文本,RobustRAG独立地进行解码操作。在每个解码步骤,得到LLM预测下一个词的概率分布向量;

2、聚合概率向量,将不同文本解码得到的概率向量进行聚合,具体使用元素级平均,得到一个新的概率分布;

3、生成回复,根据聚合的概率分布,预测下一个词。重复这一过程,直到生成完整的回复文本。在预测置信度较低时,适当参考无检索结果时LLM的预测,以保证回复的流畅性。

总结

本文主要讲了2个问题,一个是回顾下主流RAG框架TOP10及一个有趣的soda RAG小工具,另一个为防止恶意检索污染攻击的RAG方案RobustRAG思路。

其中关于主流框架方面,当前有很多,但不需要哪个都做,还是需要选一个就行。另外,RobustRAG在真实场景下用不太到,但单纯从思想上来看,是很有趣的。

技术交流群

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了算法岗技术与面试交流群, 想要大模型技术交流、了解最新面试动态的、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2040。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:交流
方式②、添加微信号:mlc2040,备注:交流

面试精选

  • 一文搞懂 Transformer

  • 一文搞懂 Attention(注意力)机制

  • 一文搞懂 Self-Attention 和 Multi-Head Attention

  • 一文搞懂 BERT(基于Transformer的双向编码器)

  • 一文搞懂 GPT(Generative Pre-trained Transformer)

  • 一文搞懂 Embedding(嵌入)

  • 一文搞懂 Encoder-Decoder(编码器-解码器)

  • 一文搞懂大模型的 Prompt Engineering(提示工程)

  • 一文搞懂 Fine-tuning(大模型微调)

  • 一文搞懂 LangChain

  • 一文搞懂 LangChain 的 Retrieval 模块

  • 一文搞懂 LangChain 的智能体 Agents 模块

  • 一文搞懂 LangChain 的链 Chains 模块

参考文献

1、https://arxiv.org/abs/2405.15556

2、https://github.com/Liuziyu77/Soda/


http://www.ppmy.cn/news/1466121.html

相关文章

24年护网工具,今年想参加护网的同学要会用

24年护网工具集 吉祥学安全知识星球🔗http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247483727&idx1&sndb05d8c1115a4539716eddd9fde4e5c9&chksmc0e47813f793f105017fb8551c9b996dc7782987e19efb166ab665f44ca6d900210e6c4c0281&scene21…

重庆人文科技学院建立“软件安全产学研基地”,推动西南地区软件安全发展

5月29日,重庆人文科技学院与开源网安签订了《产学研校企合作协议》,并举行了“重庆人文科技学院产学研基地”授牌仪式,此次合作不仅深化了双方在软件安全领域的产学研紧密联结,更是对川渝乃至西南地区软件供应链安全发展起到重要的…

vue3 todolist 简单例子

vue3 简单的TodList 地址: https://gitee.com/cheng_yong_xu/vue3-composition-api-todo-app-my 效果 step-1 初始化项项目 我们不采用vue cli 搭建项目 直接将上图文件夹,复制到vscode编辑器,清空App.vue的内容 安装包 # 安装包 npm…

简单模拟实现shell(Linux)

目录​​​​​​​ 前言 展示效果 实现代码 前言 该代码模拟了shell的实现,也就是解析类似于“ls -a -l"的命令,当我们启动我们自己写的shell的可执行程序时,我们输入"ls"的命令,也可以展示出在shell中输入&…

961题库 北航计算机 操作系统 附答案 选择题形式

有题目和答案,没有解析,不懂的题问大模型即可,无偿分享。 第1组 习题 计算机系统的组成包括( ) A、程序和数据 B、处理器和内存 C、计算机硬件和计算机软件 D、处理器、存储器和外围设备 财务软件是一种&#xff…

JVM类加载时机

Java程序对类的使用分为主动引用和被动引用,主动引用时,会触发类的初始化(在JVM虚拟机规范中,对于类在什么时候加载并没有做限定,但是对类的初始化时机有规定),而被动引用则不会。 主动引用 主…

【自动驾驶】针对低速无人车的线控底盘技术

目录 术语定义 一般要求 操纵装置 防护等级 识别代号 技术要求 通过性要求 直线行驶稳定性 环境适应性要求 功能安全要求 信息安全要求 故障处理要求 通信接口 在线升级(OTA) 线控驱动 动力性能 驱动控制响应能力 线控制动 行车制动 制动响应能力 线控转向 总体要求 线控…

Lookin高效调试iOS App的UI

Lookin是一款iOS开发时常用的调试软件,由腾讯微信读书团队QMUI开发。 它可以查看和修改iOS App里的UI对象的软件,展示App UI图层,类似于Xcode自带的UI Inspector工具,或另一款叫做Reveal的软件。 此外,虽然Lookin主体…