ハルシネーション防止 - Entity Enricher ドキュメント

ハルシネーション防止

LLM は構造化データを生成する際、もっともらしく見える事実を捏造することがあります。Entity Enricher は 8 層の防御機構を用いて、正確なデータかデータなしのいずれかを保証します。自信ありげな作り話が返ることはありません。

構造化されたハルシネーションの問題

自由なテキストでは、幻覚(ハルシネーション)による文は明らかに曖昧です。構造化された出力では、"founded_year": 1987のような幻覚によるフィールドは信頼できるように見え、正しい値と区別することはほぼ不可能です。これを特に危険なものにする3つの要因があります:

誤った精度

ハルシネーションによるJSON値は、本物とまったく同じに見えます。曖昧な表現も「およそ」もなく、ただきれいで自信ありげな、たまたま間違っているデータ点があるだけです。

スキーマの負荷

必須フィールドは、LLMに知識がない場合でも値を生成させます。モデルは構造に空白を残すのではなく、データを捏造します。

サイレント伝播

構造化データはデータベース、分析、自動化に直接取り込まれます。誤った値は人による確認を経ずにパイプライン全体へ伝播します。

一般的なハルシネーションのパターン

パターン原因
自信を持った捏造"ceo": "John Smith"LLMが必須フィールドをもっともらしい名前で埋めます
時系列の混同"revenue": "$2.3B"トレーニングデータのカットオフ、または期間の混同
エンティティの混同会社 A の属性を会社 B に適用重複するトレーニングデータ内の類似した名前
妥当なデフォルト値"employees": 500LLMは無知を認めるよりも「妥当な」数値を選びます
捏造された関係"subsidiary_of": "Alphabet"LLMが存在しない関係を推論します

8層の防御

Entity Enricher は単一の手法に依存しません。それぞれ異なる障害モードを対象とする 8 つの独立した防御レイヤーを積み重ねています。あるレイヤーがハルシネーションを見逃しても、次のレイヤーが捉えます。

1
事前 classification

エンリッチメントを開始する前に、高速なLLMがentityがschemaの型に一致するかを分類します。これにより、entity全体のハルシネーションを発生源で防ぎます。

例: 「Planet」スキーマに対する「Titan」は衛星としてフラグが立てられます。エンリッチメントモデルはこのコンテキストを受け取り、惑星固有のフィールドにはnullを使用します。

2
Null許容フィールドと保守的なprompt

すべての戦略はLLMに次のように指示します:「正確かつ控えめに — 推測するよりnullを優先してください。」Null許容のスキーマフィールドは、モデルに「わかりません」と明示的に言う許可を与えます。

これはスキーマプレッシャー(構造化ハルシネーションの最大の原因)に直接対処します。

3
専門領域のスコープ設定

スキーマのプロパティは専門ドメインごとにグループ化されます。各 LLM 呼び出しは自身のドメイン内のフィールドのみを参照し、その領域のみに集中するよう指示されます。

スコープが狭いほど、ハルシネーションの余地が減ります。金融の専門家が規制データについて推測することはありません。

4
検索キーのフォーカス中

キープロパティ(is_key: true が設定されたもの)はプロンプト内で強調表示され、他のフィールドを埋める前にLLMが識別情報に焦点を合わせられるようにします。

これによりモデルが既知の事実に基づくようになり、捏造された詳細へのドリフトが軽減されます。

5
スキーマ検証と自己修正

8つの検証ルールが、LLMの出力を型の不一致、無効な参照、構造的エラーについてチェックします。検証に失敗するとModelRetryがトリガーされ、エラーが修正のためLLMに送り返されます。

1 回のエージェント実行内で最大 6 回の自動修正を行います。LLM が自身の誤りを修正します。

6
ロジックを保持

preserve: true とマークされたフィールド(ID、SKU、タイムスタンプ)は、enrichment後に元の入力値へ復元されます。LLMが正しい真値データを上書きすることはできません。

保護されたフィールド: エンティティID、システムコード(EAN、SKU)、インポート識別子、作成タイムスタンプ。

7
マルチモデルコンセンサス

同じエンティティを2つ以上の独立したモデルに通し、出力をフィールドごとに比較します。不一致は潜在的なハルシネーションとしてフラグが立てられます。

Claudeが収益を23億ドルと述べ、GPT-4が18億ドルと述べた場合 — その矛盾は検出され、明示されます。

8
コンフリクトの解決とアービトレーション

検出された競合は、ルールベースの投票(多数決、中央値、和集合)または、正確性・網羅性・一貫性を評価する専用の LLM arbitration によって解決されます。

各 arbitration の判断には根拠と信頼度が含まれ、競合がどのように解決されたかを完全に透明化します。

防御パイプライン

1事前 classification誤ったエンティティタイプをブロック
2Null許容 + 保守的なpromptschemaの負荷を軽減
3専門領域のスコープ設定LLM が回答すべき範囲を絞り込む
4検索キーのフォーカス識別子を基準にする
5検証と自己修正構造エラーを修正
6ロジックを保持グラウンドトゥルースを保護
7マルチモデルコンセンサス不一致を検出
8コンフリクトのアービトレーション推論による解決
enrichment 前
エンリッチメント中
enrichment 後

デザイン哲学

基本原則

データの欠落は、誤ったデータよりも常に望ましいものです。すべての層がこの原則を強化しており、システムはもっともらしい捏造を返すのではなく、null を返すように設計されています。

Entity Enricherの機能
  • LLM に null を返すことを明示的に許可します
  • 複数の独立したmodelでクロス検証します
  • 既知の正しいデータが上書きされるのを防ぎます
  • 競合解決を完全に可視化します
一般的なツールの動作
  • 何があってもLLMにすべてのフィールドを埋めさせる
  • クロス検証なしで単一モデルに依存します
  • LLMに入力データを自由に上書きさせる
  • 監査証跡のないブラックボックスとして結果を返します