微信扫码
添加专属顾问
我要投稿
非技术人员也能轻松管理知识库,快速集成AI应用,提升信息准确性和实时性。 核心内容: 1. 知识库功能与用户界面设计,简化知识管理流程 2. 实时更新知识库内容,确保LLM访问最新信息 3. 知识库与文档的集成方式,提高AI应用的准确性和效率
知识库功能将 RAG 管线上的各环节可视化,提供了一套简单易用的用户界面来方便应用构建者管理个人或者团队的知识库,并能够快速集成至 AI 应用中。
开发者可以将企业内部文档、FAQ、规范信息等内容上传至知识库进行结构化处理,供后续 LLM 查询。
相比于 AI 大模型内置的静态预训练数据,知识库中的内容能够实时更新,确保 LLM 可以访问到最新的信息,避免因信息过时或遗漏而产生的问题。
LLM 接收到用户的问题后,将首先基于关键词在知识库内检索内容。知识库将根据关键词,召回相关度排名较高的内容区块,向 LLM 提供关键上下文以辅助其生成更加精准的回答。
开发者可以通过此方式确保 LLM 不仅仅依赖于训练数据中的知识,还能够处理来自实时文档和数据库的动态数据,从而提高回答的准确性和相关性。
核心优势:
• 实时性:知识库中的数据可随时更新,确保模型获得最新的上下文。
• 精准性:通过检索相关文档,LLM 能够基于实际内容生成高质量的回答,减少幻觉现象。
• 灵活性:开发者可自定义知识库内容,根据实际需求调整知识的覆盖范围。
准备文本文件,例如:
将文件上传至“知识库”即可自动完成数据处理。
如果你的团队内部已建有独立知识库,可以通过连接外部知识库与 dify 建立连接。
可以通过“连接外部知识库”功能,建立与 Dify 平台的连接。
使用情景
例如你希望基于现有知识库和产品文档建立一个 AI 客服助手,可以在 Dify 中将文档上传至知识库,并建立一个对话型应用。如果使用传统方式,从文本训练到 AI 客服助手开发,可能需要花费数周的时间,且难以持续维护并进行有效迭代。在 Dify 内,仅需三分钟即可完成上述过程并开始获取用户反馈。
知识库与文档
在 Dify 中,知识库(Knowledge)是一系列文档(Documents)的集合,一个文档内可能包含多组内容分段(Chunks),知识库可以被整体集成至一个应用中作为检索上下文使用。文档可以由开发者或运营人员上传,或由其它数据源同步。
如果你已自建文档库,可以通过连接外部知识库功能将自有知识库与 Dify 平台相关联。无需重复将内容上传至 Dify 平台内的知识库即可让 AI 应用实时读取自建知识库中的内容。
创建知识库并上传文档大致分为以下步骤:
创建知识库。通过上传本地文件、导入在线数据或创建一个空的知识库。
指定分段模式。该阶段是内容的预处理与数据结构化过程,长文本将会被划分为多个内容分段。你可以在此环节预览文本的分段效果。
设定索引方法和检索设置。知识库在接收到用户查询问题后,按照预设的检索方式在已有的文档内查找相关内容,提取出高度相关的信息片段供语言模型生成高质量答案。
设定索引方法与检索设置
等待分段嵌入
完成上传,在应用内关联知识库并使用。你可以参考在应用内集成知识库,搭建出能够基于知识库进行问答的 LLM 应用。如需修改或管理知识库,请参考知识库管理与文档维护。
参考阅读
ETL
在 RAG 的生产级应用中,为了获得更好的数据召回效果,需要对多源数据进行预处理和清洗,即 ETL (extract, transform, load)。为了增强非结构化/半结构化数据的预处理能力,Dify 支持了可选的 ETL 方案:Dify ETL 和 Unstructured ETL 。Unstructured 能够高效地提取并转换你的数据为干净的数据用于后续的步骤。Dify 各版本的 ETL 方案选择:
SaaS 版不可选,默认使用 Unstructured ETL;
社区版可选,默认使用 Dify ETL ,可通过环境变量开启 Unstructured ETL;
文件解析支持格式的差异:
DIFY ETL:txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csvUnstructured ETL:txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv、eml、msg、pptx、ppt、xml、epub
不同的 ETL 方案在文件提取效果的方面也会存在差异,想了解更多关于 Unstructured ETL 的数据处理方式,请参考官方文档。
Embedding
Embedding 嵌入是一种将离散型变量(如单词、句子或者整个文档)转化为连续的向量表示的技术。它可以将高维数据(如单词、短语或图像)映射到低维空间,提供一种紧凑且有效的表示方式。这种表示不仅减少了数据的维度,还保留了重要的语义信息,使得后续的内容检索更加高效。
Embedding 模型是一种专门用于将文本向量化的大语言模型,它擅长将文本转换为密集的数值向量,有效捕捉语义信息。
如需了解更多,请参考:《Dify:Embedding 技术与 Dify 知识库设计/规划》。
元数据
如需使用元数据功能管理知识库,请参阅 元数据。
轻点 Dify 平台顶部导航中 “知识库” → “创建知识库”。你可以通过上传本地文件或导入在线数据两种方式上传文档至知识库内。
上传本地文件
拖拽或选中文件进行上传,支持批量上传,同时上传的文件数量限制取决于订阅计划。
本地上传文档文件存在以下限制:
单文档的上传大小限制为 15MB
不同 SaaS 版本的订阅计划限定了批量上传个数、文档上传总数、向量存储空间
导入在线数据
创建知识库时支持通过在线数据导入。知识库支持导入以下两种在线数据:
1.1 从 Notion 导入数据
1.2 从网页导入数据
引用在线数据的知识库后续无法新增本地文档,也无法变更为本地文件类型的知识库,以防止单一知识库存在多种数据来源而造成管理困难。
后续导入
如果还没有准备好文档或其它内容数据,可以先创建一个空知识库,在后续上传本地文档或导入在线数据。
将内容上传至知识库后,接下来需要对内容进行分段与数据清洗。该阶段是内容的预处理与数据结构化过程,长文本将会被划分为多个内容分段。
由于大语言模型的上下文窗口有限,无法一次性处理和传输整个知识库的内容,因此需要对文档中的长文本分段为内容块。即便部分大模型已支持上传完整的文档文件,但实验表明,检索效率依然弱于检索单个内容分段。
LLM 能否精准地回答出知识库中的内容,关键在于知识库对内容块的检索与召回效果。类似于在手册中查找关键章节即可快速得到答案,而无需逐字逐句分析整个文档。经过分段后,知识库能够基于用户问题,采用分段 TopK 召回模式,召回与问题高度相关的内容块,补全关键信息从而提高回答的精准性。
在进行问题与内容块的语义匹配时,合理的分段大小非常关键,它能够帮助模型准确地找到与问题最相关的内容,减少噪音信息。过大或过小的分段都可能影响召回的效果。
Dify 提供了 “通用分段” 和 “父子分段” 两种分段模式,分别适应不同类型的文档结构和应用场景,满足不同的知识库检索和召回的效率与准确性要求。
清洗
为了保证文本召回的效果,通常需要在将数据录入知识库之前便对其进行清理。例如,文本内容中存在无意义的字符或者空行可能会影响问题回复的质量,需要对其清洗。Dify 已内置的自动清洗策略,详细说明请参考 ETL。
LLM 收到用户问题后,能否精准地回答出知识库中的内容,取决于知识库对内容块的检索和召回效果。匹配与问题相关度高的文本分段对 AI 应用生成准确且全面的回应至关重要。
好比在智能客服场景下,仅需帮助 LLM 定位至工具手册的关键章节内容块即可快速得到用户问题的答案,而无需重复分析整个文档。在节省分析过程中所耗费的 Tokens 的同时,提高 AI 应用的问答质量。
分段模式
知识库支持两种分段模式:通用模式与父子模式。如果你是首次创建知识库,建议选择父子模式。
注意:原 “自动分段与清洗” 模式已自动更新为 “通用” 模式。无需进行任何更改,原知识库保持默认设置即可继续使用。选定分段模式并完成知识库的创建后,后续无法变更。知识库内新增的文档也将遵循同样的分段模式。
通用模式
系统按照用户自定义的规则将内容拆分为独立的分段。当用户输入问题后,系统自动分析问题中的关键词,并计算关键词与知识库中各内容分段的相关度。根据相关度排序,选取最相关的内容分段并发送给 LLM,辅助其处理与更有效地回答。
在该模式下,你需要根据不同的文档格式或场景要求,参考以下设置项,手动设置文本的分段规则。
分段标识符,默认值为 \n
,即按照文章段落进行分块。你可以遵循正则表达式语法自定义分块规则,系统将在文本出现分段标识符时自动执行分段。例如 的含义是按照句子进行分段。下图是不同语法的文本分段效果:
分段最大长度,指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 500 Tokens,分段长度的最大上限为 4000 Tokens;
分段重叠长度,指的是在对数据进行分段时,段与段之间存在一定的重叠部分。这种重叠可以帮助提高信息的保留和分析的准确性,提升召回效果。建议设置为分段长度 Tokens 数的 10-25%;
文本预处理规则, 过滤知识库内部分无意义的内容。提供以下选项:
替换连续的空格、换行符和制表符
删除所有 URL 和电子邮件地址
配置完成后,点击“预览区块”即可查看分段后的效果。你可以直观的看到每个区块的字符数。如果重新修改了分段规则,需要重新点击按钮以查看新的内容分段。
若同时批量上传了多个文档,轻点顶部的文档标题,快速切换并查看其它文档的分段效果。
分段规则设置完成后,接下来需指定索引方式。支持“高质量索引”和“经济索引”,详细说明请参考设定索引方法。
父子模式
与通用模式相比,父子模式采用双层分段结构来平衡检索的精确度和上下文信息,让精准匹配与全面的上下文信息二者兼得。
其中,父区块(Parent-chunk)保持较大的文本单位(如段落),提供丰富的上下文信息;子区块(Child-chunk)则是较小的文本单位(如句子),用于精确检索。系统首先通过子区块进行精确检索以确保相关性,然后获取对应的父区块来补充上下文信息,从而在生成响应时既保证准确性又能提供完整的背景信息。你可以通过设置分隔符和最大长度来自定义父子区块的分段方式。
例如在 AI 智能客服场景下,用户输入的问题将定位至解决方案文档内某个具体的句子,随后将该句子所在的段落或章节,联同发送至 LLM,补全该问题的完整背景信息,给出更加精准的回答。
其基本机制包括:
子分段匹配查询:
将文档拆分为较小、集中的信息单元(例如一句话),更加精准的匹配用户所输入的问题。
子分段能快速提供与用户需求最相关的初步结果。
父分段提供上下文:
将包含匹配子分段的更大部分(如段落、章节甚至整个文档)视作父分段并提供给大语言模型(LLM)。
父分段能为 LLM 提供完整的背景信息,避免遗漏重要细节,帮助 LLM 输出更贴合知识库内容的回答。
在该模式下,你需要根据不同的文档格式或场景要求,手动分别设置父子分段的分段规则。
父分段:
父分段设置提供以下分段选项:
段落
根据预设的分隔符规则和最大块长度将文本拆分为段落。每个段落视为父分段,适用于文本量较大,内容清晰且段落相对独立的文档。支持以下设置项:
分段标识符,默认值为 \n
,即按照文本段落分段。你可以遵循正则表达式语法自定义分块规则,系统将在文本出现分段标识符时自动执行分段。
分段最大长度,指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 500 Tokens,分段长度的最大上限为 4000 Tokens;
全文
不进行段落分段,而是直接将全文视为单一父分段。出于性能原因,仅保留文本内的前 10000 Tokens 字符,适用于文本量较小,但段落间互有关联,需要完整检索全文的场景。
子分段:
子分段文本是在父文本分段基础上,由分隔符规则切分而成,用于查找和匹配与问题关键词最相关和直接的信息。如果使用默认的子分段规则,通常呈现以下分段效果:
当父分段为段落时,子分段对应各个段落中的单个句子。
父分段为全文时,子分段对应全文中各个单独的句子。
在子分段内填写以下分段设置:
分段标识符,默认值为 ,即按照句子进行分段。你可以遵循正则表达式语法自定义分块规则,系统将在文本出现分段标识符时自动执行分段。
分段最大长度,指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 200 Tokens,分段长度的最大上限为 4000 Tokens;
你还可以使用文本预处理规则过滤知识库内部分无意义的内容:
替换连续的空格、换行符和制表符
删除所有 URL 和电子邮件地址
配置完成后,点击“预览区块”即可查看分段后的效果。你可以查看父分段的整体字符数。背景标蓝的字符为子分块,同时显示当前子段的字符数。
如果重新修改了分段规则,需要重新点击“预览区块”按钮以查看新的内容分段。若同时批量上传了多个文档,轻点顶部的文档标题,快速切换至其它文档并预览内容的分段效果。
两种模式的区别是什么?
两者的主要区别在于内容区块的分段形式。通用模式的分段结果为多个独立的内容分段,而父子模式采用双层结构进行内容分段,即单个父分段的内容(文档全文或段落)内包含多个子分段内容(句子)。
不同的分段方式将影响 LLM 对于知识库内容的检索效果。在相同文档中,采用父子检索所提供的上下文信息会更全面,且在精准度方面也能保持较高水平,大大优于传统的单层通用检索方式。
选定内容的分段模式后,接下来设定对于结构化内容的索引方法与检索设置。
设定索引方法
正如搜索引擎通过高效的索引算法匹配与用户问题最相关的网页内容,索引方式是否合理将直接影响 LLM 对知识库内容的检索效率以及回答的准确性。
提供“**高质量”**与”经济“ 两种索引方法,其中分别提供不同的检索设置选项:
注意: 原 **Q&A 模式(仅适用于社区版)**已成为高质量索引方法下的一个可选项。
经济
在经济模式下,每个区块内使用 10 个关键词进行检索,降低了准确度但无需产生费用。对于检索到的区块,仅提供倒排索引方式选择最相关的区块,详细说明请阅读下文。
选择经济型索引方式后,若感觉实际的效果不佳,可以在知识库设置页中升级为 “高质量”索引方式。
高质量
在高质量模式下,使用 Embedding 嵌入模型将已分段的文本块转换为数字向量,帮助更加有效地压缩与存储大量文本信息;使得用户问题与文本之间的匹配能够更加精准。
将内容块向量化并录入至数据库后,需要通过有效的检索方式调取与用户问题相匹配的内容块。高质量模式提供向量检索、全文检索和混合检索三种检索设置。关于各个设置的详细说明,请继续阅读检索设置。
选择高质量模式后,当前知识库的索引方式无法在后续降级为 “经济”索引模式。如需切换,建议重新创建知识库并重选索引方式。
如需了解更多关于嵌入技术与向量的说明,请参考《Embedding 技术与 Dify》。
启用 Q&A 模式(可选,仅适用于社区版)
开启该模式后,系统将对已上传的文本进行分段。总结内容后为每个分段自动生成 Q&A 匹配对。与常见的 「Q to P」(用户问题匹配文本段落)策略不同,QA 模式采用 「Q to Q」(问题匹配问题)策略。
这是因为 「常见问题」 文档里的文本通常是具备完整语法结构的自然语言,Q to Q 模式会令问题和答案的匹配更加清晰,并同时满足一些高频和高相似度问题的提问场景。
Q&A 模式仅支持处理 「中英日」 三语。启用该模式后可能会消耗更多的 LLM Tokens,并且无法使用经济型索引方法。
当用户提问时,系统会找出与之最相似的问题,然后返回对应的分段作为答案。这种方式更加精确,因为它直接针对用户问题进行匹配,可以更准确地帮助用户检索真正需要的信息。
指定检索方式
知识库在接收到用户查询问题后,按照预设的检索方式在已有的文档内查找相关内容,提取出高度相关的信息片段供语言模型生成高质量答案。这将决定 LLM 所能获取的背景信息,从而影响生成结果的准确性和可信度。
常见的检索方式包括基于向量相似度的语义检索,以及基于关键词的精准匹配:前者将文本内容块和问题查询转化为向量,通过计算向量相似度匹配更深层次的语义关联;后者通过倒排索引,即搜索引擎常用的检索方法,匹配问题与关键内容。
不同的索引方法对应差异化的检索设置。
高质量索引经济索引
高质量索引
在高质量索引方式下,Dify 提供向量检索、全文检索与混合检索设置:
向量检索
定义: 向量化用户输入的问题并生成查询文本的数学向量,比较查询向量与知识库内对应的文本向量间的距离,寻找相邻的分段内容。
向量检索设置:
Rerank 模型: 默认关闭。开启后将使用第三方 Rerank 模型再一次重排序由向量检索召回的内容分段,以优化排序结果。帮助 LLM 获取更加精确的内容,辅助其提升输出的质量。开启该选项前,需前往“设置” → “模型供应商”,提前配置 Rerank 模型的 API 秘钥。
开启该功能后,将消耗 Rerank 模型的 Tokens,详情请参考对应模型的价格说明。
TopK: 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。默认值为 3,数值越高,预期被召回的文本分段数量越多。
Score 阈值: 用于设置文本片段筛选的相似度阈值,只召回超过设置分数的文本片段,默认值为 0.5。数值越高说明对于文本与问题要求的相似度越高,预期被召回的文本数量也越少。
TopK 和 Score 设置仅在 Rerank 步骤生效,因此需要添加并开启 Rerank 模型才能应用两者中的设置参数。
全文检索
定义: 关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。
Rerank 模型: 默认关闭。开启后将使用第三方 Rerank 模型再一次重排序由全文检索召回的内容分段,以优化排序结果。向 LLM 发送经过重排序的分段,辅助其提升输出的内容质量。开启该选项前,需前往“设置” → “模型供应商”,提前配置 Rerank 模型的 API 秘钥。
开启该功能后,将消耗 Rerank 模型的 Tokens,详情请参考对应模型的价格说明。
TopK: 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。
Score 阈值: 用于设置文本片段筛选的相似度阈值,只召回超过设置分数的文本片段,默认值为 0.5。数值越高说明对于文本与问题要求的相似度越高,预期被召回的文本数量也越少。
TopK 和 Score 设置仅在 Rerank 步骤生效,因此需要添加并开启 Rerank 模型才能应用两者中的设置参数。
混合检索
定义: 同时执行全文检索和向量检索,或 Rerank 模型,从查询结果中选择匹配用户问题的最佳结果。
在混合检索设置内可以选择启用 “权重设置” 或 “Rerank 模型”。
权重设置
允许用户赋予语义优先和关键词优先自定义的权重。关键词检索指的是在知识库内进行全文检索(Full Text Search),语义检索指的是在知识库内进行向量检索(Vector Search)。
将语义值拉至 1
仅启用语义检索模式。借助 Embedding 模型,即便知识库中没有出现查询中的确切词汇,也能通过计算向量距离的方式提高搜索的深度,返回正确内容。此外,当需要处理多语言内容时,语义检索能够捕捉不同语言之间的意义转换,提供更加准确的跨语言搜索结果。
将关键词的值拉至 1
仅启用关键词检索模式。通过用户输入的信息文本在知识库全文匹配,适用于用户知道确切的信息或术语的场景。该方法所消耗的计算资源较低,适合在大量文档的知识库内快速检索。
自定义关键词和语义权重
除了将不同的数值拉至 1,你还可以不断调试二者的权重,找到符合业务场景的最佳权重比例。
语义检索指的是比对用户问题与知识库内容中的向量距离。距离越近,匹配的概率越大。参考阅读:《Dify:Embedding 技术与 Dify 知识库设计/规划》。
Rerank 模型
默认关闭。开启后将使用第三方 Rerank 模型再一次重排序由混合检索召回的内容分段,以优化排序结果。向 LLM 发送经过重排序的分段,辅助其提升输出的内容质量。开启该选项前,需前往“设置” → “模型供应商”,提前配置 Rerank 模型的 API 秘钥。
开启该功能后,将消耗 Rerank 模型的 Tokens,详情请参考对应模型的价格说明。
“权重设置” 和 “Rerank 模型” 设置内支持启用以下选项:
TopK: 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。
Score 阈值: 用于设置文本片段筛选的相似度阈值,即:只召回超过设置分数的文本片段。系统默认关闭该设置,即不会对召回的文本片段相似值过滤。打开后默认值为 0.5。数值越高,预期被召回的文本数量越少。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-03
Dify MCP 插件指南:一键连接 Zapier,轻松调用 7000+ App 工具
2025-04-02
Dify个人助理本地搭建快速入门
2025-04-02
Dify版本升级 0.15.3-->1.1.3
2025-04-02
Dify-Plus:不仅仅是“Dify增强版”
2025-04-01
dify v1.0.1外挂ragflow知识库,确实可以封神了!【喂饭级教程】
2025-03-31
Dify内置DeepResearch深度体验,抽丝剥茧带大家瞧瞧它的真实水准
2025-03-31
Dify工作流如何屏蔽DeepSeek-R1的思考内容?来看看解决方案吧!!!
2025-03-30
dify案例分享-API文档生成接口代码
2024-12-24
2024-04-25
2024-07-16
2024-07-20
2024-04-24
2024-06-21
2024-05-08
2024-05-09
2024-08-06
2024-11-15