前面,我发了一篇部署ragflow的文章,以及如何让ragflow与dify共存在一台电脑上:安装ragflow后,之前部署的Dify咋不能用了?(附ragflow一键安装包dify共存版)
今天来给大家分享一下,如何将ragflow知识库接入dify,作为dify的外挂知识库。
一、RAGFlow中相关操作
一)配置模型
如果知识库配置RAPTOR策略的话,需要配置大模型,此处跟Dify上配置模型类似,rerank模型,embedding模型已经默认配置好,无需再配置,只需配置chat模型即可,配置上后,方便其他地方使用。
二)创建RAGFlow知识库
此处先以最简单配置。
三)获取ragflow接口密钥
四)获取知识库ID
二、Dify接入RAGFlow
一)添加外部知识库API
二)如何确定ragflow的api节点?
1、先看Dify关于外部知识库都说了些什么?
参考地址:外部知识库 API | Dify
貌似找不出什么,因为这个节点肯定是由外部知识库定义,只要遵循Dify的端点定义要求就行了,即:url路径中要有一个/retrieval
2、查看ragflow官方是否支持接入其他系统
我在0.13版本的更新说明中,找到了增加了支持dify外部知识库的跟新说明:
地址:https://github.com/infiniflow/ragflow/releases
3、源码中找到Dify知识库召回接口
至此,我们可以拼凑出外部知识库的节点的后半部分:/dify/retrieval
4、节点前面的域名怎么定?
接口是对外提供服务的,是后端服务,所以,他是ragflow-server提供的,我们可以看到,ragflow的容器中,ragflow-server是对外提供服务的,有两种服务:
- 一个是web网页端口的服务:默认是80端口,为了避免和dify端口冲突,我这里改为了90端口,还有就是ssl端口443,我这里也改为了543端口
- 另一个就是接口服务的端口:9380,这个就是我们的知识库接口对外的服务端口,web前端通过接口提供的服务,与后端进行数据交互
到这里,ragflow的外部知识库接口前面的节点就确定了:http://{你的IP}:9380
5、你的IP地址怎么确定?
由于我们的项目是通过docker启动的,所以,统一使用 host.docker.internal:9380
这里解释一下这个域名:
host.docker.internal
是Docker提供的一种方便的机制,用于在开发和测试环境中从容器访问宿主机的服务。这个名称在Docker Desktop for Windows和Docker Desktop for Mac上是可用的,它允许容器中的应用程序访问宿主机上的服务和端口。
在不同的操作系统(如Windows和Mac)上,宿主机的IP地址可能会有所不同。host.docker.internal
提供了一个统一的名称,使得容器中的配置在不同平台上保持一致。
6、这就够了吗?
按照前面一步步推理,理论上来说,一个完整的api节点应该完整了,但是这就够了吗?
我们看下官方文档:
发现每个接口都有个公共前缀:/api/v1
这其实也是绝大多数后端服务的通行做法,加上前面我们拼接处的api节点,现在才算是完整的拼接出了api节点了:http://host.docker.internal:9380/api/v1/dify/retrieval
7、再回到前面的Dify关于外部知识库api的定义
我们现在可以确定Dify中关于外部知识库的节点定义了,如下图:
三)填写RAGFlow关键信息
① 自定义外部知识库名称
② 外部知识库接口base url
③ RAGFlow的API KEY
四)连接外部知识库
三、创建一个Dify聊天助手
一)应用基本信息
二)添加知识库为上下文
三)测试
1、聊天效果
2、请求日志查看
RAGFlow已经自带了中英文各种嵌入模型和rerank模型,到对应场景,配置参数时,自动默认好对应模型,这一点很赞!
通过其背部整合的深度文档解析器,可以针对文档布局进行分析,就像人有了一双眼睛,看到的不仅仅是文字,还有篇章布局,获取的文档信息更加丰富,层次维度更加多元。
我们可以根据情况,各取所长,融入更多自己的更多工作场景!
后续我也会持续分享更多Dify以及ragflow的实战干货经验,感兴趣的点个关注加置顶,可以第一时间收到发文提醒~