开源的 RAG 和 workflow 技术对比调研

2024-05-04 02:28

本文主要是介绍开源的 RAG 和 workflow 技术对比调研,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一、先来了解一下开源的技术有哪些,怎么样

我自己就是做RAG工作的,但是还是想关注一下开源的技术做到了什么程度。

所以调研了很长时间,也体验了一下。这里写一篇文章来分享一下结果。

我用五一的假期时间,来做调研,看代码,做测试,写文章。为大家贡献资料。

这里先说一下自己的感受吧:这些开源的技术,还是各有所长的。应该结合融合到一起,才能更好的完成我们的生产需求。但是开源的文档解析最多能做到60的效果。

1.1 分类:rag

1.1.1 Qanything 

GitHub - netease-youdao/QAnything: Question and Answer based on Anything.

star数量:9K

社区活跃程度:24年年初开源的。刚开始活跃,现在社区不活跃(社区群没人说话,github上提的Issues 没人处理)

优势:个人觉得部署文档,相对齐全一些。代码质量也好一些。我个人在mac book上已经踩了一遍坑了。它的文档解析也是用ocr做的。此外优化了embedding模型,还有rerank模型。

劣势:资源占用挺多的。内存大概是20多个G。小内存还怕跑不起来(这里我已经是使用openAi来做回答了,如果再加上一个模型,需要的资源就更多了)。

文档:GitHub - netease-youdao/QAnything: Question and Answer based on Anything.

1.1.2 RAGflow

GitHub - infiniflow/ragflow: RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine based on deep document understanding.

star数量:6.3K

社区活跃程度:24年大概3月份开源的。社区活跃,社区群交流的人比较多。官方群有4个。虽然比Q anything晚,但是起势很猛。

优势:官方最引以为豪的是文档解析。我自己也看了代码,一方面使用到了OCR来解析,另一方面。做了非常多的雕花的工作。这是其他几个都没有的优势。

劣势:个人觉得文档没有那么全。

文档:ragflow/README_zh.md at main · infiniflow/ragflow · GitHub

1.2 分类:rag + workflow + tools (和扣子 coze 类型)

1.2.1 Dify

GitHub - langgenius/dify: Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, letting you quickly go from prototype to production.

star数量26K

社区活跃程度:社区活跃,社区群交流的人比较多。现在官方全已经有7个了。

优势文档非常齐全。应该是最早开源的。工具非常齐全。它的代码的扩展性,是非常好的。整体不强依赖模型。但是支持了非常多的模型部署工具的接入。还支持工作流,有非常多的tools,并且我们想要接入自己的工具,也非常方便。代码扩展性极好,且轻量级

劣势:可能不是很关注RAG的效果,文档解析差,没用到模型,也就是说扫描件是无法处理的。

文档:欢迎使用 Dify | 中文 | Dify

1.2.2 fastGPT

GitHub - labring/FastGPT: FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration.

star数量:13K

社区活跃程度:社区活跃,社区群交流的人比较多。

优势: 文档非常齐全。工具非常齐全。它的代码的扩展性好。整体不强依赖模型。但是支持了非常多的模型部署工具的接入。还支持工作流,有非常多的tools。fastGPT的商业化道路走在了前边,这是我见到的商业化走的最成熟的一个。

劣势:可能不是很关注RAG的效果,文档解析差,没用到模型,也就是说扫描件是无法处理的。

文档:文档 | FastGPT

二、总结

这里先说一下自己的感受吧:这些开源的技术,还是各有所长的。应该结合融合到一起,才能更好的完成我们的生产需求。

我们在看它的时候,应该带有目的,是想要拿来就用,还是想在上边继续做扩展。还是说学习开眼技术的代码的扩展性,还是文档能力。个人觉得dify的扩展能力是最好的,文档也是最全的,可能得益于开源的时间比较长。

这篇关于开源的 RAG 和 workflow 技术对比调研的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958153

相关文章

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数