クエリ分解
クエリ分解とは、複雑で複数の要素を含むユーザーの質問を、いくつかのより単純なサブ質問に分割し、それぞれについてコンテキストを取得して、最終的な回答を構成するRAGの技術です。すべてを一度に答える1つの文章を見つけるよう検索器に求める代わりに、システムは多数の狭い質問を並行して尋ねます。
クエリ分解とは、複雑で複数の要素を含むユーザーの質問を、いくつかのより単純なサブ質問に分割し、それぞれについてコンテキストを取得して、最終的な回答を構成するRAGの技術です。すべてを一度に答える1つの文章を見つけるよう検索器に求める代わりに、システムは多数の狭い質問を並行して尋ねます。
なぜ重要なのか
実際のユーザーは雑然とした質問をします。「LCPとFCPの違いは何で、2026年のモバイルSEOにとってどちらがより重要なの?」ベクトル検索器にこのクエリを渡すと、LCPかFCPかモバイルSEOか2026年のトレンドのいずれかに関する文章が返ってきますが、4つすべてをカバーする単一の文章はめったにありません。クエリ分解は質問をサブクエリ(「LCPとは?」「FCPとは?」「LCP対FCP」「モバイルSEO Core Web Vitals 2026」)に分割し、それぞれについて個別に取得し、モデルが豊富なコンテキストから最終的な回答を組み立てられるようにします。Perplexity、Glean、Anthropicの本番環境のRAGシステムは、複雑な質問に対して何らかの形の分解を使っており、LangChainの2024年のベンチマークでは、マルチホップQAで15〜25%の精度向上が示されています。
どのように機能するのか
1. 分解器のLLM呼び出し: 小さなモデルがユーザーのクエリを受け取り、2〜5個のサブ質問を出力します。プロンプト: 「この質問に完全に答えるために必要な最小限のサブ質問に分解せよ。」
2. 並列取得: 各サブ質問が、ベクトル、ハイブリッド、またはキーワードの検索器を独立して通過します。
3. コンテキストの集約: すべてのサブ質問から取得した文章が、単一のコンテキストブロックに結合されます。
4. 最終的な回答の生成: メインモデルが元の質問と取得したすべてのコンテキストを見て、統一された回答を書きます。
5. 任意の統合ステップ: マルチホップの質問では、最終生成の前に中間ステップが部分的な回答を構成します。
バリアント
並列分解: すべてのサブ質問が同時に実行されます。高速で、各部分が独立している質問に適しています。
逐次分解(マルチホップ): 後のサブ質問が前の回答に依存します。「inblogの最大の競合のCEOは誰?」には、まず「inblogの最大の競合は誰?」に答えてから、その企業のCEOを調べる必要があります。
ステップバックプロンプティング: 分解する前に、LLMがより広いコンテキストを引き込むために、質問のより抽象的なバージョンを尋ねます。2024年にGoogle Researchによって広められました。
HyDE(Hypothetical Document Embeddings): まず仮の回答を生成し、それをエンベディングして取得します。明示的な分解に対する軽量な代替手段です。
いつ使うべきか
比較の質問: 「X対Y」「Zにはどちらが良いか」
マルチホップの推論: 「Figmaを買収した企業を創業したのは誰?」
複合的な質問: 「どのように、そしてなぜ」が1つのクエリに組み合わさったもの。
ロングテールの具体性: 単一のソースページが存在しないが、複数のページがそれぞれ一部をカバーするような稀な質問。
概念を混ぜた質問: 「韓国語のSaaSブログのためのテクニカルSEO」
いつ使うべきでないか
単純な単一事実の質問: 「フランスの首都は?」には分解は不要です。レイテンシとコストを追加するだけです。
予算に制約のあるアプリケーション: 分解は検索器の呼び出しを倍増させます。大量のチャットでは、コストへの影響は現実的です。
単一文書の回答が強力なドメイン: 法的契約、製品マニュアルなど。良い文章1つが、平凡な文章5つに勝ります。
トレードオフ
レイテンシ: すべてのサブ質問が1往復です。並列実行は助けになりますが、なくすことはできません。
検索器のコスト: ベクトル検索の呼び出しはサブ質問の数に比例して増えます。
分解器の品質: 質の悪い分解は質の悪い取得を生みます。分解器のプロンプトとモデルは、最終的な生成器と同じくらい重要です。
冗長な取得: サブ質問はしばしば重複し、同じ文章を繰り返し引き出します。重複排除が役立ちます。
よくある間違い
過剰に分解する: 単純な質問を10個のサブ質問に分割すると、トークンを浪費し、最終モデルを混乱させます。
グラウンディングなしで分解する: ソースの文章ではなくサブ回答を通すと、ハルシネーションがホップをまたいで増幅されます。
依存関係を無視する: 2つ目のステップが1つ目に依存するマルチホップの質問を並列で実行すると、誤った回答になります。
評価しない: ベンチマークがなければ、分解がベースラインの単発RAGと比べて実際に役立ったかどうか判断できません。
Sources: