【Dify】:使用 RAGFlow + Firecrawl 增强知识库

2025博客之星年度评选已开启 10w+人浏览 1.2k人参与

【Dify】:使用 RAGFlow + Firecrawl 增强知识库

为什么要这样做?

Dify 的定位

Dify 擅长的:

  • 🎨 工作流编排:像搭积木一样组装 AI 流程
  • 🤖 模型管理:统一管理各种 AI 模型(GPT、Claude、国产大模型等)
  • 🔌 API 集成:快速对接各种外部服务

Dify 的局限:

  • 📚 知识库功能相对简单:内置的知识库更偏向通用型,对文档的解析和检索能力有限

最佳组合方案

把专业的事交给专业的工具:

  • 🧠 RAGFlow:专业的知识库管理工具,文档解析更深入、检索更精准
  • 🕷️ Firecrawl:专业的网页爬虫工具,智能提取网页内容
  • 🎯 Dify:作为总控制台,编排整个 AI 工作流

打个比方:

  • Dify = 项目经理(负责协调和管理)
  • RAGFlow = 图书馆管理员(专业管理文档知识)
  • Firecrawl = 信息收集员(专业收集网页内容)

准备工作

前提条件:

  1. ✅ 已经安装并运行了 Dify
  2. ✅ 已经安装并运行了 RAGFlow
  3. ✅ (可选)已经安装并运行了 Firecrawl

如果还没安装,请先查看:


第一部分:对接 RAGFlow

第一步:获取 RAGFlow 的 API Key

作用: API Key 就像是一把"钥匙",让 Dify 能访问 RAGFlow 的知识库。

操作步骤:

  1. 打开 RAGFlow 后台
  2. 进入设置或个人中心页面
  3. 找到并复制 API Key(保存好,后面要用)

第二步:在 Dify 中连接外部知识库

操作步骤:

  1. 打开 Dify 后台
  2. 进入"知识库"页面
  3. 点击"连接外部知识库"或类似按钮

第三步:创建外部知识库 API 连接

操作步骤:

  1. 点击"创建新的外部知识库 API"
  2. 填写配置信息(见下方说明)

配置说明:

API Endpoint(API 地址):

http://RAGFlow服务器地址/api/v1/dify

重要提示:

  • 如果 Dify 和 RAGFlow 在同一台服务器,使用内网 IP(如 http://127.0.0.1:端口号/api/v1/dify
  • 如果在不同服务器,使用 RAGFlow 的实际访问地址

API Key(API 密钥):
填写第一步获取的 API Key

配置示例:

第四步:设置外部知识库 ID

作用: 指定要使用 RAGFlow 中的哪个知识库。

操作步骤:

  1. 在 RAGFlow 中找到你的知识库 ID
  2. 在 Dify 中填写这个 ID


进阶技巧:下载 RAGFlow 知识库中的文件

使用场景: 如果你需要从 RAGFlow 中下载原始文件(比如备份或查看原文件)。

官方文档: https://ragflow.io/docs/dev/http_api_reference#download-document

下载文件的步骤

步骤 1:理解 API 地址格式
/api/v1/datasets/{dataset_id}/documents/{document_id}

参数说明:

  • dataset_id:知识库 ID(在上面第四步的截图中可以找到)
  • document_id:文档的真实 ID(需要通过查询获取)
步骤 2:获取文档的真实 ID

问题: 当你检索知识库时,返回的 document_id 其实是文档名称,不是真实的 ID。

检索返回的数据示例:

{
  "metadata": {
    "_source": "knowledge",
    "dataset_id": "80cb63be-20e1-4123-acb0-27331820c8",
    "dataset_name": "我的知识库",
    "document_id": "产品说明.docx",  // 这是文档名称,不是真实ID
    "document_name": "产品说明.docx",
    "data_source_type": "external",
    "retriever_from": "workflow",
    "score": 0.2406198464565076,
    "position": 8
  },
  "title": "产品说明.docx",
  "content": "文档内容..."
}

解决方法: 根据文档名称查询真实的文档 ID

curl --request GET \
  --url http://RAGFlow地址/api/v1/datasets/88be0f02bb811faebb0242ac50006/documents?name=产品说明.docx \
  --header 'Authorization: Bearer ragflow-你的API密钥'

查询结果示例:

步骤 3:使用真实 ID 下载文件

下载命令:

curl --request GET \
  --url http://RAGFlow地址/api/v1/datasets/知识库ID/documents/文档真实ID \
  --header 'Authorization: Bearer ragflow-你的API密钥' \
  --output ./产品说明.docx

完整示例:

curl --request GET \
  --url http://127.0.0.1:8012/api/v1/datasets/881be0f0bb811f0aebb02ac150006/documents/eaaff2a2ed811f0a900242ac15006 \
  --header 'Authorization: Bearer ragflow-M2ZWZhYRhMmJiZDEZjA5ZWYwMDI0Mm' \
  --output ./产品说明.docx

下载成功示例:

小提示:

  • 记得替换命令中的地址、ID 和 API 密钥
  • 文件会下载到当前目录

第二部分:对接 Firecrawl

什么是 Firecrawl?
Firecrawl 是一个智能网页爬虫工具,可以把网页内容转换成干净的 Markdown 格式,非常适合作为 AI 知识库的数据源。

使用场景:

  • 📰 定期抓取行业新闻、技术博客
  • 📖 批量抓取在线文档、教程
  • 🔍 监控竞品网站信息

官方文档: https://docs.firecrawl.dev/zh/introduction

第一步:在 Dify 中配置 Firecrawl

操作步骤:

  1. 打开 Dify 后台
  2. 进入"设置" → “数据来源”
  3. 找到 Firecrawl 配置项
  4. 填写 Firecrawl 的 API 地址和密钥

配置示例:

配置说明:

  • API 地址:如果是本地部署,填写 http://127.0.0.1:3002(或你设置的端口)
  • API Key:如果关闭了授权验证,可以留空;否则填写你的密钥

第二步:创建使用 Firecrawl 的知识库

操作步骤:

  1. 在 Dify 中创建新知识库
  2. 选择"从网页导入"或"Firecrawl"数据源
  3. 输入要爬取的网页地址
  4. 等待 Firecrawl 自动抓取和处理

示例:

使用建议:

  • ✅ 适合爬取文档类网站(如官方文档、教程)
  • ✅ 内容会自动转换成 Markdown,方便 AI 理解
  • ❌ 不要频繁爬取同一网站,避免给对方服务器压力
  • ❌ 遵守网站的 robots.txt 规则

总结

通过这篇教程,你已经学会了:

核心收获

  1. 理解三者的定位

    • Dify:工作流编排和模型管理
    • RAGFlow:专业知识库管理
    • Firecrawl:智能网页爬虫
  2. 对接 RAGFlow

    • 获取并配置 API Key
    • 在 Dify 中连接外部知识库
    • 设置知识库 ID
  3. 对接 Firecrawl

    • 配置 Firecrawl API
    • 使用 Firecrawl 创建知识库
  4. 进阶技巧

    • 下载 RAGFlow 中的原始文件

工作流程

网页内容 → Firecrawl(爬取清洗) → RAGFlow(深度解析存储) → Dify(智能检索和对话)

下一步建议

  1. 测试知识库

    • 在 RAGFlow 中上传一些测试文档
    • 在 Dify 中创建一个简单的对话应用
    • 测试知识库检索效果
  2. 优化配置

    • 根据文档类型调整 RAGFlow 的解析策略
    • 设置合适的检索参数(相似度阈值、返回数量等)
  3. 扩展应用

    • 尝试构建客服机器人
    • 创建文档问答助手
    • 制作内部知识库查询工具

常见问题

Q1: Dify 连接 RAGFlow 时报错怎么办?

  • 检查 API 地址是否正确
  • 确认 API Key 是否有效
  • 查看防火墙是否阻止了连接

Q2: Firecrawl 爬取失败怎么办?

  • 检查网站是否允许爬取(查看 robots.txt)
  • 确认 Firecrawl 服务是否正常运行
  • 尝试使用其他网站测试

Q3: 为什么不直接用 Dify 的内置知识库?

  • Dify 内置知识库适合简单场景
  • RAGFlow 对复杂文档的解析更深入
  • 根据实际需求选择合适的方案

祝你使用愉快!🎉

Dify使用 RAGFlow-v0.19.1 slim 版本配置知识库,可以通过以下步骤进行操作: ### 1. 环境准备 确保已经正确安装和配置了 DifyRAGFlow-v0.19.1 slim 版本。通常,RAGFlow 的 slim 版本适用于资源有限的环境,因此需要确保系统资源(如内存和存储)符合要求。可以通过以下命令检查 RAGFlow 的安装状态: ```bash pip show ragflow ``` 如果未安装,可以通过 pip 安装 slim 版本: ```bash pip install ragflow==0.19.1 --no-cache-dir ``` ### 2. 配置知识库Dify 中集成 RAGFlow 时,需要配置知识库以支持 RAGFlow 的数据处理能力。以下是配置知识库的关键步骤: #### 2.1 创建知识库目录 首先,创建一个用于存储知识库文件的目录,例如: ```bash mkdir -p /path/to/ragflow_kb ``` #### 2.2 配置 DifyRAGFlow 插件 在 Dify 的配置文件中启用 RAGFlow 插件,并指定知识库目录。例如,在 `config.yaml` 文件中添加以下内容: ```yaml ragflow: enabled: true version: "0.19.1" knowledge_base_path: "/path/to/ragflow_kb" model_size: "slim" ``` #### 2.3 配置 RAGFlow 数据处理管道 RAGFlow 支持多种数据源的处理,包括本地文件、数据库和云存储。可以通过以下方式配置数据处理管道: - **本地文件**:将文档文件(如 PDF、Word、TXT 等)放入知识库目录中。 - **数据库**:通过 RAGFlow 提供的 API 或 CLI 工具将数据库中的数据导入知识库。 - **云存储**:配置 RAGFlow 的云存储连接参数,例如 AWS S3 或 Azure Blob Storage。 ### 3. 启动 Dify 并加载知识库 完成配置后,启动 Dify 应用程序,并确保 RAGFlow 插件已正确加载。可以通过以下命令启动 Dify: ```bash dify start ``` 启动后,Dify 会自动加载 RAGFlow 插件并初始化知识库。可以通过 Dify 的管理界面或 API 检查知识库的状态。 ### 4. 使用知识库进行查询 在 Dify 的用户界面或 API 中,输入查询内容,RAGFlow 会从知识库中检索相关信息,并生成回答。例如,可以通过以下 API 请求进行查询: ```http POST /api/v1/ragflow/query Content-Type: application/json { "query": "如何配置 Dify 使用 RAGFlow 知识库?", "knowledge_base": "default_kb" } ``` ### 5. 监控与优化 定期监控 RAGFlowDify 的运行状态,确保知识库的更新和维护。可以通过以下方式优化性能: - **定期更新知识库**:定期将新文档或数据添加到知识库中。 - **调整模型参数**:根据实际需求调整 RAGFlow 的模型参数,以优化推理速度和准确性。 - **资源管理**:监控系统资源的使用情况,确保 RAGFlow-slim 版本在资源受限环境下正常运行。 ### 示例代码:RAGFlow 查询接口 以下是一个简单的 Python 示例,展示如何通过 Dify 的 API 调用 RAGFlow 进行知识库查询: ```python import requests url = "http://localhost:8080/api/v1/ragflow/query" headers = { "Content-Type": "application/json" } data = { "query": "如何配置 Dify 使用 RAGFlow 知识库?", "knowledge_base": "default_kb" } response = requests.post(url, headers=headers, json=data) print(response.json()) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

undsky_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值