ホームへ戻る

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と当時のメインブランチでは、再帰分割が文字単位の分割にフォールバックした際、単独の改行がすべて削除される可能性がある。その結果、製品番号、URLの一覧、一部の中日韓テキストで、隣接するデータ行がひと続きになる。別のコントリビューターは16日、2種類の分割器でこの挙動を再現したとコメントした。問題報告

この問題は、テキストがチャンク長を超え、二重改行、句点、空白など、先に設定された区切り文字が見つからない場合に発生する。分割器は最終的に空文字列を区切り文字として、内容を1文字ずつに分割する。その後のフィルタリング処理で改行の断片が除外される。報告には、モデルもデータベースも不要なPythonでの再現手順が示されている。20件のSKU番号を単独の改行でつなぎ、チャンク長を50、オーバーラップを0に設定すると、出力から行間の区切りが失われる。再現手順

10月16日に提出された修正PR #44179は、2種類の再帰分割器を対象に、区切り文字が空文字列となる経路で改行を保持し、明示的に改行で分割する場合の従来の挙動は維持する。作成者は、単独改行を含む入力の回帰テストを追加し、関連テストスイートで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