Published on

Dify 基础使用知识库

Authors
  • avatar
    Name
    叫我小N就好啦
    GitHub
    @MinorN

Dify 实战-知识库搭建

知识库就是为了大模型在回答之前先去根据我们自己内部(公司)的知识进行搜索,然后回答,如果没有对应的内容,大模型大概率会出现 AI 幻觉(一本正经地胡说八道)

RAG,全称检索增强生成,我们可以让用户的查询先经过一个检索的节点(检索提供的知识库的内容),然后再经过 LLM 节点,最后返回

我们必须先构建知识库,我们先对文件预处理,然后对文件进行切分(文件可能太大),然后需要将切分的结果向量化(不理解没事),最后构建索引即可

导入文本知识库

我们来创建一个知识库来试试

这里会有多种数据源的选择

我们先以导入 pdf 来做示范,随便上传一个 pdf 文件

先不做任何修改,直接保存处理,等待一段时间后,我们重新创建一个 chatflow 来进行测试

然后询问有关知识库内的问题就会发现回答的准确了,

知识库具体设置

接下来我们来看看刚才默认的那些参数

通用分段设置

通用的分段设置中,分段标识符用于分段的规则,一般以换行符为分段,如果是 pdf、word 一般用 \n ,markdown 一般用 # 来进行分段;分段最大长度指的是,如果超过了分段的最大长度,那么直接截取(一般 1 个tokens 对应 1-1.5 个汉字);分段重叠长度可以保留分段之间的关系

父子分段

有些回答可能会有上下文的限制条件,如果只使用通用分段,可能会导致上下文的限制条件丢失,导致回答不精准,此时就需要父子分段

父段、子段可以看看成类似包含关系,父分段大一点,会包含子分段(可能不是完全包含)

这里具体值的设定,需要不断地调试,每个文档情况都不同

检索设置

向量检索

通过向量之间的比较,对比向量之间的相似度,找到最相似的文本分段

全文检索

通过关键词匹配,适合精准匹配

混合检索

结合上述两种检索方式,从两种查询结果选择最匹配的最佳结果

Rerank 模型

首先模型得支持 Rerank,Rerank 模型会对于初步检索的结果,排序然后打分,随后获取一个相关性最高或者最相似的结果返回

Top K:用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整分段数量。

Score 阈值:用于设置文本片段筛选的相似度阈值。不易设置过高,过高会导致漏检,过低就会导致出现不相关内容