Knowledge Base 内の同一テキストチャンクで異なる類似度スコア

Difyのナレッジベースにおけるベクトル検索の挙動について質問があります。

問題

  • 検索テストで、クエリとして**「mac」**を使用しています。

  • 検索結果には、全く同じテキストを持つ複数のチャンクが含まれています。

  • しかし、これらのチャンクの**類似度スコア(SCORE)**が異なります。

例:

  • 同一テキスト:

    「Macの場合はマウスの支給をしません。各自で調達してください。」
    (「Macの場合、マウスは支給されません。ご自身でご用意ください。」)

  • しかし、スコアは異なります。例えば:

    • SCORE: 0.26

    • SCORE: 0.19

(添付のスクリーンショットを参照)

質問

なぜこのような現象が起こるのか理解したいです。

  • 同一のテキストチャンクが、以下の理由により異なる類似度スコアを持つことは想定される挙動でしょうか?

    • 異なるドキュメントに保存されていること

    • 異なるチャンクIDや取り込み順序

    • メタデータ(ドキュメントタイトル、フォルダ、説明など)の違い

    • テキストがチャンク化された際の異なる周辺コンテキスト

  • あるいは、これは以下に関連している可能性がありますか?

    • 埋め込みのタイミング / 再埋め込みの挙動

    • ベクトルデータベースの実装詳細

前提 / 環境

  • チャンクのテキスト自体は全く同じ文字列です。

  • 検索タイプはベクトル検索です(キーワード検索ではありません)。

  • 類似度しきい値は明示的に設定されていません。

目的

以下の点を明確にしたいです。

  • 「同一のテキストは一般的に同一の類似度スコアになるべき」なのか、あるいは

  • 「同一のテキストであっても、ある程度のスコアのばらつきはDifyにおいて想定される挙動」なのか。

もし同様の挙動を経験された方や、根本的な設計/仕様をご存知の方がいらっしゃいましたら、ぜひご意見をお聞かせください。


こんにちは、チャンク内のテキストが同じであれば、2つのベクトルが同じになるのは当然です。

環境について少しお伺いしたいのですが。Dify Cloudをご利用ですか、それともDifyをセルフホストされていますか?どの埋め込みモデルを使用していますか?セルフホストされている場合、どのDifyバージョンとどのベクトルデータベースを使用していますか?

また、別の投稿が直感に反する動作をしているようです。

私の環境ではこの問題を再現できないため、ベクトルデータベース内のデータに何らかの不整合がある可能性があります。
新しいナレッジベースをゼロから作成し、同じドキュメントをアップロードして、問題がまだ発生するかどうかを確認していただけますか?

「いいね!」 1

詳細なご回答ありがとうございます。

チャンク内のテキストがまったく同じであれば、結果として得られるベクトルも同じになるという点に同意します。

私の環境について、もう少し詳細を説明します。

  • Difyをセルフホストしています。

  • Difyバージョン: 1.11.4

  • 埋め込みモデル: amazon.titan-embed-text-v2:0

  • ベクトルデータベース: Weaviate (デフォルト設定)

ご提案いただいた通り、動作を確認するために以下を試してみます。

  • 新しいナレッジベースをゼロから作成する

  • 同じドキュメントをアップロードする

  • 問題が引き続き発生するかどうかを確認する

新しいナレッジベースで問題が発生しない場合、元の環境に何らかの不整合があることを示唆しているかもしれません。

ご提案いただき、改めてありがとうございます。テスト後、改めてご報告します。