マルチモデルフュージョン - Entity Enricher ドキュメント

マルチモデルフュージョン

同じ enrichment を複数の AI model で実行すると、Entity Enricher はその結果を単一の高信頼度な出力へ fusion できます。fusion は model 出力間の競合を検出し、決定論的なルールまたは LLM による arbitration で解決します。

フュージョンパイプライン

モデル出力
Claude の結果
GPT-4 の結果
Gemini の結果
コンフリクト検出
すべてのモデルにわたって
すべてのフィールドを比較
解決
ルールベースのマージ
または
LLM調停
マージ結果
単一出力と
競合監査証跡

ステップ1: 競合の検出

競合検出器は、すべてのモデル出力にわたってすべてのフィールドを比較します。すべてのモデルが一致するフィールドはそのまま通過します。モデルが一致しないフィールドは、解決が必要な競合としてフラグ付けされます。

フィールドタイプ別の比較ルール
比較方法一致の意味
スカラー正規化された完全一致(トリム済み・小文字化・丸め済み)正規化後、すべての値が等しい
多言語対応実行の主要言語が決定します。翻訳の違いは言語ごとのマージを引き起こすだけです主要言語で同じテキスト — 翻訳の言い回しの違いは不一致とはみなされません
配列項目の主要言語ビューに対する集合比較(順序非依存)順序や翻訳の言い回しに関係なく、同じ項目
オブジェクトアイデンティティフィールドによって両モデルが同じ対象を記述していると確認できる限りはプロパティ単位で、確認できない場合はオブジェクト全体が 1 つの競合になりますすべてのネストされたプロパティが一致
null / 空null・空文字列・空配列の値は、主張ではなく棄権として扱われます競合としてカウントされることなく、値が入っている方が採用されます
例: 2つのモデルで「Sanofi」をエンリッチする
Claude の出力
revenue: 42.2
gmp_status: true
description: “Sanofi is a global...”
GPT-4 の出力
revenue: 44.1
gmp_status: true
description: “Sanofi SA is a...”
結果: gmp_status = agreed | revenue = conflict (42.2 vs 44.1) | description = conflict(テキストが異なる)

ステップ2: 競合の解決

コンフリクトは、サイドバーでアービトレーションモデルを選択したかどうかに応じて、2 つの方法のいずれかで解決されます。

オプションA

ルールベースのマージ

各フィールドのデータ型に基づいて決定論的なルールが適用されます。ほとんどの場合、LLM 呼び出しは一切不要で、解決は即座かつ無料です。唯一の例外は、モデル間で大きく食い違う数値です。これはどのルールでも正当に決着させられません。詳しくは以下をご覧ください。

フィールドタイプルール根拠
文字列多数決。同数の場合は最長の値を採用します通常は詳細が多いほど良い結果になります
数値中央値に最も近いモデルの値外れ値に強く、平均値を捏造することはありません
ブール値多数決。同数の場合は true を優先します安全側のデフォルト
多言語対応言語ごとの多数決、言語の和集合各言語を個別に解決
配列キーを考慮した和集合:項目はキーフィールドでグループ化され、表記ゆれは統合され、一致した項目はフィールドごとにマージされます論理エンティティごとに1行、情報の欠落はありません
オブジェクトアイデンティティが一致する場合はフィールド単位で、一致しない場合は一方のモデルのオブジェクトを丸ごと採用します異なるエンティティを記述する 2 つのオブジェクトを混ぜ合わせると、どちらのモデルも返していない第 3 のエンティティを作り出してしまいます
Null と 値値が入っている方を優先しますデータの欠落は、いかなる値よりも望ましくありません

タイブレーク: 投票が同数の場合は、(能力の代理指標として)価格の高いモデルの値が優先され、次にモデル名のアルファベット順で決まります。オブジェクト全体をアトミックに扱う場合は、その 2 つの間に完全性(値が入っている葉ノードの数)が入ります。どちらのエンティティが正しいかを証明する材料がない場合は、より強力なモデルを優先し、次により多くの情報を含む回答を選びます。

ネストされたオブジェクトは混ぜ合わされず、まとめてマージされます

ネストされたオブジェクトをフィールド単位でマージできるのは、両方のモデルが同じ対象を記述している場合に限られます。識別フィールドがそれを裏付けない場合 — キーが異なる、あるいはキーがまったくなく実際に内容が食い違っている場合 — オブジェクト全体が 1 つのコンフリクトとして扱われ、一方のモデルの値がそのまま採用されます。そうしなければ、フュージョンはキメラを組み立ててしまいます。つまり、あるモデルの住所を別のモデルの会社に付けてしまうのです。意図的な挙動ですが、知っておく価値のある帰結が 1 つあります。採用された側は空欄も含めてそのまま取り込まれるため、採用側が空のままにしたフィールドは空のままとなり、データベースへの登録判定でエンティティが通らない原因になり得ます。その理由は実行の検証警告に記録されます。

数値の差が大きすぎてマージできない場合

「中央値に最も近い値」は、モデルごとに丸め方が異なる場合には適切ですが、モデル同士が矛盾している場合には不適切です。0 と 1854 の違いは丸めの差ではありません。値の相対的なばらつきが 20% に達すると、そのフィールドは組織の通常のモデル選択によって自動的に選ばれた LLM アービターにエスカレーションされ、その呼び出しは他と同様に課金されます。該当するフィールドはフュージョンの監査証跡で自動エスカレーション済みとしてフラグが付くため、トークンを消費したマージでは必ずどのフィールドが原因だったかが分かります。

オプションB

LLM調停

サイドバーで arbitration model を選択すると、競合はインテリジェントな解決のために LLM へ送られます。arbitrator は entity のコンテキスト、schema のフィールド説明、およびすべての競合値を受け取り、理由付きで判断を下します。

arbitratorが返す内容
選択された値最も正確だと判断された値
ソースmodel選択された値がどのモデルに由来するかです。
推論他の候補ではなくその値を選んだ理由
信頼度判断にどれだけ自信があるか(高、中、低)

フォールバック: arbitrationのmodelが失敗した場合(タイムアウトやエラー)、システムは自動的にルールベースのマージにフォールバックするため、常に結果が得られます。

ステップ3: 統合結果

競合解決後、システムは単一の統合結果を構築し、データベースに「アービトレーション」レコードとして保存します。すべての統合結果には監査証跡が含まれるため、各競合がどのように解決されたかを追跡できます。

監査証跡(アービトレーションのメタデータ)

マージされたすべての結果には、フュージョンのプロセスを記録するメタデータが含まれます:

“method”: “rule_based” | “llm”
“source_record_ids”: [“uuid-1”, “uuid-2”]
“total_fields”: 23
“agreed_fields”: 18
“conflicted_fields”: 5
“decisions”: [{ path, chosen_value, rule_used, ... }]

同じ監査証跡は、Historyページの統合されたrecordのOverviewタブでも表示されます。統合されたrecordは、独自のmodelではなく統合したmodelの一覧を表示します。また、統合がルールベースで行われた場合はLLM呼び出しをまったく行っていないため、prompt、トークン、コストのいずれも伴いません。

UIに表示される内容

フュージョンが完了すると、結果パネルの「統合」タブに以下が表示されます:

1
サマリーヘッダー
解決方法(ルールベースまたはLLM)と、「18件一致 / 5件解決 / 全23フィールド」のような件数を表示します。
2
マージ済み JSON
合意された値と解決された競合を単一のJSONドキュメントに統合した、完全な構造化出力です。
3
コンフリクトレポート
各競合の展開可能なカードで、フィールドパス、解決方法バッジ (多数決、中央値、和集合など)、選択された値がハイライトされたすべてのモデル値、LLM 調停が使用された場合は推論テキストを表示します。

バッチ処理での自動フュージョン

バッチエンリッチメントでは、2 つ以上のモデルを選択するとフュージョンが自動的に実行されます。「Merge Results」を手動でクリックする必要はありません。あるエンティティについてすべてのモデルが成功した時点でフュージョンが実行され、統合結果が各モデルの個別出力と並んで表示されます。1 つでもモデルが失敗した実行は、意図的にフュージョンされません。残りだけを統合すると、部分的な回答を合意された答えであるかのように黙って公開してしまうためです。まず不足しているモデルを回復してください。失敗した専門ドメインを再試行して実行が揃えば、自動的にフュージョンされます。

ストリーミングfusion: 単一entityおよびbatchのenrichmentの両方において、fusionの進捗はServer-Sent Events経由でストリーミングされます。fusion_startedconflicts_detectedfusion_completedのイベントをリアルタイムで確認できます。

ルールベース vs LLMアービトレーション:それぞれの使いどころ

ルールベース(即時、ほぼ常に無料)
  • 投票ロジックが有効に機能する、主に事実データや数値データ向け
  • コストが重要となる大量処理またはバッチ処理
  • 競合がほとんど想定されないシンプルなスキーマ
  • 決定論的で再現可能な結果が欲しい場合
LLM調停(追加コスト)
  • 解決にコンテキストが重要となる複雑なスキーマ
  • 投票では不十分なテキストデータ(説明、要約)
  • 理由付きで説明可能な判断が必要な場合
  • 精度が追加コストに見合う、重要度の高いエンリッチメント