0. 前言
在介绍该问题的解决方法前,先谈一谈最近一段时间使用Dify和RAGFlow的一些感受,希望可以给有需要的人提供一些思路或帮助。需要解决方法的可以直接跳到第4部分。
最近在摸索基于知识库的问答助手,开始的时候没有仔细了解过大名鼎鼎的RAGFlow,而是先上手了Dify,Dify自带的知识库只是个能用的程度,所以又找到了RAGFlow。
1. 使用感受
RAGFlow自带了多种文档的解析和切片方法(针对手册类型的PDF、书籍类PDF,Excel表格等等),大大减少了文档整理的工作量。即便如此,如果想要很好的召回效果,还是需要尽可能的去整理知识文档,调整内容和格式。

在召回不是很好的内容块上,RAGFlow也支持添加关键词,在搜索时可以结合关键词来匹配内容块(但并不支持作为外部知识库时使用,非常可惜),能够显著提高搜索精度。

由于事先体验在Dify上体验了大模型的对话以及工作流的编排,在这些方面RAGFlow就像个新兵蛋子,同样的大模型,在RAGFlow上创建的助手回答问题很僵硬(可能是默认提示词的区别),对于对话相关的功能支持不是很好(在最新的0.18版本才增加了中断模型输出)。
在我看来,Dify拥有的标注功能对于问答助手的开发非常重要,通过这个功能可以管理由用户标注的高质量回答,也可以主动批量导入。

除此之外,Dify的插件商店发展的也越来越好,支持非常多的优秀插件,而RAGFlow在0.18版本支持了MCP功能,在易用性上远不如Dify。

于是乎,我打算将RAGFlow作为Dify的外部知识库来使用,对于问答助手的相关开发则在Dify上进行
2. 将RAGFlow接入Dify
这一部分的操作可以参考博客 RAGFlow安装,dify对接RAGFlow - 博客园 和 一文读懂 RAGFlow 知识库接入 Dify 的全流程 - CSDN ,对于步骤都介绍的非常清楚,也介绍了一些原理。
需要注意的是,如果你和博主一样,需要在同一个服务器上通过Docker搭建Dify和RAGFlow,那么就要在启动时最好用以下命令启动:
undefined
docker-compose -p dify up -d
docker-compose -p ragflow up -d
此处 -p name 参数的作用是命名隔离,具体可以看第一个参考博客
接下来就要着重介绍我遇到的坑了。起初,我的Dify端口使用的默认的80端口,顺手我就把RAGFlow的端口设置为了82(为什么不是81,因为81还有一个图床),按照博客中的操作步骤,添加RAGFlow作为外部知识库API,此时提示成功。
3. 配置API成功但召回失败
但是,当我在Dify上创建好外部知识库,并在知识库内进行召回测试时,并无返回结果,查看Dify的log如下:
log
2025-04-25 08:56:41.116 INFO [Dummy-29] [_client.py:1038] - HTTP Request: POST http://x.x.x.x:82/api/v1/dify/retrieval "HTTP/1.1 200 OK"
2025-04-25 08:58:22.779 INFO [Dummy-30] [_client.py:1038] - HTTP Request: POST http://x.x.x.x:82/api/v1/dify/retrieval "HTTP/1.1 403 Forbidden"
2025-04-25 09:01:37.618 INFO [Thread-34 (_retriever)] [_client.py:1038] - HTTP Request: POST http://x.x.x.x:82/api/v1/dify/retrieval "HTTP/1.1 403 Forbidden"
第一条log就是配置外部知识库API时的请求,第二条是我做召回测试时的请求,返回 403 Forbidden ,我百思不得其解,百度也没有找到答案,最后在GitHub中我找到了答案。
dify 1.0.1 integration with external knowledge base ragflow recall is invalid. #15926 - Github ,在这个issue中我发现了遇到同样问题的小伙伴,他也是配置API成功但召回无响应。

4. 解决方法
每一个问题的下边必然会有一个大佬,大佬扒出代码一顿分析,给出了问题的原因(感兴趣的可以看看,我是没太看懂)。

最后得出一个看似离谱的解决方法:将RAGFlow的端口设置为8080。是的没错,我改了一下,它就好了。。。
RAGFlow的端口在 docker-compose.yml 中进行修改,修改后重新启动Docker Compose即可
以上就是本次问题的全部内容,希望可以帮到大家,感谢阅读!
参考
一文读懂 RAGFlow 知识库接入 Dify 的全流程 - CSDN
dify 1.0.1 integration with external knowledge base ragflow recall is invalid. #15926 - Github