
Dify从入门到高阶系列二:手把手教学!超详细的Dify知识库配置全攻略 原创
Dify作为一款先进的AI应用开发平台,其检索增强生成(RAG)功能为知识管理提供了强大支持。本指南将详细介绍如何利用该平台搭建高效知识库系统。在模型选择方面,虽然本示例采用OpenAI的接口,但平台同样兼容各类本地化模型部署方案,如Ollama框架等。
前置知识
数据采集阶段
- 支持多格式文档上传接口
- 智能文档解析与内容提取
内容结构化处理
- 自适应文本分块算法
- 向量空间映射转换
- 高维索引存储方案
查询响应机制
- 语义向量实时计算
- 多维度相似性检索
- 上下文感知结果合成
知识库设置
知识库初始化
文本分块策略
dify平台提供可视化分块调试工具,支持实时参数调整与效果预览。推荐初次使用者采用父子分块方案。
通用分段
1,采用\n\n
作为分割段落的默认标记。
2,每个区块在长度上的上限被设置为4000 tokens,但一般来说,默认长度是500 tokens。
3,预设的重叠长度为50 tokens。这是为了在分割过程中保证不同区块间有一定的共享部分。我们建议将其设为总 token 数量的 10-25%,以获得最佳效果。
4,预处理文本的规则:这包括清除多余的符号、网络链接等可能的干扰因素,以净化原始文本数据。
通用分段有个选项,可以使用Q&A分段,开启之后会使用LLM对每段chunk生成Q&A 对。
父子分段
父子模式的设计采取了双层分段结构,这是为了在提高检索的精确度的同时保留丰富的上下文信息,实现对精准匹配与深度上下文理解的有序平衡。
- 父区块(Parent-chunk)选取较大的文本单位,如整个段落,以此来储存丰富并连续的上下文内容。默认以
\n\n
作为段落标识,如果知识篇幅不长,可以将全文设定为父区块(但注意,超过1万个分段的内容会被自动剪短)。 - 子区块(Child-chunk)则以更小的文本单位(例如单独的句子)进行处理,方便进行精细化的检索。我们默认使用
\n
作为子区块的分段标识。 - 用户还可选择开启噪声清理功能。
- 在实际搜索过程中,系统首先通过子区块进行精确检索,随后再获取相应的父区块以补全上下文信息,这样可以为LLM提供更为丰富的上下文背景。
这里我使用的是父子分段模式
索引模式
索引模式有两种。分别是高质量索引和经济索引
高质量索引
- 适用场景:需要高精度语义检索(如复杂问答、多语言支持)。
- 实现方式:依赖嵌入模型生成向量索引
经济索引
- 适用场景:适合在预算紧张或者内容简洁(例如主要依赖于关键词匹配的FAQ)的环境下使用。
- 实现:采取离线向量引擎或者关键词索引策略,无需消耗额外的 Token,但是语义理解可能相对较弱。
- 建议:可以通过调节
TopK
(返回的相似文本段落数量)以及Score 阈值
(过滤掉一定相似度以下的片段)来权衡召回率和准确率之间的关系。
检索模式
在高质量索引方式下,Dify 提供了三种方案:
- 向量检索,通过生成查询嵌入并查询与其向量表示最相似的文本分段。
- 全文检索,索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段。
- 混合检索,同时执行全文检索和向量检索,并附加重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型API。
Dify 官方是推荐混合检索模式,尤其在 Rerank 模型之后,系统会在混合检索后对已召回的文档结果再一次进行语义重排序,优化排序结果。
聊天机器人
点击工作室,我们可以看到有很多丰富的应用,包括聊天助手、agent、工作流等。我们选择最简单的应用:聊天助手。
添加知识库和召回设置
我们可以添加多个知识库,并对知识库设置对应的召回策略。
调试&发布
总结
这里详细介绍了如何利用 Dify 搭建知识库系统,后续会分享关于更多dify的原理和企业化定制开发的功能,欢迎点赞关注获取实时更新。
本文转载自公众号AI 博物院 作者:longyunfeigu
原文链接:https://mp.weixin.qq.com/s/moUd5ypzOCyXVhnXHEbtHw
