適用於誰
- 搜「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 條評論
還沒有評論,來搶沙發~