来自工业界的开源知识库 RAG 项目最全细节对比

背景介绍

之前详细整理过来自工业界的不少开源 RAG 项目:

  • 有道 QAnything
  • RAGFlow
  • langchain-chatchat
  • 中科院 GoMate
  • Dify
  • FastGPT

群里一直看到有小伙伴询问在实际的业务需求中如何选择合适的 RAG 项目,本文就详细对比一下这些 RAG 项目。考虑到目前实际发展程度,GoMate 目前的可靠性还不适合在生产环境使用。因此主要对比其他几个更成熟的热门开源项目。

如果只关心技术选项结论,可以直接跳到最后。

项目基础信息介绍

主要关注项目的一些基础信息,可以给出初步选型建议:

项目Star 数量持续维护性社区活跃度代码质量版权信息
QAnything10.6k⭐️⭐️⭐️⭐️⭐️⭐️Apache-2.0
RAGFlow11.2k⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️Apache-2.0
langchain-chatchat29.7k⭐️⭐️⭐️⭐️⭐⭐️⭐️⭐️Apache-2.0
Dify36.7k⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️附加条件的 Apache-2.0
FastGPT15.3k⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️附加条件的 Apache-2.0
  • 项目热度上,Dify 和 langchain-chatchat 因为开源较早,star 数量最多,其他项目也属于比较热门的了;
  • 项目可维护性上,除了 QAnything 之外的其他项目都在持续更新,QAnything 5 月 17 后就不再新增功能了,因此建议谨慎选择;
  • 代码质量上,QAnything 和 Dify 质量较高;
  • 版权问题上,Dify 和 FastGPT 限制不允许用于构建多租户的 Saas 服务,同时不允许去掉版权信息,其他项目没有限制;

考虑到项目开箱即用的程度以及二次开发的难度,下面主要对比下技术栈:

项目前端技术栈后端技术栈
QAnything只有打包后前端文件,无法二次开发python + sanic
RAGFlowReact + TypeScriptpython + flask
langchain-chatchatStreamlit 实现的临时前端python + FastAPI
DifyNextJs + TypeScriptpython + flask
FastGPTNextJs + TypeScriptTypeScript + NextJs
  • 从前端角度来看,langchain-chatchat 没有生产环境可用的前端,QAnything 无法提供可修改的前端,其他几家都有可用的前端页面,技术栈都是基于 React 的
  • 从后端角度来看,除了 FastGPT 选择了基于 TypeScript 构建,其他都是基于 Python 开发的;

项目框架对比

主要比较不同项目的核心亮点,方便有针对性选择合适的项目

QAnything

请添加图片描述

  • 重点强调 Rerank 机制,强调 Embedding + Rerank 模型的联合使用可以提升文档召回质量;

RAGFlow

请添加图片描述

  • 重点强调文档的精细化解析,在文档解析上做了不少优化;

langchain-chatchat

请添加图片描述

  • 强调支持离线私有化部署,对于私有化部署支持完善,但是从 langchain-0.3.0 之后部署方式也发生了变化,与其他项目的差异不大;

Dify

请添加图片描述

  • 丰富的召回模式,支持跨知识库召回;
  • 支持 QA 模式,可以基于原始文档生成问答对进行召回;
  • 支持工作流编排;

FastGPT

请添加图片描述

  • 支持 QA 模式,可以基于原始文档生成问答对进行召回;
  • 支持工作流编排;

初步看来,如果对于文件精细解析感兴趣,可以优先选择 RAGFlow。如果希望具备任务流编排或 Agent 相关能力,可以关注 Dify 和 FastGPT

RAG 能力比较

作为 RAG 服务,从目前了解的信息来看,主要关注下面的一些基础能力:

  1. 文件的精细解析能力,是否能支持常规格式,是否具备结构化分片与检索的能力;
  2. 知识库检索效果,因为知识库检索是 RAG 的核心能力,能否高质量召回直接决定 RAG 的最终表现;
  3. 跨知识库检索的支持,目前来看跨知识库检索,自动选择合适的知识库对上层业务还是比较友好的,也是比较实用的能力;

下面从这些角度比较现有项目, 注意比较存在一些主观因素,同时各个项目也在持续迭代,后续项目中缺失的能力也可能会被补齐,所以大家可以参考下,实际使用时还需要自行调研下:

项目文件精细解析能力知识库检索效果跨知识库检索支持
QAnything⭐️⭐️⭐️⭐️⭐️
RAGFlow⭐️⭐️⭐️⭐️⭐️
langchain-chatchat⭐️⭐️⭐️⭐️⭐️
Dify⭐️⭐️⭐️⭐️⭐️⭐️
FastGPT⭐️⭐️⭐️⭐️
  • 文件精细解析,RagFlow 应该做的最深入的,但是实际测试解析很慢,而且容易失败,所以没有额外给更高的评分。FastGPT 目前支持的格式会更少一些,部分原因是因为 js 没有 Python 那么丰富的库可以使用;
  • 知识库检索,实际测试时常规几个的检索效果都还不错,但是 Dify 测试时检索效果不佳,经常召回不到正确的内容;
  • 跨知识库检索,目前只有 Dify 提供了相关的能力,而且支持的模式比较丰富,其他的应该都还没有支持;

Agent 能力比较

目前实际在生产环境使用时,除了单纯的知识库检索之外,可能会需要拓展其他外部工具,并根据业务流程编排现有工具列表,因此主要关注下面两部分能力:

  • 能否拓展支持其他工具;
  • 能否支持任务流编排;

下面主要从这些部分比较现有项目:

项目工具可拓展性支持任务流编排
QAnything⭐️⭐️
RAGFlow⭐️⭐️⭐️
langchain-chatchat⭐️⭐️⭐️
Dify⭐️⭐️⭐️⭐️⭐️⭐️
FastGPT⭐️⭐️⭐️⭐️⭐️
  • 工具可拓展性上,Dify 目前比较完善,支持了大量的外部拓展工具,新工具的支持也更便利,FastGPT 同样也具备良好的拓展性,其他项目主打 RAG 方向,在这一块的支持比较有限;
  • 任务流编排,目前 Dify 和 FastGPT 都支持良好,RAGFlow 刚刚上线,其他都还没有支持;

项目部署比较

RAG 涉及的不同的服务以及模型的部署,选择 RAG 方案的企业很多都关心内部内容的隐私问题,一般期望能私有化部署。目前主要从这两方面比较下现有项目:

  1. 部署难易程度;
  2. 是否支持离线部署;
项目部署难易程度是否支持离线部署
QAnything⭐️⭐️⭐️⭐️
RAGFlow⭐️⭐️⭐️⭐️
langchain-chatchat⭐️⭐️⭐️⭐️
Dify⭐️⭐️⭐️⭐️
FastGPT⭐️⭐️⭐️⭐️

从目前来看,项目部署都是基于 docker 进行部署。大模型的加载都是基于 Xinference 或 Ollama 等外部服务。

如果需要在离线环境部署,需要自行下载所需 docker 镜像。部分项目提供了源码安装的方式,但是操作会繁琐很多,建议优先选择 docker 方案。

总结

本文对比了目前比较热门的开源 RAG 项目,给出一些推荐建议:

  • 综合评价最完备的应该是 Dify,功能比较完善,可拓展性较好,但是需要注意版权问题,另外 RAG 检索效果不佳的问题也需要进行一些优化;
  • 如果不熟悉 Python 技术栈,希望尽可能专注业务功能的开发,那么可以优先选择 FastGPT;
  • 如果对高质量的文件解析比较在意,可以参考 RAGFlow;
  • 如果希望不借助 docker 快速搭建离线的 RAG 演示 demo,那么可以考虑 langchain-chatchat 0.2.x, langchain chatchat 0.3.0 以后也将模型部署迁移出去,部署方案与其他项目差异不大了;
  • QAnything 就不建议选择了,RAG 技术目前发展得很快,官方不维护的项目后续很难与其他项目竞争;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/786912.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SouthMap:地理信息系统的戏剧性变革

在这喧嚣的城市中,工程师们的生活总是充满了戏剧性的起伏与跌宕。作为一名长期使用SouthMap的地理信息系统(GIS)工程师,我深知每一个项目背后所蕴含的心血与汗水。今天,我想与大家分享一款令我感触颇深的软件——South…

关于Python的类的一些理解

才发现python的类对象只能调用类方法 我想使用对类对象a使用系统调用的len方法就会报错 2.类对象a是什么? 答:是所有的带有self的成员变量 举例说明:红色的就是a里面的东西 class A:def __init__(self,data):self.datadataself.b1self.d{a…

tableau树形图制作 - 7

树形图制作 1. 树状图绘制-11.1 选择属性1.2 智能选择树状图1.3 颜色设置 2. 树状图绘制-22.1 标签属性选择2.2 树状图绘制2.3 颜色设置2.4 设置标签2.5 设置筛选器 3. 树状图绘制 - 33.1 选择行列3.2 树状图转换3.3 统计转换3.4 颜色设置3.5 标签设置3.6 筛选器设置 1. 树状图…

值得收藏!推荐10个好用的数据血缘工具【送书活动】

目录 前言01 Apache AtlasApache Atlas核心功能优缺点分析适用场景 02 Datahub核心功能优缺点分析适用场景 03 Gudu SQLFlow核心功能优缺点分析 04 FineBI适用场景 05 亿信华辰智能数据治理平台核心功能 06 飞算SoData数据机器人八大特性 07 Informatica的数据平台主要特点 08 …

Studying-代码随想录训练营day33| 动态规划理论基础、509.斐波那契函数、70.爬楼梯、746.使用最小花费爬楼梯

第33天,动态规划开始,新的算法💪(ง •_•)ง,编程语言:C 目录 动态规划理论基础 动态规划的解题步骤 动态规划包含的问题 动态规划如何debug 509.斐波那契函数 70.爬楼梯 746.使用最小花费爬楼梯 总结 动态…

文华财经红绿多空趋势量化买卖点指标公式源码

LC:REF(CLOSE,1); RSI1:SMA(MAX(CLOSE-LC,0),13,1)/SMA(ABS(CLOSE-LC),13,1)*100; RSIF:90-RSI1,COLOR33DD33; A4:((C-LLV(L,33))/(HHV(H,33)-LLV(L,33)))*67; ABC22:LLV(LOW,10); ABC33:HHV(HIGH,25); 动力线:EMA((CLOSE-ABC22)/(ABC33-ABC22)*4,4); RSV:(C-LLV(L,9))/…

前端入门知识分享:如何在HTML或CSS文件中引用CSS文件。

阅读提示:本文仅仅仅适用于刚刚接触HTML和CSS的小白从业者,新人爱好者。自觉身份不符的老鸟们,尽快绕行吧! 什么是CSS?什么是CSS文件。 CSS,全称为Cascading Style Sheets(层叠样式表&#xff…

淮北在选择SCADA系统时,哪些因素会影响其稳定性?

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 在选择SCADA系统时,稳定性是一个关键因素,因为它直接影响到生产过程的连续性和安全性。以下是一些影响SCADA系统稳定性的因素: 硬件质量…

2024机器遗忘(Machine Unlearning)技术分类-思维导图

1 介绍 机器遗忘(Machine Unlearning)是指从机器学习模型中安全地移除或"遗忘"特定的数据点或信息。这个概念源于数据隐私保护的需求,尤其是在欧盟通用数据保护条例(GDPR)等法规中提出的"被遗忘的权利…

1、课程导学(react+区块链实战)

1、课程导学(react区块链实战) 1,课程概述(1)课程安排(2)学习前提(3)讲授方式(4)课程收获 2,ibloackchain(1)安…

前端Debugger时复制的JS对象字符转JSON对象

前端debugger时,复制的对象在控制台输出时是如下格式,需要转换为对象格式来进行验证操作 bridgeId : 4118 createBy : null createTime : "2023-03-24 10:35:26" createUserId : 1 具体实现代码: // 转换transform (text) {l…

yolov8 人体姿态识别

引言 在计算机视觉的各种应用中,人体姿态检测是一项极具挑战性的任务,它能够帮助我们理解人体各部位的空间位置。本文将详细介绍如何使用 YOLOv8 和 Python 实现一个人体姿态检测系统,涵盖模型加载、图像预处理、姿态预测到结果可视化的全流…

业务咨询方案 + IT落地方案建议设计

近期,在深入探索咨询方案的实施与落地路径时,体会到了一系列心得与启示,旨在为未来的项目实践提供可借鉴的蓝本。 咨询方案的精髓,在于“业务引领,IT支撑”的核心理念。所以方案的前提是在于业务的梳理; …

侯捷C++面向对象高级编程(上)-11-虚函数与多态

1.虚函数 2.virtual 3.继承+复合关系下的构造和析构 4.委托+继承

【深度学习】图形模型基础(5):线性回归模型第五部分:多变量线性回归模型

1.引言 当我们从基础的线性模型 y a b x error y a bx \text{error} yabxerror 转向更复杂的模型 y β 0 β 1 x 1 β 2 x 2 … error y \beta_0 \beta_1 x_1 \beta_2 x_2 \ldots \text{error} yβ0​β1​x1​β2​x2​…error 时,我们面临了诸多…

汇聚荣拼多多实力怎么样?

汇聚荣拼多多实力怎么样?拼多多作为中国电子商务行业的后起之秀,其市场表现和商业策略引起了广泛的关注。在回答“汇聚荣拼多多实力怎么样?”这一问题时,我们可以明确地看到,拼多多通过其独特的商业模式和创新策略,在竞争激烈的…

2024-07抖音/快手/小红书/视频号/美团无人直播技术:最新不封号无人直播的操作方法详细介绍

2024年最新研究出来的无人直播技术,目前不封号,用途大大的,可带货,可引流,可获客。 手机自动直播源码通常涉及到实时流媒体技术和应用开发,它涉及以下几个关键部分: 摄像头接入:使用…

Mysql-内置函数

一.什么是函数? 函数是指一段可以直接被另外一段程序调用的程序或代码。 mysql内置了很多的函数,我们只需要调用即可。 二.字符串函数 MySQL中内置了很多字符串函数: 三.根据需求完成以下SQL编写 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全…

[极客大挑战 2019]RCE ME

[极客大挑战 2019]RCE ME <?php error_reporting(0); if(isset($_GET[code])){$code$_GET[code];if(strlen($code)>40){die("This is too Long.");}if(preg_match("/[A-Za-z0-9]/",$code)){die("NO.");}eval($code); } else{highlight_f…