AI・機械学習
中級

LLM Semantic Router(エルエルエムセマンティックルーター)

LLM Semantic Router(セマンティックルーター)とは、ユーザークエリの意味的内容をベクトル埋め込みで分類し、適切な処理パス(モデル・ツール・ワークフロー)へ高速に振り分ける仕組みである。LLM を呼び出さずにルーティング判定を行うため、レイテンシ 1-5ms で動作する。

0 回閲覧
0 いいね

LLM Semantic Router は、テキスト入力をベクトル埋め込みに変換し、事前定義されたルート(意図カテゴリ)との類似度に基づいてリクエストを振り分ける軽量なルーティングレイヤーである。Aurelio AI が開発した Semantic Router ライブラリが代表的な実装で、2026年時点で GitHub Stars 2,000 以上を獲得している。

概要

従来の LLM ベースの意図分類は、クエリを LLM に投げて「このクエリはどのカテゴリですか?」と判定させていた。この方式は精度は高いが、LLM 呼び出しに 200ms-2s かかり、API コストも発生する。セマンティックルーターは、小型の埋め込みモデル(OpenAI text-embedding-3-small: 62,500 tokens/$1、Cohere embed-v3 等)でクエリをベクトル化し、事前定義されたルートベクトルとのコサイン類似度で分類する。判定は純粋なベクトル演算のため 1-5ms で完了し、API コストもほぼゼロ。

アーキテクチャ

コンポーネント構成

コンポーネント役割例
Encoderテキスト→ベクトル変換OpenAI text-embedding-3-small / Cohere embed-v3 / ローカル E5-Mistral
Route Layerルート定義・類似度計算Semantic Router RouteLayer
Routes意図カテゴリ定義Route("billing", utterances=["請求について", "料金を知りたい"])
Decision Function閾値判定コサイン類似度 > 0.82 で確定、未満は fallback

ルート定義の例

from semantic_router import Route, RouteLayer
from semantic_router.encoders import OpenAIEncoder

billing = Route(
    name="billing",
    utterances=[
        "請求書を確認したい",
        "料金プランを変更したい",
        "支払い方法を更新したい",
        "今月の利用料金はいくらですか",
    ],
)

technical = Route(
    name="technical",
    utterances=[
        "エラーが発生しました",
        "接続できません",
        "パフォーマンスが低下しています",
        "バグを報告したい",
    ],
)

encoder = OpenAIEncoder(name="text-embedding-3-small")
rl = RouteLayer(encoder=encoder, routes=[billing, technical])

result = rl("先月の請求額を教えてください")
# result.name == "billing"

LLM ルーティングへの応用

セマンティックルーターは単なる意図分類器ではなく、LLM のモデル選択・ツール呼び出し・ワークフロー制御に応用できる。

モデル選択ルーティング

  • Route("simple") → GPT-4o-mini で応答
  • Route("complex_reasoning") → Claude 4 Opus で応答
  • Route("code_generation") → Claude 4 Sonnet で応答
  • Route("multilingual") → GPT-4o で応答

ツール呼び出し制御

  • Route("web_search") → Tavily / Exa で検索実行
  • Route("code_execution") → サンドボックスでコード実行
  • Route("database_query") → SQL 生成→DB 実行
  • Route("image_generation") → DALL-E / Stable Diffusion 呼び出し

ガードレール

  • Route("jailbreak") → リクエスト拒否
  • Route("pii_detected") → PII マスキング処理
  • Route("off_topic") → 「対応範囲外です」応答

性能ベンチマーク

方式分類精度レイテンシコスト (1M クエリ)
Semantic Router (text-embedding-3-small)92-95%1-5ms$1.00
LLM 分類 (GPT-4o-mini)95-98%200-500ms$15.00
LLM 分類 (GPT-4o)97-99%500-2000ms$250.00
ルールベース (キーワード)75-85%<1ms$0

よくある質問(FAQ)

Q1: ルートの utterance は何件くらい用意すべきですか? A: 1ルートあたり 5-20 件が推奨。5件未満だとカバレッジ不足で誤分類が増え、20件以上でも精度向上は限定的。多様な表現バリエーション(敬語/カジュアル/略語/英語混じり)を含めることが重要。

Q2: 新しいルートを追加するとき再トレーニングは必要ですか? A: 不要。utterance のベクトルを追加計算して RouteLayer に登録するだけで即座に有効になる。ダウンタイムゼロで動的にルート追加・削除が可能。

Q3: セマンティックルーターと LLM 分類器を併用する構成はありますか? A: 推奨構成として、セマンティックルーターで高信頼度(類似度 0.85 以上)のクエリを即座に振り分け、低信頼度のクエリのみ LLM 分類器にフォールバックする 2 段構成がある。全体の 80-90% をセマンティックルーターで処理し、残りを LLM で判定することで、精度とコストの両立が可能。

まとめ

  • セマンティックルーターはベクトル類似度ベースの軽量意図分類器
  • LLM を呼び出さずに 1-5ms で判定完了、API コストほぼゼロ
  • モデル選択・ツール呼び出し・ガードレールに応用可能
  • Semantic Router ライブラリ(Aurelio AI)が OSS で最も成熟
  • LLM 分類器とのハイブリッド構成で精度 97%+ とコスト最小化を両立