【バグ?】v1.13.0以降、ナレッジ検索ノードのメタデータフィルターが機能しない
1週間前(v1.13.0リリース前後)まで正常に動作していたワークフローで、メタデータフィルターが突然機能しなくなりました。
環境
状況
- ナレッジベースに
product_name = "ProductA" のメタデータを設定
- ナレッジ検索ノードのメタデータフィルターに
product_name = [Variable: user_input] を設定
user_input = "ProductA" で実行しても { "result": [] } が返る
- cencernの値が正しくナレッジが渡っておらず、メタデータで検索されていない可能性がある。
試したこと
- フィールド名の一致を確認済み
- VariableをConstant(固定値
"ProductA")に変更しても []
- ワークフローを先月のバージョンにロールバックしても改善しない
v1.11.3で fix DatasetRetrieval._process_metadata_filter_func miss in operator(#30199)が修正されていましたが、その後のアップデートでリグレッションが発生した可能性があります。
同様の問題が発生している方はいますか?
「いいね!」 2
私も同じ問題を経験しています。変数によるメタデータのフィルタリングが機能しません。定数値は期待通りに機能します。
「いいね!」 1
添付写真の部分が変数であれば検索が不可、定数であれば問題なく検索ができます。少し前まで変数で検索ができていたので、もし変数でメタデータを探せる方法があれば教えていただきたいです。
「いいね!」 1
Toshi
4
私も全く同じ症状で苦労してます。
以前はヒットしていたんでしょうか?
バグと思われ、GitHub で報告済みです。
このまま修正もするつもりですが明日以降になりそうで、もしかすると中の方々のほうが動きが速いかもです。
以前はヒットしていました。
3月に入ってから急に変数でヒットしなくなった感じですね…
ありがとうございます。
このまま改善されるのを待ちたいと思います。
本当にありがとうございます。早く修正されることを願っています 
ぼくが着手する前にさくっと対応いただけたようです。
次のリリースで修正されますので、リリースをお待ちください 
代替ソリューションはありますか?問題は以下の通りです。
Difyシステムで問題が発生しました。私が最初にアップロードしたファイル、kb2-test(テキスト)が、KB2ステージで、以前のノードで識別されたファイル名である入力b9101と共に使用されました。KB2ノードはそのファイルを読み取り、それに応じて回答できました(ファイルが呼び出されたことを示しています)。しかし、後でアップロードされたファイルは、バインドされた後、このノードで呼び出すことができません。
システムは、KB2でのファイル名入力に基づいて、元のkb2-testファイルを明らかに呼び出します(ファイル内のb9101を削除した後でも、コンテンツを取得できます)。なぜかわかりませんが、後でアップロードされたKB2ファイルは呼び出すことができません。
kb2-testについては、メタデータフィルターが追加されたかどうかに関わらず(アップロード後に、アップロード中にメタデータフィルターパラメーターを追加するオプションがないため)、システムはそれを呼び出すことができます(つまり、KB2ノードは入力b9101に基づいてファイルを正しく呼び出すことができます)。しかし、後でアップロードされたファイルについては、メタデータが設定されているかどうかに関わらず(アップロード後)、呼び出すことができません。
ファイル名を変更しても(b1234に)、システムはまだそれを呼び出すことができます。したがって、システムはkb2-testファイルに対して、名前ベースの検索でも、ドキュメント内のファイル名フィールドに基づく検索でもなく、コンテンツベースの検索を使用していることは明らかです。
私の質問は次のとおりです。
-
Difyシステムはメタデータフィルターを使用できますか(これは基本的な機能だと思いますが)、アップロード時に設定することも含めて(ナレッジファイルをアップロードするときにメタデータフィルターを追加する機能が見当たりませんでした。埋め込みページには「Notionから同期」と「APIへのアクセス」、または「パイプラインからナレッジを作成」しかありませんでした — これらの機能は何ですか?)、そしてファイルにメタデータが設定された後、そのメタデータフィルターをシステムで使用できますか?
-
メタデータを使用できない場合、なぜシステムはファイル名でファイルを直接呼び出すことができないのですか?Difyがドキュメント内の意味的コンテンツに基づいてのみ検索を実行できるとしたら、それは不合理ではないでしょうか?
-
以下のいずれかを達成するためのより良い方法はありますか?
システムがすべてのドキュメントコンテンツの意味的意味に基づいてのみ検索を実行できるとしたら、それは読者が図書館に本を探しに行き、司書がすべての本を取り出して検索しなければならないようなものです。それは不合理ではないでしょうか?
「いいね!」 1