Dify通过Firecrawl获取网页内容并生成知识库

准备工作

Dify中Firecrawl插件设置

安装Firecrawl

Firecrawl的API Key 授权配置

  • 路径:设置 - 数据来源 - Firecrawl设置
  • Firecrawl服务器的API URL(本地部署):http://host.docker.internal:3002
  • Firecrawl API 密钥:(你本地部署时设置的值)
  • 完成后点击保存,Firecrawl应该处于connected状态

内容爬取

  • 创建知识库,数据来源选择同步自WEB站点
  • 工具选择“Firecrawl”
  • 输入要获取的站点URL,这里为了演示输入的是dify官方文档 (https://legacy-docs.dify.ai/zh-hans/guides/workflow/node)
  • 设置最大深度和限制数量
  • 获取完成后点击下一步

知识库设置

  • Embedding 模型
    • 这里我选择的是硅基流动提供的免费模型
  • 索引方式
    • 高质量
  • 检索设置
    • 向量检索:基于语义理解的智能搜索
      向量检索通过嵌入模型(Embedding Model)将文本(如用户查询和知识库文档)转换为高维向量(即一组数字),并计算这些向量之间的相似度(如余弦相似度)来找到语义上最匹配的内容。例如,当用户查询“苹果的营养价值”时,即使知识库中的文档使用的是“苹果的营养成分”这类措辞,向量检索也能因理解两者的语义关联而准确召回相关内容。其优势在于能深度理解自然语言,处理同义词、复杂语义或模糊查询,但需要较多的计算资源,且效果依赖于嵌入模型的质量。它特别适用于需要深层语义理解的场景,如科研文献检索、法律条文查询或智能问答。
    • 全文检索:基于关键词匹配的精准搜索
      全文检索直接依赖关键词匹配,通过倒排索引快速定位包含用户查询中特定词汇的文本片段。例如,搜索“Python3.9”时,它能精准返回包含该确切术语的文档,但无法理解“Python编程语言”等语义关联性表达。这种方式检索速度快、实现简单,但对自然语言的语义理解能力弱,可能因一词多义或同义词问题导致召回结果不准确或遗漏信息。全文检索适用于关键词明确、需要快速定位的场景,如新闻检索、商品搜索或日志分析。
    • 混合检索:结合语义与关键词的优化方案
      混合检索同时执行向量检索和全文检索,并对两者的初步结果进行整合与重排序,以兼顾语义相关性和关键词匹配精度。Dify推荐使用该方式,因其能通过权重设置(调整语义和关键词检索的贡献比例)或重排序模型(Rerank)进一步优化结果。例如,在处理“智能手表的健康功能”这类复杂查询时,向量检索捕捉“健康监测”的语义,全文检索匹配“智能手表”关键词,混合检索则能综合筛选最相关答案。虽然配置和管理相对复杂,但它在准确性和召回率上通常优于单一模式,尤其适用于企业知识库、智能客服等复杂业务场景。
检索方式核心原理优势局限性典型场景
向量检索文本向量化后计算语义相似度语义理解强,处理模糊查询计算资源消耗大,依赖模型质量智能问答、学术研究
全文检索关键词匹配与倒排索引速度快,适合精确术语查找无法理解语义,易受词汇差异影响新闻搜索、商品检索
混合检索结合两者并重排序结果准确性与召回率高,适应复杂需求配置复杂,需维护多种索引企业知识管理、专业咨询
  • dify 知识库中的Top K 和 Score阈值
    • Top K 参数的含义与设置
      • Top K 定义了检索系统返回的与用户查询最相关的文本片段(chunks)的最大数量。例如,设置Top K=5时,系统会返回相似度得分最高的5个文本块。其作用包括:
      • 控制结果数量:较小的Top K值(如3)会使检索结果更精准,适合问答或资源有限的场景;较大的Top K值(如10)能召回更多内容,适合调研或模糊查询,但可能引入噪声。
      • 默认值:Dify中Top K的默认值通常为3。
      • 设置位置:在知识库的“检索设置”界面中直接输入数值即可配置。
    • Score 阈值的含义与设置
      • Score阈值(相似度阈值)规定了文本片段被召回所需的最低相似度分数,范围在0到1之间,分数越高表示与查询的语义相关性越强。例如,阈值设为0.7时,仅保留相似度得分≥0.7的片段。其作用包括:
      • 过滤低质量结果:较高的Score阈值(如0.8)提升结果相关性,但可能导致遗漏信息;较低的阈值(如0.5)召回更全面,但可能包含不相关内容。
      • 默认值:默认通常为0.5或关闭状态。
      • 设置位置:在“检索设置”界面中输入阈值数值。
    • 参数设置操作步骤
      • 进入检索设置:在知识库详情页,点击“检索设置”或类似选项。
      • 修改参数值
        • 在“Top K”字段输入期望返回的最大片段数(如5)。
        • 在“Score阈值”字段输入最小相似度分数(如0.6)。
      • 保存并测试:保存设置后,使用“召回测试”功能输入样例问题,观察返回片段的相关性和数量,迭代调整参数。
    • 调优策略与场景建议
      • 高Top K + 低Score阈值(如Top K=10, Score=0.5):适用于信息探索类场景(如市场调研),旨在广泛召回内容,再通过后续处理(如重排序)提炼结果。
      • 低Top K + 高Score阈值(如Top K=3, Score=0.8):适合精准问答或资源受限场景(如客服系统),确保结果高度相关,减少大模型处理负担。
      • 分阶段调优:先固定Top K(如50),调整Score阈值至满意准确率;再逐步降低Top K以平衡计算成本。
      • 启用Rerank模型时:如果配置了重排序模型,Top K和Score阈值主要在Rerank阶段生效,此时可适当提高Top K(如20)让Rerank模型有更多候选进行精排。

  • 为知识库设置一个方区分的名称并等待所有URL状态为可用

通过Chatflow使用知识库

工作流示例

示例下载:https://pan.baidu.com/s/14-YeB8eNF4nmU3MGs-ekXA?pwd=4pyw 提取码: 4pyw

开始节点

  • 开始节点保持默认

知识检索

  • 查询变量来自开始节点的用户输入
  • 知识库选择dify节点说明
  • (可选)设置知识库的Top K和Score阈值

大语言模型节点

  • 模型选择CHAT(我使用deepseek-chat)
  • 上下文检索设置为知识检索的输出变量
  • 系统提示词
根据下面的提示词结果回答用户的问题
{{#sys.query#}}
---
{{#context#}}

直接回复

  • 获取上一步LLM的输出变量

功能测试

  • 提问“告诉我dify中变量聚合的使用场景”