クエリ分類(クエリブンルイ)
ユーザーの検索クエリや入力テキストを事前定義されたカテゴリに自動分類する自然言語処理タスク。LLMアプリケーションのルーティング、検索エンジンの意図理解、カスタマーサポートのチケット振り分けなど幅広い場面で活用される。
クエリ分類とは
クエリ分類(Query Classification)は、テキスト入力を定義済みカテゴリに振り分ける自然言語処理(NLP)の基本タスクである。検索エンジンにおける検索意図の判定(KNOW / GO / DO / BUY)、LLMアプリケーションにおけるルーティング、カスタマーサポートにおけるチケット自動振り分けなど、テキスト処理の前段として広く使われている。
分類手法の比較
| 手法 | 精度 | 速度 | コスト | 学習データ |
|---|---|---|---|---|
| ルールベース(正規表現) | 低〜中 | 最速(< 1ms) | ゼロ | 不要 |
| 機械学習(SVM/Naive Bayes) | 中 | 速い(1〜5ms) | 学習コストのみ | 1,000件〜 |
| 深層学習(BERT/RoBERTa) | 高 | 中(10〜50ms) | GPU推論コスト | 5,000件〜 |
| ベクトル類似度(Semantic Router) | 高 | 速い(5〜20ms) | 埋め込みAPIのみ | 20〜50件/カテゴリ |
| LLMゼロショット | 最高 | 遅い(200〜2000ms) | LLM API費用 | 不要 |
検索意図の4分類(KNOW / GO / DO / BUY)
Google検索の文脈では、クエリを以下の4つの意図に分類することが標準的である。
| 意図 | 説明 | 例 |
|---|---|---|
| KNOW(情報検索) | 何かを知りたい | 「RTX 5090 スペック」「NVMeとは」 |
| GO(ナビゲーション) | 特定サイト・ページへ行きたい | 「Amazon ログイン」「jisaku.com GPU比較」 |
| DO(トランザクション) | 何かを実行したい | 「Windows 11 インストール方法」「BIOS更新手順」 |
| BUY(商用) | 何かを購入したい | 「RTX 5070 Ti 最安値」「ゲーミングPC おすすめ」 |
LLMアプリケーションでの活用
チャットボットのインテント分類
ユーザー入力を「質問」「依頼」「雑談」「苦情」「フィードバック」等のインテントに分類し、適切な応答ロジックに振り分ける。
RAGシステムのクエリ前処理
検索クエリを「事実質問」「比較質問」「手順質問」「意見質問」に分類し、それぞれに最適な検索戦略(キーワード検索、セマンティック検索、ハイブリッド検索)を選択する。
マルチエージェントシステムの振り分け
入力を「コーディング」「データ分析」「文書作成」「リサーチ」に分類し、各専門エージェントに委譲する。
評価指標
| 指標 | 説明 | 目標値 |
|---|---|---|
| Accuracy | 全体の正答率 | 90%以上 |
| Precision | 各カテゴリの適合率 | 85%以上 |
| Recall | 各カテゴリの再現率 | 85%以上 |
| F1-Score | Precision/Recallの調和平均 | 85%以上 |
| Latency | 分類にかかる時間 | 用途依存 |
FAQ
Q1: カテゴリ数が多い場合はどの手法が適していますか?
A1: 50カテゴリ以下ならSemantic RouterまたはLLMゼロショットが手軽。50〜500カテゴリではBERTベースのファインチューニング分類器が精度・コストのバランスに優れる。500以上の大規模分類には階層的分類(大分類→小分類の2段階)が推奨される。
Q2: 学習データが少ない場合はどうすればよいですか?
A2: LLMゼロショット分類(学習データ不要)またはSemantic Router(カテゴリあたり20〜50件のサンプル発話)が有効。LLMで擬似学習データを生成し、それで軽量分類器をファインチューニングする「蒸留」アプローチも実用的である。
Q3: 分類結果の信頼度が低い場合はどう処理すべきですか?
A3: 信頼度閾値(例: 0.7)を設定し、閾値未満のクエリは「分類不能」として人間にエスカレーションするか、LLMに直接処理させるフォールバックルートを設ける。無理に分類するより、曖昧なケースを適切にハンドリングする方が全体の品質が向上する。