Learn
Dify/04-knowledge-base

知识库构建

知识库(Knowledge) 让大模型「读懂」你自己的资料——产品手册、规章制度、内部 Wiki。Dify 通过 RAG(检索增强生成) 实现:先把文档切片、向量化,问答时检索最相关的片段喂给模型。本章聚焦「怎么把文档变成高质量知识」。

1. 创建知识库与导入

进入「知识库 → 创建知识库」,导入数据源支持:

  • 本地文件:PDF、Word、Markdown、TXT、Excel、CSV 等
  • 在线数据:Notion、网页(Web 爬虫)
  • 批量导入与同步(企业版支持定时同步)

导入后 Dify 会自动进入「分段与清洗」步骤。

💡先小后大

第一次建议先用一个 10–20 页的文档试跑,确认切片与检索效果后再批量导入,避免在大量文档上反复返工。

2. 分段(Chunking)策略

大模型有上下文长度限制,文档必须切成**片段(chunk)**再向量化。两种常用模式:

模式说明适用
自动分段与清洗平台按通用规则切分并去噪大多数通用文档
自定义分段指定分隔符、最大长度、重叠结构规整(如按标题/段落)的文档
原文 10000 字
  → 自动切分为若干 chunk,每段建议 500–1000 字
  → 相邻 chunk 可设 10–20% 重叠,避免语义断裂
⚠️片段不是越细越好

切得太碎,单个片段语义不完整,检索命中后模型拿到的是「半句话」;切得太长,又容易超出召回精度、混入无关内容。通常 500–1000 字 + 适度重叠是稳妥起点,再按效果微调。

3. 清洗规则

导入时可开启清洗,提升检索质量:

  • 去除多余空白、换行
  • 过滤页眉页脚、页码
  • 去除不可见字符、重复行
  • Markdown 自动规整

4. 索引方式与嵌入模型

Dify 需对每个片段生成向量,依赖嵌入模型(Embedding):

# 在「设置 → 模型供应商」中接入 embedding 模型,例如:
# OpenAI: text-embedding-3-small
# 本地:   bge-large-zh (通过 Ollama / vLLM)

索引类型(在知识库设置中可见):

  • 高质量(向量检索):用 embedding 模型,语义检索更强(推荐)
  • 经济(关键词/全文):不依赖 embedding,成本低但语义弱
ℹ️中文优先选中文 embedding

做中文知识库时,优先选在中文语料上训练过的 embedding 模型(如 bge、m3e 系列),检索召回率显著高于通用英文模型。

5. 增量更新与维护

  • 文档有改动 → 重新上传同名文件可触发增量更新
  • 可在知识库列表查看每个文档的片段数、状态、最近更新时间
  • 删除某文档只影响该知识库,不影响其他关联应用
🎯动手做

导入一份你熟悉的文档(如一份产品说明),分别用「自动分段」和「自定义(按标题切分,最大 800 字)」两种方式,各建一个知识库,留着第 5 章对比检索效果。

小结

  • 知识库 = 文档经切片、清洗、向量化后供 RAG 检索
  • 分段粒度与重叠直接影响召回质量,建议 500–1000 字起步
  • 清洗去噪、中文优先中文 embedding 模型
  • 支持增量更新;下一步配置检索参数 →