适用于谁
- 搜「dify 知识库搭建」「dify知识库分段设置」「dify 知识库分段最大长度」「dify rag」的人;
- 知识库建好了,但应用总是答非所问、检索不到该有的内容,不知道该调哪个参数的人。
本文根据 Dify 官方中文文档整理,资料核对于 2026-10-11。还不了解 Dify 的话先看《Dify怎么用》。
结论先说
- 建知识库是四步:选数据源并导入 → 指定分段设置 → 指定索引方式和检索设置 → 等待处理完成。
- 有三样东西建好之后不能改:数据源、分段模式(通用 / 父子)、以及从高质量索引切回经济索引。动手前先想清楚。
- 分段决定了「能检索到什么」。FAQ、术语表这类一条一条独立的内容用通用模式;技术手册、论文这类需要上下文的长文档用父子模式。
- 索引方式一般选高质量,它用嵌入模型做语义检索;经济模式靠关键词,不消耗 Token 但准确度低。
- 回答不准时先做「测试召回」,看检索出来的分段对不对,再决定是调分段还是调检索。
步骤
1. 创建知识库并上传文件
- 点击 知识库 → 创建 → 创建即用型知识库;
- 选择 导入已有文本 作为数据源,上传文件。数据源除了本地文件,官方还支持从 Notion 等来源导入。
官方提醒:知识库创建后,数据源无法更改。
上传限制因套餐而异(官方文档,2026-10-11 核对,以定价页为准):
| Sandbox | Professional 和 Team | |
|---|---|---|
| 单次上传文件数 | 1 | 50 |
| 单个文件大小 | 15 MB | 50 MB |
文件里的图片:JPG、JPEG、PNG、GIF 格式且小于 2 MB 的图片会被自动提取为对应分段的附件,检索时和分段一起返回;每个分段最多 10 张,超出的不提取。
2. 设置分段
为什么要分段。官方的比喻是把一本大书整理成章节和段落:用户提问时,系统在这些分段里搜索相关信息,再把找到的分段作为上下文交给模型。分段切得好不好,直接决定检索质量。
两个关键参数
- 分隔符:在哪里切。
\n\n表示在段落之间切,\n表示在每一行之间切。注意官方的说明:分隔符在分段过程中会被移除,所以要用文档里不会自然出现的、非内容性的字符,否则会丢信息; - 分段最大长度:每个分段最多多少字符。超过这个长度的文本会被强制切开,不管分隔符怎么设。
两种模式
| 通用模式 | 父子模式 | |
|---|---|---|
| 分段策略 | 单层,所有分段用同一套设置 | 双层:小的子分段 + 大的父分段 |
| 检索流程 | 匹配到的分段直接返回 | 用子分段匹配问题,返回它所属的整个父分段 |
| 可用的索引方式 | 高质量、经济 | 仅高质量 |
| 适合 | 简单、彼此独立的内容,如术语表、常见问题 | 信息密集的文档,如技术手册、研究论文 |
父子模式解决的是一个两难:分段小,匹配精确但缺上下文;分段大,上下文丰富但匹配不准。官方的概括是「以精准检索,以上下文响应」。
官方提醒:分段模式在知识库创建后无法更改,但分隔符、分段最大长度这些具体设置可以随时调整。
通用模式的额外参数:分段重叠长度。指定相邻分段之间重叠多少字符,避免重要信息正好被切在边界上。官方的例子:设 50 个字符的重叠,前一个分段的最后 50 个字符也会出现在下一个分段的开头。
父子模式的设置
- 父分段有两种建法:段落(按分隔符和最大长度切成多个父分段,适合结构清晰的长文档)和全文(整篇文档作为一个父分段,适合内容紧凑的短文档);
- 全文模式有两个限制:只处理前 10,000 个 token,超出的被截断;父分段创建后不能编辑,要改只能重新上传;
- 子分段在每个父分段内部再按自己的分隔符和最大长度切;
- 官方特别提醒:父分段和子分段不要用互为子集的分隔符(例如一个用
??另一个用?),否则分段结果会出乎意料。
文本预处理。分段之前可以勾选清理规则,例如把连续的空格、换行和制表符规范化。从网页或 PDF 导出的文本通常值得勾上。
这一步可以预览分段效果。预览时重点看三件事:有没有把一个完整的问答、一张表格或一个步骤切成两半;有没有出现只有标题没有内容的分段;分段长度是否大致均匀。
3. 选择索引方式
高质量
用嵌入模型把每个分段转成向量。官方的解释是:这些向量可以理解为多维空间里的坐标点,两个点越近,语义越相似,所以系统能按语义而不只是关键词找到相关内容。向量会占用工作空间的知识库存储空间。
官方提醒:一旦以高质量方式创建,之后不能切换为经济型。
经济
每个区块用 10 个关键词做检索,官方说明这样降低了准确度,但不消耗 Token。效果不好时可以在知识库设置里升级为高质量。
4. 设置检索方式
高质量索引下有三种检索方式:
| 检索方式 | 原理 | 适合 |
|---|---|---|
| 向量检索 | 把问题转成向量,找语义最接近的分段 | 用户的说法和文档的措辞不一致、多语言内容 |
| 全文检索 | 索引所有词汇,返回包含这些词的分段 | 用户知道确切的术语、型号、编号 |
| 混合检索 | 两种同时做,再重新排序选出最佳结果 | 拿不准时的稳妥选择 |
混合检索可以用权重设置在「语义」和「关键词」之间调比例,不需要配置 Rerank 模型;也可以启用 Rerank 模型 来重排。
几个参数的含义(默认值来自官方文档):
- TopK:取相似度最高的几个分段,默认 3。官方说明系统还会根据所选模型的上下文窗口动态调整数量;
- Score 阈值:分段被采用所需的最低相似度分数,默认 0.5。阈值越高,被检索到的分段越少;
- Rerank 模型:默认关闭。开启后用第三方 Rerank 模型对检索结果重新排序,需要先在 集成 → 模型供应商 里配置好,会消耗该模型的 Token。
一处容易忽略的官方说明:在向量检索和全文检索里,TopK 和 Score 阈值只在 Rerank 阶段生效,要让这两个设置起作用,需要添加并启用 Rerank 模型。
经济索引只有倒排索引一种方式,只支持设置 TopK。
5. 接到应用里并测试
知识库处理完成后:
- 用 测试召回 功能模拟用户提问,看返回的是哪些分段;
- 在 Workflow 或 Chatflow 里加一个 知识检索 节点,选中这个知识库;
- 把检索结果引用到大语言模型节点的上下文里,并在提示词里要求「只根据检索到的内容回答,没有相关内容时如实说明」。
回答不准时怎么排查
先做测试召回,按结果分三种情况:
| 测试召回的结果 | 问题在哪 | 怎么调 |
|---|---|---|
| 根本没召回相关分段 | 检索 | 换成混合检索;用户常用确切术语时提高关键词权重;检查 Score 阈值是不是太高 |
| 召回了,但分段是残缺的 | 分段 | 调整分隔符;加大分段最大长度或重叠长度;长文档考虑新建一个父子模式的知识库 |
| 召回的分段是对的,回答还是错 | 提示词或模型 | 在提示词里限定只用检索内容;换更强的模型 |
另外,源文档本身的质量影响很大:扫描件、排版混乱的 PDF、合并单元格的表格,先整理成干净的文本或 Markdown 再上传,比调任何参数都有效。
常见问题
Q:Sandbox 一次只能传一个文件,怎么建大一点的知识库?
知识库创建后可以继续往里添加文档,一个一个传;或者先把内容合并成较少的文件。文件数和大小的上限以套餐为准。
Q:分段最大长度填多少合适?
官方没有给统一的推荐值。原则是:让一个分段能完整表达一个意思。FAQ 一问一答一个分段;说明文档以一个小节为单位。先用默认值预览,再根据预览结果调。
Q:文档更新了怎么办?
在知识库里对文档做添加、修改、删除,官方有「维护知识库内容」一文说明具体操作。
Q:嵌入模型怎么选?
在模型供应商里配置了哪些嵌入模型,这里就能选哪些。文档里有图片并且希望图片也能被检索到时,选带 Vision 图标的多模态嵌入模型,Rerank 模型也要选多模态的。
Q:已经有别的知识库系统,能接进来吗?
官方支持通过 API 连接外部知识库,不需要把数据迁移进 Dify。
参考资料
- Dify 文档:知识库 — https://docs.dify.ai/zh/cloud/use-dify/knowledge/readme
- 创建即用型知识库 — https://docs.dify.ai/zh/cloud/use-dify/knowledge/create-knowledge/introduction
- 上传本地文件 — https://docs.dify.ai/zh/cloud/use-dify/knowledge/create-knowledge/import-text-data/readme
- 指定分段设置 — https://docs.dify.ai/zh/cloud/use-dify/knowledge/create-knowledge/chunking-and-cleaning-text
- 指定索引方式与检索设置 — https://docs.dify.ai/zh/cloud/use-dify/knowledge/create-knowledge/setting-indexing-methods
0 条评论
还没有评论,来抢沙发~