目录
前言
现在都开始AI应用开发,何谓AI应用,起码要和AI大模型结合,应用表现形式多是对话类,当然也可以是后台调用openapi的生成式。最典型的AI应用即最早一批的chat类应用,封装个Prompt实现助手类chat。
但是AI大模型能力再强,还是存在短板的。比如功能缺失,不能进行网页检索、不能直接查询天气、甚至不能进行代码运行。再比如,知识缺失,没有大模型训练截止日期之后的知识、没有私有知识。
这个时候就用到了function call(补充能力)、RAG(补充知识),然后新的一批AI应用就登场了,比纯chat类应用的功能更强水平更高。如dify、fastgpt、bisheng等。这类应用将模型接入、Prompt管理、知识库(rag)、插件(function call)、工作流等一条龙管理起来,通过能力整合让大模型可以发挥更大的作用,解决更复杂的场景问题。
今天,我们主要对dify、fastgpt做下分析比较
一、 dify、fastgpt是什么?
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
简单说,dify是AI应用开发平台,而fasfgpt是知识库问答系统,更加专注于RAG相关领域。不过相关功能基本都覆盖了。接下来我们具体每个环节看下。
二、同场pk
1.大模型接入
dify支持更多的大模型接入,包括oneapi、ollama以及一众大模型,而且直接在系统界面可以配置,操作相对友好、方便,而且提供系统默认模型,可以针对推理模型、embedding模型设置默认模型,这样后续每次需要调用大模型的时候,就省的每次调整。
但是在知识库这块,竟然不能修改embedding模型,有点不知why
fastgpt主要支持openai,不过可以通过设置代理地址,从而可以连接oneapi,从而间接支持其他大模型。但是要增加一个模型支持,需要修改config.json然后重新通过docker-compose重启容器,配置相对比较复杂,对于非技术人员来说不方便。
2.chat(最简应用)
dify:
操作路径:工作室------创建空白应用------聊天助手------基础编排,图标、名称、备注,创建
应用首页是编排,编写提示词,右侧可以直接调试和预览效果。
自动编排功能,则调用大模型,根据角色信息自动生成提示词。
高级功能,还可以设置参数、关联知识库
知识库检索,可以设置为N选1召回、多路召回(包括了重排序)
还可以设置开场白、下一步问题建议、引用和归属、内容审查、标注回复等
fastgpt:
操作路径:应用------简易模板------取个名字,确认创建
应用首页是简易配置,编写提示词,右侧可以直接调试预览。
高级功能,还可以设置参数、关联知识库、对话开场白、猜你想问
知识库检索,搜索模式可以设置语义检索、全文检索、混合检索,结果重排,还可以搜索过滤、问题优化(通过AI自动补全知识库缺失内容),这块功能相对更全面。
小结论:
dify功能布局更加合理、舒适。fastgpt这块把提示词基础设置、发布等功能混一起,操作略混乱。
fastgpt在知识库检索方面功能更加全面
3.发布应用
二者均支持新的浏览器窗口预览、嵌入、api调用
dify默认生成一个预览地址,fastgpt可以新建多个预览地址,可以单独统计使用情况
api的话均可以生成多个密钥,这个也是行业标准操作
dify可以查看应用的消息书、活跃用户数、会话互动数、token输出速度、用户满意度、费用消耗等统计数据
4.知识库
dify:
操作路径:知识库------创建知识库------选择数据源(可选导入已有文本、同步自Notion内容、同步自Web站点--还没实现),常规选择导入已有文本------上传文件
分段式设置可选:自动分段与清洗、自定义(设置分隔符、分段处长度、分段重叠长度)
索引方式可选:高质量(使用设置的默认embedding模型)、经济(离线embedding内置模型,不需要消耗token,效果较差)
可选:QA分段模型(直接将文档形成问答对)
导入后可以修改,也可以新增单个分段
fastgpt:
操作路径:知识库------新建------选择索引模型、文件处理模型,接下来也是上传文件,分为了文本、表格,其中文本中已经实现了导入网页
训练模式:直接分段、问答拆分
处理方式:自动、自定义
导入后可以修改,也可以新增单个分段
召回测试
小结论:
dify的QA分段效果更好
fastgpt分段可以预览所有分段数据
整体上,感觉差别也不是很大。一开始以为dify的知识库分段不能编辑。
不过有个问题,dify的导入文本文档,数据量比较大的情况会报错,而且速度比较慢。而fastgpt没这个问题。
搜索测试
5.workflow
dify:
应用类型选择聊天助手,聊天助手编排方法可以选择"工作流编排",即可直接创建工作流方式的聊天助手。(应用类型直接选择工作流,没有了选择编排方法的选项,这种情况创建的是非聊天助手应用)
主要节点:LLM、知识检索、直接回复、问题分类、http请求
操作:在当前节点点击+弹出节点选择页面,以便选择添加下一节点;点击当前节点,弹出当前节点详细信息设置界面
fastgpt:AI对话、知识库检索、指定回复、问题分类
选择知识库+对话引导、问题分类+知识库,这个时候生成的都是高级编排应用即工作流编排。不过这种情况进入的界面还是简单应用的界面,这个也是我觉得fastgpt操作相比dify差一些的地方,还需要点击左侧操作栏"高级编排",才能进入到工作流编排界面。
主要节点:LLM、知识检索、直接回复、问题分类、http请求
操作:点击左上角+,可以给当前流程图添加节点,然后将上一节点和添加节点连接;点击当前节点即可编辑当前节点详细信息,因此节点块显示会比较大。再一个一个节点可能有多个连接点,有些是逻辑连接点、有些是数据连接点。
小结论
二者大的操作上差不多,可能fastgpt功能上更细一些,可以导入导出工作流配置;但是dify操作体验上更好。
实现度也差不多,我主要就是模拟知识库查询:首先用户问题分类,非知识库问题直接回复,知识库相关问题先调用知识库检索,再通过LLM整合,最后返回给用户。
6.其他
dify内置的应用还挺多的,都可以进行参考学习,另外也有agent的案例,不过这块也偏离了fastgpt的主要功能范畴。
内置工具(插件),dify也提供了不少内置工具,这块fastgpt欠缺,目前插件功能还是实验性功能
三、一些point记录
1、fastgpt工作流中问题分类功能不起作用,后来加了fastgpt官方群,在常见FAQ中找到答案,需要设置对应模型属性"toolChoice": false
参考链接:私有部署常见问题 | FastGPTFastGPT 私有部署常见问题https://doc.fastai.site/docs/development/faq/
总结
整体上dify功能更加全面,操作上更加友好舒服,拥有更多的内置功能,可以让用户更好的搭建自己的应用。
而fastgpt在知识库检索方面具有一定的优势,在工作流方面做的也不错。