Skip to content

知识库与工作流编排

学习目标:掌握知识库的搭建方法(文档上传、分块策略、检索方式),能用工作流实现"检索 → 处理 → 输出"的多步骤 Agent

预计时间:35 分钟

难度等级:⭐⭐⭐☆☆


一、为什么知识库是 Agent 的第二大脑

先说结论:没有知识库的 Agent,和 ChatGPT 没区别。

ChatGPT 之所以"什么都懂一点",是因为它训练时"读过"大量通用数据。但你让它回答你们公司的产品细节、你们团队的内部规范——它只能瞎编。

知识库解决的就是这个问题:让 Agent 知道它原本不知道的事。

维度没有知识库有知识库
知识来源模型训练数据(通用)你的文档(专业)
回答准确性大致正确,细节可能错基于真实文档,准确性高
可控性不知道它在说什么能追溯答案来自哪个文档
更新需要重新训练模型上传新文档即可

二、上传文档构建知识库

2.1 支持的数据源

数据源Coze 支持Dify 支持适合场景
PDF 文件产品手册、研究报告
Word/TXT公司制度、操作手册
Excel/CSV产品数据、价格表
网页 URL在线文档、博客文章
Notion团队知识库
飞书文档飞书生态团队
数据库✅(MySQL)✅(多种)结构化数据查询
API有限动态数据

2.2 Coze 知识库搭建实操

步骤

  1. 进入 Coze 工作空间 → 左侧菜单点击"知识库"
  2. 点击"创建知识库"
  3. 选择数据源类型(比如"文件")
  4. 上传文件或输入 URL
  5. 配置分块策略(下一节详细讲)
  6. 等待处理完成(1-5 分钟)
  7. 在 Bot 配置页面关联这个知识库

文件准备建议

  • 一个知识库的主题要聚焦。别把"公司制度"和"产品手册"塞同一个知识库。
  • PDF 尽量用文字版(可以选中复制文字的),扫描件效果差。
  • 单个文件控制在 20MB 以内,超过就拆分。

2.3 Dify 知识库搭建实操

步骤

  1. 左侧菜单点击"知识库" → "创建知识库"
  2. 上传文件或选择数据源
  3. Dify 会多一步:让你选择索引方式
    • 高质量模式:使用 Embedding 模型向量化,检索效果好,消耗 Token
    • 经济模式:使用关键词索引,检索效果一般,但不消耗 Token
  4. 配置分块策略
  5. 等待处理完成
  6. 在工作流中添加"知识检索"节点,关联这个知识库

Dify 索引方式选择

99% 的场景选"高质量模式"。经济模式只适合对成本极其敏感且对检索质量要求不高的场景。


三、分块策略

3.1 为什么要分块?

LLM 有上下文长度限制。你不能把一整个 200 页的 PDF 塞给模型,所以要切成小块。

但分块不是简单地"按字数切"——切得太大会稀释信息,切得太小会丢失上下文。

3.2 分块方式对比

分块方式原理优点缺点适合场景
自动分块平台自动按段落和语义切省事可能切在不合适的位置大多数场景
按字数分块固定每块 N 个字可控可能在句子中间断开格式统一的文档
按段落分块按换行符/标题切保持语义完整块大小不均匀结构清晰的文档
按分隔符分块按自定义标记切最灵活需要文档有统一格式你能控制的文档格式
父子分块检索用小块,回答用大块检索精准+上下文完整配置复杂高质量要求的场景

3.3 分块大小建议

文档类型推荐块大小理由
FAQ / 问答对200-300 字每条就是一个完整的问答
产品手册500-800 字一个产品特性完整描述
长篇报告800-1200 字保留足够的上下文
代码文档300-500 字函数级别

实操建议

先用自动分块试试效果。如果发现检索结果不对,再手动调整。不要一开始就纠结分块策略。


四、检索方式

4.1 三种检索方式

检索方式原理优点缺点
向量检索把文本变成向量,算相似度理解语义,"苹果手机"能匹配"iPhone"可能遗漏精确关键词
全文检索传统关键词匹配精确匹配关键词不理解同义词
混合检索向量 + 全文结合兼顾语义和精确计算量更大

4.2 怎么选?

你的场景?

├─ 用户提问方式多样(同义词多)→ 向量检索
├─ 需要精确匹配(比如产品编号、型号)→ 全文检索
├─ 都想要 → 混合检索
└─ 不确定 → 先用混合检索,效果通常最好

4.3 检索参数调优

参数作用建议值
Top K返回最相关的 K 个文档块3-5(太多了 LLM 会困惑)
Score 阈值相关性低于这个值的不要0.5-0.7(太低会返回不相关内容)
重排序(Rerank)对检索结果二次排序开启(Dify 支持,效果提升明显)

五、多步工作流设计模式

工作流不是随意连几个节点。好的工作流有清晰的设计模式。

5.1 标准模式:输入 → 检索 → 处理 → 输出

这是最常用的模式,适合 90% 的知识库问答场景:

用户输入

意图理解(LLM 节点)

知识库检索(知识检索节点)

答案生成(LLM 节点)

输出回答

在 Coze 中的实现

  1. 在 Bot 中开启"工作流"模式
  2. 创建一个工作流:输入节点 → 知识库检索节点 → LLM 总结节点 → 输出节点
  3. 配置每个节点的变量传递

在 Dify 中的实现

  1. 创建"聊天助手"或"工作流"应用
  2. 添加"知识检索"节点,关联知识库
  3. 添加"LLM"节点,将检索结果作为上下文传入
  4. 配置 System Prompt,要求基于检索结果回答

5.2 多路检索模式

当一个问题可能涉及多个知识库时:

用户输入

意图分类(LLM)

┌──────────┬──────────┐
│ 产品知识库 │ 售后知识库 │
└──────────┴──────────┘
   ↓           ↓
  结果1       结果2
   ↓           ↓
   └─────┬─────┘

    LLM 合并回答

      输出

5.3 带兜底的模式

当知识库可能没有答案时,加一个"兜底"处理:

用户输入

知识库检索

相关性检查(条件分支)
   ├── 相关性够高 → LLM 基于知识库回答
   └── 相关性不够 → LLM 用通用知识回答 + 提示"此回答不来自知识库"

花叔的建议

永远加兜底。 不加兜底的工作流,遇到知识库里没的内容就会翻车——要么编造答案,要么报错。好的 Agent 应该能优雅地说"我不知道"。


六、工作流调优技巧

6.1 五个常见问题与解法

问题原因解法
回答和知识库内容不符检索到了不相关的块提高相关性阈值,减少 Top K
回答太短/太笼统Prompt 没要求详细回答在 LLM 节点的 Prompt 里加"请详细回答,至少 200 字"
回答包含了多个文档的混搭Top K 设太大减少到 3,加 Rerank
每次回答不一致Temperature 太高调到 0.1-0.3
响应太慢节点太多或模型太慢用更快的模型(如 GPT-4o-mini),减少节点

6.2 调优流程

1. 用 10 个测试问题跑一遍
2. 记录每个问题的回答质量(好/一般/差)
3. 针对回答"差"的问题:
   a. 检查检索结果是否相关 → 不相关就调分块/检索参数
   b. 检索结果相关但回答差 → 调 Prompt
4. 重复 1-3,直到 80% 以上的测试问题回答满意

别追求 100% 完美。 知识库问答达到 80-85% 的准确率就算不错了。剩下的 15-20% 通过 Prompt 优化和兜底逻辑来兜住。


七、本节小结

回顾要点

✅ 知识库是 Agent 的"第二大脑"——没有它,Agent 和通用聊天机器人没区别

✅ 分块策略影响检索质量——先用自动分块,效果不好再手动调

✅ 三种检索方式:向量(语义)、全文(精确)、混合(都想要)——混合通常最好

✅ 标准工作流模式:输入 → 检索 → 处理 → 输出,加兜底

✅ 调优流程:10 个测试问题 → 定位问题 → 调参数/Prompt → 重复迭代


← 返回章节目录 | 继续学习:插件与工具调用 →

最近更新

基于 MIT LICENSE 许可发布