知识库构建
知识库(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 模型
- 支持增量更新;下一步配置检索参数 →