返回首頁

GitHub Repo

Dify 社群提出知識分段修補,字元級切割可能刪除中文與清單換行

Dify 社群於 10 月 15 日回報,知識庫分段退回逐字元切割時會刪除單一換行,將原本獨立的資料列黏合。10 月 16 日已有貢獻者回報重現並提出修補,但提案尚未合併,實際檢索影響仍待量測。

The original uploader was Ggia at Greek Wikipedia. · CC BY-SA 2.5 · Image source
zh-Hant

Dify 的知識庫分段流程出現文字結構遺失問題。10 月 15 日提交的回報指出,自架版 1.17.1 與當時主分支,在遞迴分段退回逐字元切割時,可能把單一換行全部移除,讓產品編號、網址清單與部分中日韓文字的相鄰資料列連成一串。另一名貢獻者於 16 日留言表示,已在兩套分段器重現此行為。問題回報

觸發條件是文字超過區塊長度,且找不到前面設定的分隔符號,例如雙換行、句號或空格。分段器最後以空字串為分隔符號,將內容拆成單一字元;後續過濾程序又排除換行片段。回報提供不需模型或資料庫的 Python 重現方式:以單換行串起二十筆 SKU 編號,設定區塊長度為 50、重疊為零,輸出便失去列與列之間的界線。重現步驟

10 月 16 日提出的修補 PR #44179,針對兩套遞迴分段器保留空分隔符號路徑中的換行,同時維持明確以換行分段時的既有行為。作者加入單換行輸入的回歸測試,並回報相關測試套件有 107 項通過、4 項略過;這些是提案作者提供的驗證結果,目前仍待程式碼審查。修補提案

技術上,這會讓 RAG 的資料品質問題提早發生在索引之前。Dify 官方文件說明,超過最大區塊長度的文字會被強制切割,檢索結果再成為模型上下文。據此推論,若原始列界線已消失,後續調整提示或更換模型未必能恢復其結構;但公開討論尚未提供召回率或答案正確率的量化比較。分段設定文件

工程團隊可先以實際中文文件與逐列編號資料檢查分段預覽,並比較索引前後的文字。接下來應追蹤修補是否合併、納入哪個版本,以及受影響的既有知識庫是否需要重新處理;目前不能把這份提案視為已發布的正式修正。

來源

  1. Knowledge chunking deletes line breaks when a segment falls back to character splitting · Issue #44168
  2. fix(rag): preserve newlines in recursive character fallback · Pull Request #44179
  3. Configure the Chunk Settings