Dify 接入
本文档介绍如何将 KnowFlow 知识库系统与 Dify 平台进行集成,实现知识库检索与 AI 对话的无缝对接。
概述
通过 KnowFlow-Dify-API 插件,您可以在 Dify 工作流中直接调用 KnowFlow 知识库的检索能力,构建基于企业知识库的智能问答应用。该插件支持:
- 知识库检索 (支持知识图谱增强)
- 相似度阈值过滤
- 多种输出格式 (Markdown/JSON/Text)
- 图片链接原样保留
前置要求
- 已部署运行的 KnowFlow 实例
- Dify 平台账号 (支持插件安装)
- KnowFlow API Key 和 Base URL
- (可选) MinIO 访问配置
如果您在同一环境中同时部署了 Dify 和 RAGFlow,在启动 Dify 服务时需要添加 -p dify 参数,以避免容器冲突:
docker compose -f docker-compose.yaml -p dify up -d
对接步骤
步骤 1: 下载并安装插件
-
从 KnowFlow 项目获取插件文件:
- 插件文件位置:
/docker/dify/knowflow-dify-api-v0.0.1.signed.difypkg
- 插件文件位置:
-
登录 Dify 平台,进入工作室页面
-
点击左侧菜单 插件 → 安装插件
-
选择 上传插件包,上传
knowflow-dify-api-v0.0.1.signed.difypkg文件 -
等待插件安装完成,插件名称为 RAGFlow API
-
在插件列表中找到 RAGFlow API 插件,点击 配置
-
填写插件配置:
- API Key: 从 KnowFlow 系统获取的 API 密钥
- Base URL: KnowFlow 服务地址,例如:
http://your-knowflow-server:9380
-
点击 保存 完成插件配置

步骤 2: 导入 DSL 工作流模板
-
下载 DSL 配置文件:
- DSL 文件位置:
/docker/dify/knowflow.yml
- DSL 文件位置:
-
在 Dify 工作室中,点击 创建应用 → 从 DSL 文件导入
-
选择
knowflow.yml文件上传 -
导入后,系统会自动创建包含以下节点的工作流:
- 开始节点: 接收用户输入和知识库 ID
- Dify知识库检索: 调用 KnowFlow 检索 API
- 代码执行: 处理检索结果,提取格式化输出
- LLM: 基于检索结果生成回答
- 直接回复: 返回最终答案

-
配置关键参数:
知识库检索节点参数:
knowledge_id: 知识库 ID (从 KnowFlow 获取)query: 检索查询文本 (关联用户输入{{#sys.query#}})top_k: 返回结果数量 (默认: 3)similarity_threshold: 相似度阈值 (默认: 0.1,范围 0.0-1.0)use_knowledge_graph: 是否启用知识图谱增强 (默认: 0)format_output: 输出格式 (默认: markdown)
LLM 节点配置:
- 选择合适的 LLM 模型 (如 Qwen/Qwen3-32B)
- 系统提示词已预设,确保严格按照知识库内容回答

步骤 3: (可选) 配置 MinIO 访问地址
如果 KnowFlow 中的文档包含图片,且使用 MinIO 作为对象存储,需要配置 MinIO 访问地址以确保图片链接可访问。
-
编辑 KnowFlow 配置文件
knowflow/docker/.env -
配置
MINIO_EXTERNAL_URL变量:MINIO_EXTERNAL_URL=http://192.168.1.100:9000配置说明:
- 格式为: 内网 IP + 9000 端口
- 确保该地址可以从 Dify 服务器访问
- 例如:
http://192.168.1.100:9000
-
保存配置并重启 KnowFlow 服务:
cd knowflow/docker
docker compose restart
步骤 4: 调试预览
-
在 Dify 工作流编辑器中,点击右上角 运行
-
在调试窗口中:
- 输入 知识库 ID (conversation variable)
- 输入测试问题
-
点击 发送,观察执行流程:
- 检查 Dify知识库检索 节点是否成功返回结果
- 查看 代码执行 节点提取的格式化输出
- 验证 LLM 节点生成的回答是否准确
-
常见调试问题:
- 401 Unauthorized: 检查 API Key 是否正确配置
- 知识库未找到: 确认 knowledge_id 是否存在
- 网络超时: 检查 Base URL 是否可访问
- 图片无法显示: 检查 MinIO Public URL 配置
-
调试通过后,点击 发布 上线应用

工作流说明
代码执行节点
该节点用于处理 KnowFlow API 返回的结果,提取 formatted_output 字段:
def main(arg1):
"""
arg1: Dify 传入的 ArrayObject,包含检索结果
"""
formatted_output = "未找到 formatted_output"
if isinstance(arg1, list) and len(arg1) > 0:
data = arg1[0]
formatted_output = data.get("formatted_output", formatted_output)
return {
"result": formatted_output
}
LLM 提示词
系统提示词确保 LLM 严格按照知识库内容回答:
你是一个严格按照知识库回答问题的智能助手。你需要根据知识库内容进找出相关的内容行回复。
回答规则:
1. 知识库可能有多个相关内容,你需要找出与用户问题最相关的内容。
2. 若知识库中找不到与问题直接相关的内容,回答必须包含:知识库中未找到您要的答案!
3. 禁止加入任何自己的解释、推测、总结性语言或通用知识
4. 如文中含有图片链接,需原样保留其位置与上下文,禁止任何形式的改写、移动或删除。
知识库内容:
{{#1761629388510.result#}}
高级配置
启用知识图谱增强
在 Dify知识库检索 节点中,将 use_knowledge_graph 设置为 1,可以利用知识图谱关系增强检索效果:
use_knowledge_graph:
type: constant
value: 1
自定义相似度阈值
根据业务需求调整 similarity_threshold 参数:
- 较低值 (0.1-0.3): 返回更多相关结果,召回率高
- 较高值 (0.5-0.8): 返回更精确结果,准确率高
多知识库场景
如需在同一个应用中使用多个知识库,可以:
- 添加 conversation variable 来动态切换
knowledge_id - 或使用多个检索节点并行检索不同知识库
常见问题
1. 插件安装失败
原因: 插件版本不兼容或文件损坏
解决:
- 确保下载完整的
.difypkg文件 - 检查 Dify 版本是否支持插件功能
- 联系管理员获取最新版本插件
2. API 调用返回 401
原因: API Key 未配置或已过期
解决:
- 在 KnowFlow 中重新生成 API Key
- 在 Dify 插件配置中更新 API Key
3. 检索结果为空
原因: knowledge_id 错误或知识库未准备就绪
解决:
- 确认知识库 ID 是否正确
- 检查知识库是否已完成文档解析
- 尝试降低
similarity_threshold值
4. 图片链接失效
原因: MinIO 访问地址配置错误
解决:
- 检查 MinIO Public URL 是否可从外网访问
- 确认存储桶权限设置为公开读取
- 测试图片 URL 是否可直接访问
获取帮助
如需更多帮助,请:
- 查看 KnowFlow 官方文档
- 访问 GitHub Issues
- 联系技术支持团队