返回首頁

GitHub Repo

Dify 社群回報跨知識庫附件誤刪,刪除資料集可能破壞其他資料集的共用檔案

10 月 20 日的 Dify 社群回報指出,刪除知識庫資料集時,清理程序可能刪掉另一資料集仍在使用的附件。修補提案已加入跨資料集引用檢查,但尚未合併,正式版本與雲端服務的影響範圍仍待確認。

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

Dify 的知識庫清理流程出現一項可能造成附件遺失的社群回報。10 月 20 日提交的議題指出,同一工作區內,若兩個資料集引用相同上傳檔案,刪除其中一個資料集,可能連帶移除另一個仍需使用的檔案紀錄與儲存物件。回報以自架原始碼版本 main、提交 638ed4e 為基礎,並附上使用專案 SQLite 測試環境的重現方式。議題與重現條件

問題落在附件的生命週期管理。重現案例先建立一筆 UploadFile,再讓資料集 A、B 各自透過 SegmentAttachmentBinding 引用它。清理 A 時,_delete_attachments 雖然只選取 A 的綁定,卻直接刪除對應檔案與底層物件;B 的綁定因此仍在,實際附件卻已消失。這表示,限定查詢的資料集範圍,仍不足以保護跨資料集共用的資源。技術回報

這類缺口可能影響多模態 RAG 的輸入完整性。依 Dify 官方文件,知識檢索結果除了文字區塊,也能透過 files 欄位攜帶影像附件,供啟用視覺能力的下游模型讀取。據此推論,即使文字與引用關係仍存在,底層影像被刪除後,模型取得的參考材料也可能不完整;目前沒有公開證據可量化實際受影響的查詢數量。官方檢索文件

同日提出的修補案,改為檢查被刪資料集以外是否仍有附件綁定,再決定是否刪除上傳檔案,也涵蓋內嵌影像與上傳來源檔案的清理路徑。作者回報相關單元測試共 35 項通過,但截至查核時,提案仍為開啟狀態,不能視為正式修復。工程團隊接下來應關注維護者審查、端到端刪除測試,以及修補納入哪個版本;現有證據也未顯示它能恢復已刪除的儲存物件。修補提案與驗證紀錄

來源

  1. Deleting a dataset removes attachment uploads still bound in another dataset
  2. fix(dataset): preserve shared attachment uploads
  3. Knowledge Retrieval