引言
什么是RAG?
简介
RAG,即Retrieval-Augmented Generation,是一种结合了检索和生成技术的模型,它通过引用外部知识库的信息来生成答案或内容,具有较高的可解释性和定制能力。RAG模型首次由Facebook AI Research(FAIR)团队在2020年的论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出。这种模型适用于问答系统、文档生成、智能助手等多个自然语言处理任务,其优势在于通用性强、能够实现即时的知识更新,并通过端到端评估方法提供更高效和精准的信息服务。
此外,RAG技术是对大型语言模型(LLM)输出的优化,使其在生成响应之前能够引用训练数据来源之外的权威知识库。这种方法允许大型语言模型在不重新训练的情况下访问特定领域或组织的内部知识库,从而保持其输出的相关性、准确性和实用性。
RAG模型通过索引(indexing)对数据进行存储和建立索引,方便检索;检索(retrieve)根据用户查询,基于LLM检索相关的外部知识数据,这是RAG的核心能力之一;生成(generate)则是根据检索匹配内容,合并用户查询,返回生成的文本。RAG技术为组织提供了经济高效的实施方式,允许聊天机器人和其他对话系统利用组织自身的数据构建知识存储库,并不断更新,以提供及时的上下文答案。
一图了解RAG
FastGPT、dify、coze三款产品及其背景
简介
FastGPT
FastGPT 是环界云计算公司旗下一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
Dify
Dify 是 苏州语灵人工智能科技公司的一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
Coze
Coze是字节跳动旗下的AI聊天机器人开发平台,它为用户带来了快速、低门槛搭建聊天机器人的机会。现在,Coze推出了Web SDK,使得用户可以更便捷地将机器人嵌入到自己的网页上,进一步拓宽了聊天机器人的应用场景。
订阅模式及市场概况
FastGPT 订阅模式:Saas+企业版:私有化托管(Sealos云服务)+私有化部署(自有服务器)
市场概况:价格比较经济实惠,深受国内用户青睐。国内用户居多,企业版国内企业采购的较多。
Dify
订阅模式:Saas+企业版(私有化部署)
市场概况:美元计价,按照汇率算价格比较高,海外的Saas用户比较多,以海外用户为主。
Coze
订阅模式:更加ToC的Saas+企业版(未发布)
市场概况:体验版更加接近C端用户
总体优势与异同
-
FastGPT
-
专注知识库训练
-
提供丰富工作流编排和API集成功能
-
插件能力强,易用性好,搭建效率高
-
支持接入任意大型语言模型
-
成熟度高,数百家企业付费客户,数千家开源社区企业客户,数十万社区用户
-
-
Dify
-
全面平台功能,包括多用户支持、多种模型选择和工具
-
插件能力强,易用性好,搭建效率高
-
支持更多模型选择,用户体验佳
-
AI原生应用开发平台,接入全球大型语言模型比较友好
-
-
Coze
-
插件能力丰富,易用性强
-
搭建效率高,无需复杂编排逻辑即可实现大模型调用
-
使用国内大模型引擎(豆包),国内版可用性略逊于海外版
-
-
共同点
-
都是基于LLM的应用平台
-
都是支持AI应用工作流编排
-
都支持知识库
-
用户可根据需求和技能选择使用
-
-
不同点
-
Coze在插件能力和易用性方面表现优异比较偏向C端用户
-
工作流,FastGPT更加精细,其他两家功能大致都相差无几
-
各功能横向对比
1.大模型接入
大模型接入是指在一个平台上能够连接和使用不同的AI大模型。这对于用户来说非常重要,因为不同的大模型在不同的任务上有不同的优势。通过支持多种大模型,平台可以提供更灵活和强大的解决方案,满足用户的多样化需求。
FastGPT
FastGPT 默认支持绝大多数主流模型,通过 oneapi 适配,部分小众模型可以通过配置文件进行添加。
dify
dify支持更多的大模型接入,包括接入oneapi、ollama以及一众大模型,而且直接在系统界面可以配置,操作相对友好、方便,而且提供系统默认模型,可以针对推理模型、embedding模型设置默认模型,这样后续每次需要调用大模型的时候,就省的每次调整。
Coze
国内版本仅支持豆包大模型以及国内的智谱、通义千问、月之暗面等大模型。
小结
在大模型接入方面,Dify表现出色,支持多种大模型且配置简单,用户体验友好。FastGPT虽然主要支持OpenAI,但通过设置代理地址可以间接支持其他大模型,然而配置过程较为复杂,不太适合非技术人员。Coze则在支持的模型数量上相对较少,主要集中在国内的一些大模型,灵活性和多样性上有所欠缺。
功能/产品 | FastGPT | Dify | Coze |
支持模型 | 主要支持OpenAI,通过代理地址间接支持其他大模型 | 支持OneAPI、Ollama等多种大模型 | 仅支持豆包大模型及国内智谱、通义千问、月之暗面等 |
配置方式 | 通过oneapi适配多个大模型 | 直接在系统界面配置 | 免配置 |
用户友好度 | 配置复杂,不适合非技术人员 | 操作友好,提供系统默认模型 | 支持模型较少,灵活性欠缺 |
2.发布应用
FastGPT
支持新的浏览器窗口预览、嵌入、api调用
FastGPT可以新建多个预览地址,可以单独统计使用情况
api的话均可以生成多个密钥
FastGPT可以查看应用的消息数、会话互动数、用户点赞/踩、费用消耗、最后一次对话时间等统计数据
Dify
支持新的浏览器窗口预览、嵌入、api调用
dify默认生成一个预览地址
api的话均可以生成多个密钥,这个也是行业标准操作
dify可以查看应用的消息数、活跃用户数、会话互动数、token输出速度、用户满意度、费用消耗等统计数据
coze
可以发布到以下平台,对字节的平台比较友好,但是针对于其他平台,Coze没有提供API,相对来说比较的不友好,如果想进行企业的集成,需要花费比较多的时间和精力去转发。
coze可以查看日活用户、新增用户、留存率、消息总数等参数
小结
功能/产品 | FastGPT | Dify | Coze |
浏览器窗口预览 | 支持 | 支持 | 支持 |
应用嵌入 | 支持 | 支持 | 支持部分 |
API调用 | 支持 | 支持 | 不支持 |
预览地址 | 多个 | 一个 | 不适用 |
API密钥 | 多个 | 多个 | 不适用 |
统计数据 | 消息数、会话互动数、用户点赞/踩、费用消耗、最后一次对话时间 | 消息数、活跃用户数、会话互动数、token输出速度、用户满意度、费用消耗 | 日活用户、新增用户、留存率、消息总数 |
平台友好性 | 一般 | 一般 | 对字节平台友好,其他平台不友好 |
通过以上分析和表格,可以看出FastGPT在功能和统计数据方面较为全面,适合需要详细数据分析和多预览地址的用户。Dify在统计数据方面也很全面,但预览地址的灵活性稍差。Coze则在特定平台发布方面有优势,但在API调用和统计数据的全面性上有所不足。
(最简应用)
每个平台都有其独特的功能和优势,适用于不同的用户需求和场景。
FastGPT 提供了丰富的功能和高度的可配置性,适合需要复杂场景和多样化功能的用户。其优势在于全面的功能设置,包括全局变量、定时执行、输入引导和猜你想问等,能够满足用户的多样化需求。
Dify 则更注重简洁和自动化,通过大模型自动生成提示词,减少了用户的手动编写工作量。其高级功能设置和知识库检索功能也非常强大,适合需要高效开发和快速部署的用户。
Coze 强调对话体验和个性化记忆模式,通过多种语言和音色选择、对话开场白、快捷指令等功能,提升用户的互动体验。其知识库体验和个性化记忆模式也为用户提供了更多的定制化选项。
FastGPT
-
创建应用:
-
进入“工作台”,选择“创建简易应用”。
-
选择“简易机器人”作为应用类型。
-
进行基础设置,包括设置应用的“图标”、“名称”和“备注”,然后创建应用。
-
-
应用首页编排:
-
应用首页的左侧支持AI模型选择、协助设置、信息编辑、提示词、关联知识库、工具调用、全局变量、对话开场白、语音播放、语音输入、猜你想问、输入引导、定时执行等功能的配置,简易应用也能完成较为复杂的场景。
-
页面右侧提供“调试”和“预览效果”的功能,允许用户即时查看编排结果。
-
-
可以快捷选择封装好的工作流进行调用
-
全局变量设置
-
通过全局变量设置可以完成一些用户选择向的编排,例如选择语言,选择AI的身份等
-
-
定时执行
-
通过定时执行功能,可以做一个日报机器人or定时提醒的机器人,或者通过工作流定时执行预设脚本
-
-
输入引导
-
输入引导可以根据用户收集的常见问题,给使用者提供快捷按钮便于对话
-
7.猜你想问
-
通过AI的总结能力推测用户之后会问的问题,提供快捷提问按钮
8.知识库引用
-
可以快捷对引用上限、最低相关度、结果重排、问题优化进行配置
-
提供了三种检索模式(混合、全文、语义)以及重排模型选择
-
可以选择不同的模型进行问题优化
Dify
-
创建应用:
-
进入“工作室”,选择“创建空白应用”。
-
选择“聊天助手”作为应用类型。
-
进行基础设置,包括设置应用的“图标”、“名称”和“备注”,然后创建应用。
-
-
应用首页编排:
-
应用的首页是“编排”页面,用户可以在这里编写用于聊天的“提示词”。
-
页面右侧提供“调试”和“预览效果”的功能,允许用户即时查看编排结果。
-
3.自动编排功能:
-
利用“大模型”根据“角色信息”自动生成“提示词”,以减少手动编写的工作量。
4.高级功能设置:
-
用户可以设置“参数”和“关联知识库”,以适应不同的聊天场景。
5.知识库检索:
-
可以设置“N选1召回”或“多路召回”,并包括“重排序”功能,以优化知识库的检索效率。
6.其他设置:
-
设置“开场白”、“下一步问题建议”、“引用和归属”、“内容审查”和“标注回复”,以增强聊天助手的交互性和准确性。
Coze
-
创建应用:
-
点击“创建bot”->选择“选择工作空间”,填写名称->点击创建
-
-
应用首页编排:
-
分为三栏,左侧为“人设与回复逻辑”,中间为“技能”,右侧为“预览与调试”
-
3.语言和音色
-
可以选择不同音色的语音模型进行朗读
4.对话体验
-
可以通过设置对话开场白、配置用户问题和建议、快捷指令、背景图片提升对话体验
5.知识库体验
-
调用方式提供了自动调用和按需调用两种方式
-
可以选择多种形式的知识库
-
搜索策略也提供了三种策略(混合、语义、全文)
-
最大召回量和匹配度也在此处可以配置
-
还可以做简单的判断(如果知识库没有检索到返回……)
6.个性化记忆模式
-
通过配置变量、数据库、长期记忆,三个参数,可以定义机器人应用的记忆模式
小结
功能/产品 | FastGPT | Dify | Coze |
创建应用 | 进入“工作台”,选择“创建简易应用”,设置图标、名称和备注 | 进入“工作室”,选择“创建空白应用”,设置图标、名称和备注 | 点击“创建bot”,选择工作空间,填写名称 |
应用首页编排 | 左侧支持多种功能配置,右侧提供调试和预览效果 | 首页为“编排”页面,编写提示词,右侧提供调试和预览效果 | 分为三栏:人设与回复逻辑、技能、预览与调试 |
快捷工作流 | 支持快捷选择封装好的工作流进行调用 | 无此功能 | 无此功能 |
全局变量设置 | 支持全局变量设置,完成用户选择向的编排 | 无此功能 | 无此功能 |
定时执行 | 支持定时执行功能,适用于日报机器人或定时提醒机器人 | 无此功能 | 无此功能 |
输入引导 | 根据用户常见问题提供快捷按钮 | 无此功能 | 配置用户问题和建议、快捷指令 |
猜你想问 | 通过AI推测用户之后会问的问题,提供快捷提问按钮 | 设置“下一步问题建议” | 无此功能 |
知识库引用 | 支持多种检索模式和重排模型选择,快捷配置引用上限、最低相关度等 | 设置“N选1召回”或“多路召回”,包括重排序功能 | 提供自动调用和按需调用两种方式,支持多种形式的知识库和搜索策略 |
语言和音色 | 可以朗读文本,定制化较低 | 无此功能 | 可以选择不同音色的语音模型进行朗读 |
对话体验 | 支持对话开场白、语音播放、语音输入等功能 | 设置开场白、引用和归属、内容审查和标注回复 | 设置对话开场白、配置用户问题和建议、快捷指令、背景图片 |
个性化记忆模式 | 无此功能 | 无此功能 | 通过配置变量、数据库、长期记忆,定义机器人应用的记忆模式 |
通过以上对比,可以看出FastGPT在功能的全面性和可配置性上具有明显优势,适合需要复杂场景和多样化功能的用户。而Dify则更注重简洁和自动化,适合需要高效开发和快速部署的用户。Coze则在对话体验和个性化记忆模式上有独特的优势,适合需要高度互动和个性化定制的用户。
4.知识库
FastGPT
1.初始化知识库构建
-
进入知识库管理界面,选择“新建”以启动知识库的创建流程。
-
根据需求挑选合适的索引模型和文件处理模型,为知识库的构建打下基础。
2.文件上传与分类
-
将所需文件上传至系统,系统支持主流的文本格式,且特别支持网页内容的直接导入。
3.智能训练模式选择
-
选择训练模式,系统提供“直接分段”、“问答拆分”和“增强训练”三种方式,以适应不同的知识整理需求。
4.灵活处理方式
-
根据个人喜好或特定需求,选择“自动”或“自定义”的处理方式,以实现自定义标识分段。
5.内容编辑与优化
-
导入文件后,用户可以对内容进行修改,或根据需要新增单独的分段,以优化知识库的结构和内容。
6.效果验证
-
通过“搜索测试”,检验知识库的检索效果和准确性,确保知识库能够满足实际应用的需求
Dify
1.初始化知识库
-
进入平台的“知识库”部分,选择“创建知识库”以开始构建过程。
-
选择数据源,您可以选择导入已有文本、同步Notion内容或同步Web站点(后者尚未实现),通常选择导入已有文本。
2.文件上传
-
上传所需的文本文件,为知识库填充基础内容。
3.分段式设置
-
选择分段方式,可以是自动分段并进行清洗,或者自定义分段规则,包括设置分隔符、分段长度和重叠长度。
4.索引方式选择
-
选择索引方式,可以是“高质量”模式,使用默认的embedding模型,或者选择“经济”模式,使用内置的离线embedding模型,后者不消耗token但效果可能较差。
分段模型
-
可选的QA分段模型功能,允许您直接将文档内容转化为问答对形式。
6.内容编辑与扩展
-
导入文件后,您可以对内容进行修改,或根据需要新增单个分段,以完善知识库。
Coze
-
创建知识库
-
点击创建知识库即可创建知识库
-
选择数据源,您可以选择导入已有文本、同步Notion内容、获取网页数据以及飞书数据
-
-
文本格式上传
-
将所需文件上传至系统,系统支持主流的文本格式,且特别支持网页内容的直接导入。
-
-
表格格式上传
-
可以获取表格的各个行和列 提取表头
-
支持对表格进行预览和修改
-
4.支持图片格式知识库上传
-
支持智能标注/人工标注两种形式
-
但是智能标注需要很久的时间,效果一般
5.支持知识库的参数设置
-
搜索策略也提供了三种策略(混合、语义、全文)
-
最大召回量和匹配度也在此处可以配置
-
还可以做简单的判断(如果知识库没有检索到返回……)
小结
在知识库功能方面,FastGPT、Dify和Coze各有特色。FastGPT在初始化流程、智能训练模式和效果验证方面表现突出,适合需要高效构建和优化知识库的用户。Dify则在分段设置和索引方式选择上提供了更多灵活性,适合对分段和索引有特定需求的用户。Coze则在数据源的多样性和表格、图片格式的支持上具有优势,但在智能标注效果上还有提升空间。
功能模块 | FastGPT | Dify | Coze |
初始化知识库构建 | 详细流程,选择索引模型和文件处理模型 | 导入已有文本、同步Notion内容 | 导入已有文本、同步Notion、网页、飞书数据 |
文件上传与分类 | 支持主流文本格式和网页内容直接导入 | 支持上传文本文件 | 支持主流文本格式和网页内容直接导入 |
分段设置 | 自动分段、自定义分段规则 | 自动分段、自定义分段规则 | 自动分段和清洗/自定义分段/支持表格预览和修改 |
索引方式选择 | 直接分段、问答拆分、增强训练三种模式 | 高质量模式、经济模式 | - |
QA分段模型 | 支持 | 支持 | - |
内容编辑与优化 | 支持内容修改和新增分段 | 支持内容修改和新增分段 | 支持表格和图片格式的预览和修改 |
效果验证 | 搜索测试检验检索效果和准确性 | 搜索测试检验检索效果和准确性 | 提供多种搜索策略和参数配置 |
图片格式支持 | - | - | 支持智能标注和人工标注 |
表格格式支持 | 支持,但体验一般 | 支持,但体验一般 | 支持,体验很好 |
(工作流)
FastGPT
-
创建一个工作流应用
-
可以通过简易应用转换成工作流应用
-
亦可直接创建工作流应用
-
-
主要节点介绍
文本输出类
-
AI对话:可以快捷配置AI模型参数、提示词、上下文(聊天记录)、选择用户问题以及知识库引用
-
指定回复:该模块可以直接回复一段指定的内容。常用于引导、提示。非字符串内容传入时,会转成字符串进行输出。
功能调用类
-
知识库搜索:调用"语义检索"和"全文检索"能力,从"知识库"中查找可能与问题相关的参考内容
-
工具调用:高级编排中,拖动工具调用的连接点,可用的工具头部会出现一个菱形,可以将它与工具调用模块底部的菱形相连接。被连接的工具,会自动分离工具输入与普通的输入,并且可以编辑
介绍
,可以通过调整介绍,使得该工具调用时机更加精确。
-
问题分类:根据用户的历史记录和当前问题判断该次提问的类型。可以添加多组问题类型。
-
文本内容提取:可从文本中提取指定的数据:例如SQL语句、搜索关键词、代码等
工具类
-
判断器:根据一定的条件执行不同的分支
-
变量更新:可以在指定节点输出值或更新全局变量
-
代码运行:执行一段简单的脚本代码,通常用于进行复杂数据的处理
-
文本加工:可对固定传入的文本加工后输出,非字符串会被强转类型为String
-
获取当前时间:获取用户的当前时区和时间。
外部调用类
-
应用调用:可以选择一个其他应用进行调用
-
HTTP请求:可以发起一个请求,实现更为复杂的操作(联网搜索、数据库查询等)
-
Laf云函数调用:可以调用Laf账号下的云函数
其他类
-
知识库搜索引用合并:可以将多个知识库的搜索结果合并进行输出。使用RRF的方式合并进行最终排序输出。
-
问题优化:将用户的问题进行优化,提升搜索的精度。
-
自定义反馈:会在对话内容前增加一条反馈,可用于自动记录对话效果。
Dify
-
创建一个工作流应用
-
通过新建空白应用->工作流编排 创建一个新的工作流应用
-
-
主要节点介绍
基本类型
-
LLM:调用大语言模型回答问题或者对自然语言进行处理
-
知识库检索:允许你从知识库中查询与用户问题相关的文本内容
-
直接回复:定义一个聊天对话的回复内容
问题理解
-
问题分类器:定义用户问题的分类条件,LLM 能够根据分类描述定义对话的进展方式
逻辑
-
条件分支:允许你根据 if/else 条件将 workflow 拆分成两个分支
-
迭代:对列表对象执行多次步骤直至输出所有结果。
转换
-
代码执行:执行一段 Python 或 NodeJS 代码实现自定义逻辑
-
模板转换:使用 Jinja 模板语法将数据转换为字符串
-
变量聚合器:将多路分支的变量聚合为一个变量,以实现下游节点统一配置。
-
参数提取器:利用 LLM 从自然语言内推理提取出结构化参数,用于后置的工具调用或 HTTP 请求。
工具
-
http请求:允许通过 HTTP 协议发送服务器请求
Coze
-
创建一个工作流应用
-
点击“添加工作流”->“创建工作流”->填写工作流的名称和描述即可创建一个新的工作流
-
-
主要节点介
文本输出类
大模型:调用大语言模型,使用变量和提示词生成回复,支持单次处理和批处理,单词输出一个output,批处理输出一个List。
消息:支持中间过程的消息输出,支持流式和非流式两种方式。
工具类
代码:编写代码输入变量来生成返回值
文本处理:用于处理多个字符串类型的变量格式
知识库:在选定的知识中,根据变量召回最匹配的信息,并且以表格形式返回
判断器:连接多个下游分支,若设定的条件成立则仅运行对应的分支,若均不成立则只运行“否则”分支。
变量:用于读写机器人中的变量。变量名称必须与机器人中的变量名称相匹配。
外部调用类
外部调用类工作流:集成已发布的工作流,可以嵌套执行子任务。
图像流:集成已发布的图像流,可以嵌套执行子任务。
数据库:可支持对数据库放开读写控制,用户可读写其他用户提交的数据,由开发者控制,需要提前在Bot的数据库中添加Table。
小结
功能/产品 | FastGPT | Dify | Coze |
工作流创建方式 | 简易应用转换/直接创建 | 新建空白应用->工作流编排 | 点击添加工作流->创建工作流 |
节点类型丰富度 | 高 | 中 | 低 |
AI对话配置 | 支持 | 支持LLM | 大模型调用 |
知识库搜索 | 强 | 允许检索 | 知识库召回 |
工具调用 | 支持 | 代码执行/模板转换 | 代码编写 |
外部调用 | 应用调用/HTTP请求/云函数调用 | http请求 | 工作流/图像流/数据库 |
用户友好度 | 中 | 高 | 高 |
技术需求 | 高 | 中 | 低 |
FastGPT在功能丰富度和AI对话配置上表现突出,适合需要高级功能和定制化需求的用户。Dify在工作流创建和问题理解上表现良好,适合需要清晰逻辑处理的用户。Coze则在用户友好度和操作简便性上具有优势,适合初级用户或需要快速上手的场景。