04-知识库管理
第四章:知识库管理
4.1 知识库概述
4.1.1 什么是知识库
知识库(Knowledge Base)是 Dify 平台中用于存储和管理企业文档、数据的核心功能模块。它将 RAG(Retrieval-Augmented Generation,检索增强生成)管线上的各环节可视化,提供了一套简单易用的界面来管理知识内容。
通过知识库功能,你可以:
- 上传和管理各类文档
- 自动进行文档分段和向量化处理
- 配置灵活的检索策略
- 将知识集成到 AI 应用中
4.1.2 知识库的核心价值
解决 LLM 的知识局限性:
大语言模型虽然拥有广泛的知识,但存在以下局限:
- 时效性问题:训练数据有截止日期
- 专业性不足:缺少企业特定知识
- 幻觉问题:可能生成不准确的信息
知识库通过以下方式解决这些问题:
| 局限性 | 知识库解决方案 |
|---|---|
| 信息过时 | 实时更新知识库内容 |
| 缺少专业知识 | 上传企业内部文档 |
| 回答不准确 | 基于检索内容生成 |
| 无法溯源 | 提供引用来源 |
4.1.3 知识库的核心优势
实时性:
- 知识库内容可随时更新
- 无需重新训练模型
- 新信息立即生效
精准性:
- 基于实际文档生成回答
- 大幅减少幻觉现象
- 可追溯答案来源
灵活性:
- 自定义知识覆盖范围
- 支持多种文档格式
- 可对接外部知识库
4.1.4 知识库与文档的关系
在 Dify 中:
- 知识库(Knowledge):文档的集合,可整体集成到应用中
- 文档(Documents):知识库中的单个内容项
- 分段(Chunks):文档被切分后的内容片段
知识库
├── 文档 A
│ ├── 分段 1
│ ├── 分段 2
│ └── 分段 3
├── 文档 B
│ ├── 分段 1
│ └── 分段 2
└── 文档 C
└── 分段 1
4.2 创建知识库
4.2.1 进入知识库管理
- 登录 Dify 控制台
- 点击左侧导航栏的"知识库"
- 查看已有知识库或创建新知识库
4.2.2 创建新知识库
步骤一:点击创建按钮
点击"创建知识库"按钮,进入创建流程。
步骤二:填写基本信息
知识库名称: 产品帮助文档
知识库描述: 包含产品功能说明、使用指南、常见问题等内容
步骤三:选择数据源类型
Dify 支持多种数据源:
| 数据源类型 | 说明 | 适用场景 |
|---|---|---|
| 本地文件上传 | 上传本地文档 | 内部文档、手册 |
| 网页爬取 | 抓取网页内容 | 在线文档、新闻 |
| Notion 同步 | 同步 Notion 内容 | 团队知识库 |
| GitHub 仓库 | 同步 GitHub 内容 | 代码文档 |
4.2.3 支持的文件格式
文本文档:
- TXT:纯文本文件
- Markdown(.md):结构化文本
- DOCX:Word 文档
- HTML:网页文件
数据文件:
- CSV:逗号分隔值
- Excel(.xlsx, .xls):电子表格
- JSON:结构化数据
富文本:
- PDF:适合报告、手册
- EPUB:电子书格式
文件大小限制:
- 单个文件:最大 15 MB
- 建议将大文件拆分处理
4.3 文档上传与处理
4.3.1 上传本地文件
上传步骤:
- 选择"本地文件上传"
- 拖拽文件或点击选择
- 支持批量上传多个文件
- 等待上传完成
批量上传技巧:
- 相关文档放在同一个知识库
- 使用清晰的文件命名
- 提前检查文件格式兼容性
4.3.2 网页爬取
配置网页爬取:
网页 URL: https://docs.example.com
爬取深度: 2 # 从起始页面爬取的层级深度
爬取模式:
- sitemap: 根据 sitemap 爬取
- single: 只爬取单个页面
- recursive: 递归爬取所有链接
爬取注意事项:
- 确保目标网站允许爬取
- 设置合理的爬取深度
- 大型网站可能需要较长时间
4.3.3 Notion 同步
配置步骤:
- 在 Notion 中创建集成(Integration)
- 获取 API Token
- 在 Dify 中配置 Notion 连接
- 选择要同步的页面或数据库
同步设置:
同步模式:
- 手动同步: 需要手动触发
- 自动同步: 定期自动更新
同步频率: 每天 / 每周 / 每月
4.3.4 文档处理流程
上传的文档会经过以下处理流程:
原始文档
↓
文本提取(解析文档内容)
↓
文本清洗(去除噪音)
↓
分段处理(切分文本块)
↓
向量化(生成 Embedding)
↓
索引存储(保存到向量数据库)
4.4 分段策略配置
4.4.1 分段的重要性
分段(Chunking)是知识库处理的关键步骤:
- 将长文档切分为适当大小的片段
- 每个片段包含相对完整的信息
- 便于精确检索和引用
分段策略直接影响:
- 检索的准确性
- 回答的相关性
- Token 消耗效率
4.4.2 分段方式
自动分段:
系统根据文档结构自动识别分段边界:
- 按段落分段
- 按标题层级分段
- 按固定长度分段
自定义分段:
手动指定分段规则:
分段长度: 500 # 每个分段的最大字符数
分段重叠: 50 # 相邻分段的重叠字符数
分段标识符: # 分段的分隔符
- "\n\n" # 双换行
- "##" # Markdown 标题
- "---" # 分隔线
4.4.3 分段参数配置
最大分段长度(Chunk Size):
- 推荐范围:300-1000 字符
- 太短:上下文信息不完整
- 太长:检索精度下降,Token 消耗增加
分段重叠(Chunk Overlap):
- 推荐值:分段长度的 10-20%
- 作用:保持相邻分段的上下文连贯性
分段策略建议:
| 内容类型 | 分段长度 | 重叠长度 |
|---|---|---|
| 技术文档 | 500-800 | 50-100 |
| 问答 FAQ | 200-400 | 20-50 |
| 长篇文章 | 800-1000 | 100-150 |
| 代码文档 | 300-500 | 30-50 |
4.4.4 QA 分段模式
对于 FAQ 类文档,可以使用 QA 分段模式:
问题: 如何创建知识库?
答案: 在 Dify 控制台点击"知识库",然后点击"创建知识库"按钮...
QA 模式优势:
- 问答配对存储
- 检索更精准
- 特别适合 FAQ 场景
4.5 索引与向量化
4.5.1 索引方式
Dify 支持多种索引方式:
高质量索引(推荐):
- 使用 Embedding 模型进行向量化
- 支持语义检索
- 检索效果最好
经济索引:
- 使用关键词索引
- 成本较低
- 适合简单场景
4.5.2 Embedding 模型选择
OpenAI Embedding:
模型: text-embedding-3-small
维度: 1536
特点: 效果好,需要 API 调用
开源 Embedding:
模型: bge-large-zh
维度: 1024
特点: 可本地部署,中文效果好
模型对比:
| 模型 | 维度 | 效果 | 成本 |
|---|---|---|---|
| text-embedding-3-large | 3072 | 最佳 | 高 |
| text-embedding-3-small | 1536 | 优秀 | 中 |
| text-embedding-ada-002 | 1536 | 良好 | 中 |
| bge-large-zh | 1024 | 中文优秀 | 低(本地) |
4.5.3 向量数据库
Dify 支持多种向量数据库:
Weaviate(默认):
- 功能全面
- 支持混合检索
- 社区活跃
Qdrant:
- 性能优秀
- 支持多种语言
- 易于扩展
Milvus:
- 分布式架构
- 超大规模数据
- 企业级特性
Chroma:
- 轻量级
- 易于上手
- 适合开发测试
4.6 检索策略配置
4.6.1 检索模式
向量检索:
- 基于语义相似度
- 理解同义词和近义词
- 推荐首选
全文检索:
- 基于关键词匹配
- 精确匹配效果好
- 适合专业术语
混合检索:
- 结合向量和全文检索
- 综合两种方式的优势
- 效果最佳
4.6.2 检索参数配置
Top K:
- 返回最相关的 K 个分段
- 推荐值:3-10
- 值越大,上下文越丰富,但 Token 消耗也越多
Score 阈值:
- 相似度得分门槛
- 推荐值:0.5-0.7
- 过滤掉相关性低的结果
配置示例:
检索模式: 混合检索
Top K: 5
Score 阈值: 0.6
重排序: 启用
重排序模型: cohere-rerank
4.6.3 重排序(Rerank)
重排序是提升检索质量的关键技术:
工作原理:
- 初次检索返回候选结果
- 使用 Rerank 模型重新评估
- 按相关性重新排序
- 返回最终结果
Rerank 模型:
- Cohere Rerank
- Jina Reranker
- BGE Reranker
效果提升:
- 显著提高检索准确率
- 减少无关内容干扰
- 推荐在生产环境启用
4.6.4 检索测试
在发布应用前,务必进行检索测试:
测试步骤:
- 进入知识库详情页
- 点击"检索测试"
- 输入测试问题
- 查看返回的分段
- 验证相关性
测试用例设计:
- 直接匹配: 问题与文档内容完全对应
- 同义表达: 使用不同说法表达同一意思
- 模糊查询: 只包含部分关键词
- 复杂问题: 需要综合多个分段回答
4.7 知识库集成应用
4.7.1 在聊天助手中集成
配置步骤:
- 打开聊天助手应用
- 进入"上下文"配置
- 点击"添加"选择知识库
- 配置检索参数
提示词配置:
基于以下知识库内容回答用户问题:
{{context}}
回答要求:
1. 仅基于提供的知识回答
2. 如果知识库中没有相关信息,请明确告知
3. 回答时注明信息来源
4.7.2 在工作流中集成
使用"知识检索"节点:
节点配置:
节点名称: 检索产品文档
知识库: 产品帮助文档
查询变量: {{user_question}}
检索参数:
Top K: 5
Score 阈值: 0.6
输出变量: retrieved_docs
4.7.3 引用与溯源
启用引用功能后,回答会包含来源信息:
配置方法:
在应用设置中开启"显示引用来源"
效果展示:
回答内容...
引用来源:
[1] 产品使用手册.pdf - 第3章
[2] FAQ文档.md - 常见问题
4.8 知识库维护
4.8.1 文档管理
文档操作:
- 添加:上传新文档
- 删除:移除不需要的文档
- 更新:重新上传更新版本
- 禁用:临时停用某文档
批量操作:
- 选中多个文档
- 批量删除/禁用
- 批量重新索引
4.8.2 分段管理
分段操作:
- 查看分段内容
- 编辑分段文本
- 删除问题分段
- 手动添加分段
分段优化:
- 合并过短的分段
- 拆分过长的分段
- 修正分段边界
4.8.3 增量更新
对于需要持续更新的知识库:
更新策略:
更新方式:
- 追加: 添加新内容,保留旧内容
- 替换: 删除旧内容,添加新内容
- 合并: 智能合并新旧内容
自动同步:
- 配置定时同步任务
- 监控数据源变化
- 自动触发更新
4.8.4 质量监控
监控指标:
- 检索命中率
- 回答准确率
- 用户反馈
优化方向:
- 补充缺失的知识
- 优化分段策略
- 调整检索参数
4.9 连接外部知识库
4.9.1 外部知识库介绍
如果你的团队已有独立知识库系统,可以直接连接而无需重新上传:
支持的连接方式:
- API 对接
- 数据库直连
- 向量数据库连接
4.9.2 配置外部连接
API 方式:
外部知识库 URL: https://your-kb-api.com/search
认证方式: Bearer Token
Token: your-api-token
请求格式: POST JSON
响应格式要求:
{
"results": [
{
"content": "文档内容",
"score": 0.95,
"source": "文档名称"
}
]
}
4.9.3 混合使用
可以同时使用内部知识库和外部知识库:
知识库配置:
- 类型: 内部
名称: 产品文档
权重: 0.6
- 类型: 外部
名称: 企业Wiki
权重: 0.4
4.10 最佳实践
4.10.1 知识库规划
规划建议:
- 按主题或用途分类创建知识库
- 每个知识库保持内容相关性
- 避免内容重复或冲突
知识库分类示例:
├── 产品知识库
│ ├── 功能说明
│ ├── 使用手册
│ └── FAQ
├── 技术知识库
│ ├── API 文档
│ ├── 开发指南
│ └── 故障排查
└── 业务知识库
├── 行业报告
├── 案例分析
└── 政策法规
4.10.2 文档准备
文档质量:
- 内容准确、及时
- 结构清晰、规范
- 使用标准格式
预处理建议:
- 清理格式问题
- 去除无关内容
- 补充必要的上下文
4.10.3 检索优化
优化策略:
- 选择合适的分段大小
- 启用重排序功能
- 定期测试检索效果
- 根据反馈持续优化
4.11 本章小结
通过本章的学习,你应该掌握:
- 知识库概念:理解知识库在 RAG 架构中的作用
- 创建知识库:掌握知识库的创建流程
- 文档处理:了解文档上传、分段、索引的过程
- 检索配置:熟练配置检索策略和参数
- 应用集成:将知识库集成到 AI 应用中
- 维护管理:掌握知识库的日常维护方法
4.12 思考与练习
-
实践练习:
- 创建一个产品 FAQ 知识库
- 测试不同分段策略的效果
- 将知识库集成到聊天助手中
-
思考题:
- 如何设计知识库的分类结构?
- 什么情况下应该启用重排序?
- 如何评估知识库的质量?
-
扩展学习:
- 研究 RAG 技术的原理
- 了解不同向量数据库的特点
- 探索知识图谱的应用
下一章预告:第五章将深入介绍工作流编排,包括工作流的核心概念、节点类型和实战案例。

浙公网安备 33010602011771号