事前 classification - Entity Enricher ドキュメント

事前 classification

事前 classification は、enrichment を開始する前に entity が想定される schema タイプに一致するかを検証します。この任意のステップにより、entity が schema に一致しない場合のハルシネーションやトークンの無駄を防ぎます。

エンリッチメントの前になぜclassificationするのか?

LLMは積極的に手助けしようとします。スキーマに沿ってエンティティをエンリッチするよう求められると、そのエンティティがスキーマの型にまったく合致しない場合でも構造化された出力を生成します。その結果、もっともらしく見えても完全に誤ったハルシネーションデータが生じます。

ハルシネーションの問題
分類なし

スキーマ:「Planet」— エンティティ:「Titan」

LLM は Titan を惑星として扱い、公転周期、大気組成、衛星の数といったデータを捏造します。いずれももっともらしく見えますが誤りです。Titan は実際には土星の衛星です。

classificationあり

classificationが検出します:「不一致 — Titan は惑星ではなく衛星です」

エンリッチメントモデルはこのコンテキストを受け取り、関係のないフィールドをnullに設定し、エンティティに本当に該当するプロパティのみを埋めます。

仕組み

classificationは、enrichment modelが開始される前に、単一の高速なLLM呼び出しとして実行されます。コストを最小限に抑えるため、安価で高速なmodel(Claude Haiku や GPT-4o Mini など)を使用します。

1
スキーマタイプとエンティティデータを送信します
分類モデルは、スキーマ名、説明、エンティティデータ(コストを抑えるため3,000文字に切り詰められます)を受け取ります。
2
構造化された分類を受け取る
モデルは、ステータス(一致、不一致、不明、または曖昧)、エンティティが実際に何であるかの説明、信頼度、および根拠を含む構造化された応答を返します。
3
enrichment にコンテキストを注入する
分類結果は、「Pre-flight Classification」セクションとして、すべてのエンリッチメントプロンプトの先頭に追加されます。これにより、エンリッチメントモデルにエンティティタイプに関する重要なコンテキストが提供されます。

4つのclassificationステータス

一致

エンティティはスキーマのタイプに一致しています。エンリッチメントは高い信頼度で続行されます。

promptの効果
エンティティタイプを確定し、エンリッチメントモデルに追加のコンテキストを提供します。
スキーマ「Pharmaceutical Company」、エンティティ「Sanofi」— 製薬会社であることが確認されました。
不一致

エンティティは、スキーマが想定しているものとは異なるタイプです。分類結果は、そのエンティティが実際に何であるかを説明します。

promptの効果
entity が一致しないことを enrichment の model に警告します。無関係なフィールドには null を使用するよう指示します。
スキーマ「Planet」、エンティティ「Titan」— 惑星ではなく、土星の衛星であると特定されました。
不明

エンティティを確実に識別できません。LLMには、それを分類するための十分な情報がありません。

promptの効果
enrichment model に対し、不確かな場合は推測せず null を使うよう指示します。
スキーマ「Pharmaceutical Company」、エンティティ「XYZ Corp」— エンティティの種類を判断するのに十分な情報がありません。
あいまい

複数の有効な解釈が存在します。分類には代替案が一覧表示されます。

promptの効果
考えられる解釈を列挙し、エンリッチメントモデルに最も可能性の高いものを選ばせます。
スキーマ「Company」、エンティティ「Mercury」— 惑星、元素、または Mercury Insurance の可能性があります。

キープロパティ

ノンブロッキング

classificationは純粋に補助的なものです。何らかの理由(modelエラー、タイムアウト、レート制限)でclassification呼び出しが失敗した場合でも、enrichmentはclassificationコンテキストなしで通常どおり進行します。これにより、オプションのclassificationステップがenrichmentの完了を妨げることは決してありません。

コスト効率が高い

classificationは、高速で安価なmodel上で実行されるように設計されています。最小限のペイロード(schema名、説明、および切り詰められたentityデータ)を送信し、小さな構造化レスポンスを想定しています。一般的なコストはenrichment自体のごく一部であり、精度の向上に十分見合うものです。

リアルタイムフィードバック

UIはServer-Sent Eventsを通じて分類の進行状況をリアルタイムで表示します。チェックが開始されるとclassification_startedイベントが発生し、続いてステータス、信頼度、エンティティの説明を含むclassification_completedが発生します。結果はモデル結果の上部にバナーとして表示されます。

キャンセル可能

分類フェーズ中にエンリッチメントをキャンセルすると、ジョブはエンリッチメントモデルを開始することなく直ちに停止します。無駄なトークンは消費されません。

classification を有効にするタイミング

おすすめ
  • エンティティタイプが狭いスキーマ(例:「製薬会社」)
  • 複数の entity タイプが混在する可能性のある入力データ
  • 多様なソースからのentityによるバッチエンリッチメント
  • 高コストな enrichment model を使用しており、無駄を避けたい場合
不要です
  • 任意のエンティティを受け入れる汎用スキーマ(例:「Organization」)
  • エンティティタイプを制御できる、キュレーションされた入力データ
  • 精度よりも速度が重要な、迅速な反復作業向け
  • 明確なエンティティタイプの定義がないスキーマ

有効化する方法

Schema EditorまたはBatch Enrichmentのサイドバーで、「Classification」ドロップダウンを探します。高速で低コストなモデル(Claude Haiku、GPT-4o Mini、または類似のもの)を選択します。各エンティティのエンリッチメントが始まる前に、分類が自動的に実行されます。

REST API を使用する場合、enrichment リクエストに model の複合キー(例: anthropic::claude-haiku-4-5)を指定した classification_model フィールドを含めてください。