Dify 知识库配置:上传文档后让回答真正引用资料
Dify 的知识库配置本质上是三件事:把文档切成合适的片段、用嵌入模型把它们转成向量、再在应用里指定召回多少条。
上传成功但回答不引用资料,多半是分段或召回参数不匹配,而不是文件没传上去。
下面按实际操作顺序讲清楚每一步在哪里做、填什么、怎么验证。
先确认两个前提
进入知识库之前,先确认 Dify 已正常运行并能登录工作台,模型供应商里至少配置好一个可用的对话模型和一个嵌入模型。
嵌入模型负责把文本转成向量,没有它知识库无法建立索引,这是新手最容易卡住的一步。
在「设置 → 模型供应商」中检查嵌入模型是否已启用。
不同版本界面名称略有差异,以你当前部署版本的菜单为准。
如果只有对话模型没有嵌入模型,上传文档时会提示无法索引。
创建知识库并选对分段方式
在顶部导航进入「知识库」,点击「创建知识库」。
通用文档问答一般选「导入已有文本」,然后进入分段设置页面。
分段设置决定检索质量,常见选项有两个方向:
- 通用分段:按固定长度切分,可设置分段长度和重叠长度。适合结构松散的说明文档、FAQ 汇总。
- 父子分段:子段用于检索,父段提供上下文。适合长段落、条款类文档,能减少答案被切断的情况。
分段长度没有通用最优值。
产品手册这类信息密集的文档,分段过长会让一次召回带入大量无关内容;
过短则可能把一句话拆开。
可以先用默认值建库,用真实问题测召回,再回来调整。
索引方式通常选「高质量」,它依赖嵌入模型生成向量;
「经济」模式用关键词检索,不消耗嵌入额度,但语义匹配能力弱一些。
文档量大且预算敏感时可以先试经济模式,再根据效果决定是否切换。
导入文档并等待索引完成
进入知识库后点击「添加文档」,支持直接上传文件、从网页抓取或手动输入文本。
上传后系统会显示分段和索引进度,必须等到状态变为可用再测试,索引未完成时检索结果可能为空。
导入完成后建议点开文档,抽查几个分段。
重点看三件事:
- 段落是否在句子中间被切断;
- 表格、代码块是否变成难以理解的碎片;
- 页眉页脚、目录等噪声是否被大量带入。
发现问题就调整分段规则后重新索引,而不是在应用层反复调参数。
在应用里关联知识库
回到「应用」创建或打开一个对话型应用,在编排页面的上下文区域点击「添加」,选择刚才创建的知识库。
这里通常需要设置召回条数(Top K)和相似度阈值。
召回条数决定每次提问带入多少片段。
条数太少容易漏掉关键内容,太多则会把无关段落塞进上下文,反而干扰模型。
可以从较小的值开始,用真实问题观察回答是否引用了正确段落,再逐步调整。
如果界面提供重排(Rerank)模型选项,文档量大、召回噪声明显时可以启用,它会对初步召回的片段再排序。
没有配置重排模型时跳过即可,不影响基本问答。
用问题验证召回是否生效
配置完成后不要只看回答是否通顺,要验证它是否真的用了知识库。
方法是用一个只有文档里才有的细节提问,比如某个内部流程名称或具体数值,观察回答是否准确复述。
如果回答笼统、明显在编,按这个顺序排查:
- 打开知识库的「召回测试」,直接输入问题,看返回的片段里有没有正确内容。召回测试没有命中,说明问题出在分段或索引,不在应用配置。
- 召回测试能命中但应用不引用,检查应用是否真的关联了该知识库、召回条数是否过小。
- 命中的片段内容对但被切断,回到分段设置调大长度或增加重叠。
- 文档更新后回答仍是旧内容,确认是否重新索引,旧分段不会自动替换。
容易忽略的几个点
更换嵌入模型会导致已有索引失效。 向量维度和语义空间都变了,切换后通常需要重新索引全部文档,操作前评估文档量。
知识库权限和应用可见范围是两回事。 团队成员看不到某个知识库时,先检查工作区成员权限,而不是怀疑配置出错。
分段不是越细越好。 检索命中率高的前提是片段本身语义完整,一味缩短只会让模型拿到断句。
把 Dify 知识库配置跑通的标准不是上传成功,而是召回测试能稳定返回正确片段、应用回答能引用文档内容。
先在小批量文档上验证这套流程,再批量导入,后续调整分段和召回参数会更有依据。