エンリッチメント戦略 - Entity Enricher ドキュメント

エンリッチメント戦略

Entity Enricher は、LLM 呼び出しの調整方法を制御する 3 つのエンリッチメント戦略を提供します。適切な戦略の選択は精度・速度・コストに影響しますが、通常は選ぶ必要はありません。既定ではスキーマの構造から自動的に選択されます。

パイプライン図

最もシンプルなものから最も強力なものまでの構成です。それぞれが前の構成を土台にしています。

シンプル

シングルパス — 1モデル

1つのモデル、1回の呼び出し。スキーマ全体が単一のプロンプトで送信されます。高速かつ低コストで、シンプルなスキーマや素早い反復に最適です。

エンティティ

Aspirin

あらゆるエンティティ:企業、医薬品、訴訟案件、研究論文など。

Anthropic

独自のAPIキーで任意のLLMプロバイダーを使用できます。

Anthropic完全なスキーマ

1 回の呼び出しで完全なスキーマを取得します。検証に失敗すると自動的に再試行します。

エンリッチ結果

Aspirin

マルチモデル

シングルパス — 3モデル

同じ戦略ですが、複数のモデルにわたって並列で実行します。結果はフィールドごとに比較・アービトレーションされ、単一の高信頼度出力が生成されます。

エンティティ

Aspirin

あらゆるエンティティ:企業、医薬品、訴訟案件、研究論文など。

事前 classification

一致 — Pharmaceutical Compound

LLM credit を無駄にする前に型の不一致を検出します。

Anthropic
OpenAI
Google Gemini

独自のAPIキーを持ち込む — あらゆるLLMプロバイダーで利用できます。

Anthropic完全なスキーマ
OpenAI完全なスキーマ
Gemini完全なスキーマ

1 回の呼び出しで完全なスキーマを取得します。検証に失敗すると自動的に再試行します。

最終的なエンリッチメント結果

Aspirin

アービトレーション済み

フィールド単位での論理的な競合解決により、最終的な信頼できる結果が生成されます。

詳細設定

マルチ専門領域 — 3モデル

schema は expertise domain ごとに分割されます。各モデルは domain ごとに焦点を絞ったサブ prompt を受け取ります。結果はモデルごとにディープマージされ、その後モデル間で arbitration されます。複雑でマルチ domain の schema に対して最大の精度を実現します。

エンティティ

Aspirin

あらゆるエンティティ:企業、医薬品、訴訟案件、研究論文など。

事前 classification

一致 — Pharmaceutical Compound

LLM credit を無駄にする前に型の不一致を検出します。

Anthropic
OpenAI
Google Gemini

独自のAPIキーを持ち込む — あらゆるLLMプロバイダーで利用できます。

Anthropic
薬理学LLMプロンプト
規制LLMプロンプト
OpenAI
薬理学LLMプロンプト
規制LLMプロンプト
Gemini
薬理学LLMプロンプト
規制LLMプロンプト

スキーマはドメインごとに分割され、自己修正型プロンプトが検証失敗時にリトライします。

Anthropic 件の結果
OpenAI 件の結果
Gemini 件の結果

モデルごとの専門領域レスポンスのディープマージ。

最終的なエンリッチメント結果

Aspirin

アービトレーション済み

フィールド単位での論理的な競合解決により、最終的な信頼できる結果が生成されます。

通常は選択不要: 自動選択

ストラテジーを未設定のままにすると(API やコネクターを含むあらゆる場所での既定)、実行前にスキーマの形状から解決されます。ルールは決定的なので、同じスキーマには常に同じストラテジーが適用され、どれが選ばれたかは実行結果に報告されます。

  • 活用できる専門領域のグループ分けがない → シングルパス。分割するものがありません。
  • 領域が存在し、スキーマが中程度 → 専門領域。シングルパスとほぼ同じコストで回答をより整理できるため、デフォルトではこちらが選ばれます。
  • 十分な数の領域と十分な分量(言語数も含めて、実質的な比重を持つ領域がおおむね 3 つ以上)→ マルチ専門領域。分割することで追加の呼び出しに見合う効果が得られます。
  • バッチ実行は控えめに — バッチは含まれるエンティティの数だけファンアウトが増えるため、本当に巨大なスキーマの場合のみマルチ専門領域にエスカレーションします。

専門領域にはツール呼び出しが必要です。 この戦略は専門領域ごとに 1 つの submit 関数を宣言して動作するため、ツール呼び出しに対応していないモデルは、黙って品質を落とすのではなく、トークンを消費する前に明示的なエラーで拒否されます。

詳細比較

アスペクトシングルパス専門領域マルチ専門領域
LLM呼び出しモデルごとに1件モデルごとに 1 会話(リクエスト 2 件以上)モデルごとにN件(専門領域ごとに1件)
スキーマを送信しました1 つのプロンプトで完全なスキーマプロンプトにスキーマ全体を含め、さらにドメインごとに 1 つの submit ツール(引数はそのドメインのサブセット)を用意しますexpertise domainごとのサブセット
実行順次(1回の呼び出し)1 回の生成で、ツール呼び出しは発生した順に処理並列(すべての専門領域が同時に実行されます)
精度シンプルなスキーマに適していますシングルパスより優れています — 各ドメインがそれぞれのサブセットで検証されます高め — 焦点を絞ったプロンプトほど良い結果が得られます
速度小規模なschemaではより高速ですシングルパスに近いです並列実行は大きなスキーマでは高速になる場合があります
コスト低い(単一コールのオーバーヘッド)シングルパスとほぼ同等です — スキーマは一度だけ送信されます高い(呼び出しごとのオーバーヘッドを伴う複数回の呼び出し)
ストリーミングオールオアナッシングの結果段階的 — 送信されたドメインごとに 1 イベント段階的 — 各expertise domainの完了に合わせて結果がストリーミングされます
部分的な成功いいえ — 呼び出し全体が成功または失敗します部分的に — 失敗前に送信されたドメインは保持されますはい — 成功したエキスパティーズは保持され、失敗したものは再試行できます

各戦略を使うタイミング

シングルパスを使用する場合:

  • schema のプロパティが 15〜20 個未満である場合
  • すべてのプロパティが単一の領域に属します(例:すべて財務データ)
  • 最速かつ最安の結果を求めており、精度はそれほど重要ではありません
  • 新しいスキーマをテストし、素早く反復している場合

複数専門ドメインを使用する場合:

  • お使いのスキーマは複数の専門分野(製薬、金融、地理など)にまたがっています
  • 20 以上のプロパティを持つ複雑なスキーマがある場合
  • 精度が非常に重要で、焦点を絞った専門的なプロンプトを使いたい場合
  • 各ドメインの完了時にリアルタイムの進捗を求めています
  • 部分的な成功の処理が必要です — 失敗したものだけを再試行します

マルチ専門領域の詳細な仕組み

マルチエキスパートティ戦略は、各モデルに対して 4 つのステップからなるプロセスに従います。

1
プロパティを専門領域でグループ化

schema は再帰的に走査されます。expertise domain タグを持つ各プロパティは、同じ domain を共有する他のプロパティとグループ化されます。たとえば、revenuemarket_cap は「financial」グループに、gmp_status は「regulatory」に振り分けられます。

2
焦点を絞ったサブschemaを作成する

各 expertise グループは、そのプロパティのみを含む最小限のサブ schema になります。これにより、LLM はより小さく焦点を絞った prompt を受け取り、専門とするフィールドのみを入力すればよくなります。

3
並列実行

すべての専門領域の呼び出しは同時に実行されます。5つの専門領域を持つスキーマでは、5つのLLM呼び出しが同時に開始されます。各呼び出しが完了するたびに、その結果は蓄積された出力にディープマージされ、リアルタイムでUIにストリーミングされます。

4
部分的な失敗への対応

一部の専門分野が失敗した場合、システムは成功した専門分野からのマージ済み出力を「部分的」ステータスで返します。失敗した専門分野のみを再試行でき、新しい結果は、すでに成功した処理を繰り返すことなく既存の出力にマージされます。

マルチモデルエンリッチメントとの組み合わせ

どちらの戦略もマルチモデルエンリッチメントと組み合わせられます。複数のモデルを選択すると、各モデルが選択した戦略を独立して実行します。その結果はマルチモデルフュージョンを使ってマージし、単一の高信頼度の出力を生成できます。

例: 3つのmodelと4つのexpertise domainを持つschemaでマルチexpertiseを使用すると、合計12回のLLM呼び出し(3 model × 4 expertise)が実行されます。異なるproviderのmodelは並列で実行され、同じproviderのmodelはレート制限を守るためにキューに入れられます。