Difyのナレッジベースにおけるベクトル検索の挙動について質問があります。
問題
-
検索テストで、クエリとして**「mac」**を使用しています。
-
検索結果には、全く同じテキストを持つ複数のチャンクが含まれています。
-
しかし、これらのチャンクの**類似度スコア(SCORE)**が異なります。
例:
-
同一テキスト:
「Macの場合はマウスの支給をしません。各自で調達してください。」
(「Macの場合、マウスは支給されません。ご自身でご用意ください。」) -
しかし、スコアは異なります。例えば:
-
SCORE: 0.26
-
SCORE: 0.19
-
(添付のスクリーンショットを参照)
質問
なぜこのような現象が起こるのか理解したいです。
-
同一のテキストチャンクが、以下の理由により異なる類似度スコアを持つことは想定される挙動でしょうか?
-
異なるドキュメントに保存されていること
-
異なるチャンクIDや取り込み順序
-
メタデータ(ドキュメントタイトル、フォルダ、説明など)の違い
-
テキストがチャンク化された際の異なる周辺コンテキスト
-
-
あるいは、これは以下に関連している可能性がありますか?
-
埋め込みのタイミング / 再埋め込みの挙動
-
ベクトルデータベースの実装詳細
-
前提 / 環境
-
チャンクのテキスト自体は全く同じ文字列です。
-
検索タイプはベクトル検索です(キーワード検索ではありません)。
-
類似度しきい値は明示的に設定されていません。
目的
以下の点を明確にしたいです。
-
「同一のテキストは一般的に同一の類似度スコアになるべき」なのか、あるいは
-
「同一のテキストであっても、ある程度のスコアのばらつきはDifyにおいて想定される挙動」なのか。
もし同様の挙動を経験された方や、根本的な設計/仕様をご存知の方がいらっしゃいましたら、ぜひご意見をお聞かせください。
