n8n 实操攻略 19:如何给 n8n 接入 dify 知识库

天天

发布于253天前
龙猫也是猫
这个攻略是 dify 和 n8n 结合的应用,Dify 和 n8n 都是流行的自动化和工作流工具,但它们的侧重点和使用场景有明显区别:

## 核心定位

**Dify** 是一个专注于 AI 应用开发的平台,主要用于构建基于大语言模型(LLM)的应用。它提供可视化的工作流编排,让开发者能够快速搭建 AI 聊天机器人、知识库问答系统、AI 工作流等应用。


https://appstore.lazycat.cloud/#/shop/detail/dev.libr.dify


**n8n** 是一个通用的工作流自动化平台,类似于 Zapier 或 Make(原 Integromat),主要用于连接各种应用和服务,实现业务流程自动化。


https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.n8n


## 主要区别

**使用场景**
- Dify:构建 AI 驱动的应用,如智能客服、内容生成工具、数据分析助手等
- n8n:自动化日常任务,如数据同步、邮件自动化、社交媒体管理、CRM 集成等

**技术特点**
- Dify:内置 LLM 管理、向量数据库、知识库管理、prompt 工程工具等 AI 相关功能
- n8n:提供 400+ 预建集成节点,支持 webhook、定时任务、复杂的条件逻辑等

**目标用户**
- Dify:AI 应用开发者、产品经理、想要快速搭建 AI 应用的团队
- n8n:运营人员、自动化工程师、需要集成多个系统的企业


## 选择建议

如果你的需求是构建 AI 相关应用,特别是需要集成 ChatGPT、Claude 等大模型的场景,Dify 会更合适。

如果你需要的是连接各种 SaaS 工具、数据库、API 来实现业务流程自动化,n8n 会是更好的选择。

两者也可以结合使用:用 Dify 构建 AI 能力,通过 API 暴露出来,然后在 n8n 中调用这些 AI 能力,实现更复杂的自动化工作流。

## 如何构建

在懒猫商店中,打开 dify,首次启动会比较慢

先设置一个管理员账户

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/2d1c2f9f-922f-4bf2-99ad-32425b5d8df5.png "image.png")

登录后进入首页

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/1d09fc66-462a-4b9c-bb04-67d8614493f5.png "image.png")

点击知识库,创建一个新的知识库

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/9d5020fd-904c-4790-a246-b156b3d35368.png "image.png")

这里,可以导入自己的文档。

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/d754bfeb-fee9-406b-933b-3b61bef4aefa.png "image.png")

我导入了懒猫的开发者文档,方便移植应用
点击下一步

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/3ea0e7d9-c6b9-4f5a-8509-156044064928.png "image.png")

这里默认是 经济,先不要切换到高级,高级要设置模型,但目前用不了

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/71f4f195-26bd-4a0a-9385-827e102e8912.png "image.png")

点击 保存并处理,它就会处理你上传的文件了

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/d8fe0106-545e-4137-9973-2c42b5381455.png "image.png")

点击前往文档

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/a265d990-d399-4c1b-949c-41b51a7ab5a9.png "image.png")

知识库的名称可以改一下,方便记忆

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/e76aac94-7e24-4323-b2a4-6b3540742975.png "image.png")

能看到我的所有文档了

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/78361512-ee67-4d90-83f2-920ac970b56e.png "image.png")

到了这一步,因为目前的版本不支持模型的安装,我只好挪到了 [dify 的官网](https://cloud.dify.ai/signin)接着操作,前面的步骤都是一致的。

但官网的导入文档只能导入一个(需要花钱升级才让批量上传),所以我用的firecrawl 抓的开发者文档

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/bc668d5a-bdf4-4a02-b22c-bac3ee8dbb9d.png "image.png")

在这一步就可以选择模型了

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/ac9bf24b-1345-4d73-826a-7bc69f1d1f2f.png "image.png")

点击进入 API

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/045c0bf7-91dc-4b37-9403-f19d77ba6461.png "image.png")

在右上角可以拿到 API 密钥,先保存到本地,待会要用

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/e17936c7-e6df-488f-a17e-49f42f0ffd9d.png "image.png")

进入知识库,在这里可以继续添加文件

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/1f192fba-eb5d-4900-8521-d26e820c321d.png "image.png")

在这里可以看到红框内的是我们的知识库 Id

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/43b70d3f-1a08-45d4-a6f9-3c4f58169796.png "image.png")

到这里 dify 的知识库已经完成了,下面我们要在 n8n 中调用这个知识库。

在 n8n中新建一个工作流

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/82d89fd7-8a73-46cd-a30b-5f6dc1007d92.png "image.png")

选择你的大模型,这里我用到 DeepSeek,主要配置是右侧的 http Request 节点

把这里的 Id,替换成自己的知识库 Id

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/bf13dca3-54ba-4728-8baa-96a771fdf60f.png "image.png")

请求头里,换成自己的 apikey

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/93eeb958-17db-45a2-b24f-d5e1b44eb5b7.png "image.png")

点击执行,就可以尽情的向他提问了。
比如问它怎么移植应用,

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/e4d18c34-701d-49e5-98aa-fae293488465.png "image.png")

上面的 json 文件我放在这里了,抄作业的同学可以参考:

```
{
  "name": "知识库",
  "nodes": [
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.3,
      "position": [
        -256,
        0
      ],
      "id": "1ed033dc-26cf-41dc-82a1-589b62687b76",
      "name": "When chat message received",
      "webhookId": "c484e9fb-0be4-42dd-bd2b-f9ca059840c0"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=先优先查看文档,尽量用文档的东西回答问题,问题:{{ $json.chatInput }}",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.2,
      "position": [
        -48,
        -16
      ],
      "id": "a0ea8a64-3f7d-4b6b-901b-d6e14ae85f49",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
      "typeVersion": 1,
      "position": [
        -48,
        160
      ],
      "id": "c40685f3-fbbd-46fd-9565-ccaf3f85e0fe",
      "name": "DeepSeek Chat Model",
      "credentials": {
        "deepSeekApi": {
          "id": "vfn66fhHzd6mF6j1",
          "name": "DeepSeek account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.dify.ai/v1/datasets/这里写你的知识库id/retrieve",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer 这里写你的知识库api key"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"query\": \" {{ $json.chatInput }}  \",\n  \"retrieval_model\": {\n    \"search_method\": \"hybrid_search\",\n    \"top_k\": 5,\n    \"score_threshold_enabled\": false,\n    \"reranking_enable\": false\n  }\n}\n",
        "options": {
          "redirect": {
            "redirect": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        112,
        192
      ],
      "id": "ac7cff2a-0b70-4e37-9ea1-21ff0d9109b7",
      "name": "HTTP Request"
    }
  ],
  "pinData": {},
  "connections": {
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DeepSeek Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "fcca2fde-d07b-41fc-9ec3-d54e42f774d7",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "ff06cd56528164550e83a0b0bc9f32963f8355543707a1ed77847e72afe71d53"
  },
  "id": "zL5dlqy4K6nBeBsx",
  "tags": []
}
```
 

评论

1
u47407990204天前

按照以上方式部署之后,AI agent好像并没有正确的调用知识库回答问题,是哪里配置的问题吗?

说点什么呢~
收藏
0
1
0