0Pricing
AI Agents · レッスン

サブクエリ分解戦略

複雑なマルチホップ質問をサブクエリに分割し、それぞれに回答してから最終回答を合成します。

「サブクエリ分解戦略」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。

単一ホップで失敗する場合

複数回の検索が必要な質問もあります:

「2022 年の Apple と 2023 年の Microsoft の売上を比較してください。」

類似度検索を 1 回行うだけでは両方の事実を取得できないため、2 つのサブクエリが必要です。

サブクエリ分解

LlamaIndex の SubQuestionQueryEngine は、質問をサブクエリに分割し、それぞれに回答してから、回答を統合します:

from llama_index.core.query_engine import SubQuestionQueryEngine
from llama_index.core.tools import QueryEngineTool, ToolMetadata

query_engine_tools = [
    QueryEngineTool(
        query_engine=apple_index.as_query_engine(),
        metadata=ToolMetadata(name='apple', description='Financial data for Apple Inc.')
    ),
    QueryEngineTool(
        query_engine=msft_index.as_query_engine(),
        metadata=ToolMetadata(name='microsoft', description='Financial data for Microsoft Corp.')
    )
]

engine = SubQuestionQueryEngine.from_defaults(query_engine_tools=query_engine_tools)
response = engine.query('Compare 2022 revenue of Apple vs 2023 revenue of Microsoft')

仕組み

  1. LLM が質問を分析します
  2. LLM がサブクエリを生成し、それぞれをツールに割り当てます
  3. 各サブクエリを並列に実行します
  4. LLM がサブクエリの回答から最終回答を統合します

サブクエリの確認

エンジンが生成したサブクエリを確認できます:

response = engine.query('Compare X and Y')
for sq in response.metadata.get('sub_qa', []):
    print(sq.sub_q.sub_question, '->', sq.answer)

サブクエリを使う場面

  • 比較クエリ(X 対 Y)
  • 複数ソースからの集約
  • 複数の異なる事実を含む質問

使わない場面

  • 単純な Q&A — 遅延とコストが増加します
  • 単一ドキュメントのコンテキスト
  • 分解してもメリットがないタスク

LLM によるルーティング

Sub-Question Engine は RouterQueryEngine と組み合わせて、まずどのインデックスの集合を検索するかを決定できます:

from llama_index.core.query_engine import RouterQueryEngine

router = RouterQueryEngine.from_defaults(query_engine_tools=query_engine_tools)
# Routes 'apple revenue' to apple index, 'msft margins' to msft, etc.

コーディングエージェントのサブクエリ

コードを書くエージェントにとって、サブクエリは手順を計画する方法です:

「REST API を構築する」→ サブクエリ:モデルを設計、サブクエリ:CRUD ハンドラーを作成、サブクエリ:認証を追加

コストへの影響

サブクエリでは、1 回ではなく N 回のサブクエリを実行します。それぞれで LLM の呼び出しと検索が発生します。予算を適切に設定してください。単一ホップの場合より 3〜4 倍高コストになります。

ReAct との比較

サブクエリは事前に計画を立てます。ReAct(次のコースで扱います)は手順を 1 つずつ進めます。あらかじめ分解できるクエリではサブクエリの方が速く、探索的なタスクでは ReAct の方が柔軟に対応できます。

組み合わせ:ReAct + サブクエリツール

最も柔軟な方法は、サブクエリエンジンをツールとして持つ ReAct エージェントです。それぞれの「ツール呼び出し」自体が、多数のサブクエリに分解できます。

サブクエリ品質の評価

LLM が適切なサブクエリを生成しているかを追跡します。トレースを確認しないと、分解の失敗をデバッグするのは困難です。

分解のユースケース

サブクエリへの分解が最も役立つのは、どのような質問でしょうか。

復習

サブクエリへの分解により、1 つの複雑なクエリを複数の単純なクエリに変換できます。コストは高くなりますが、比較や複数ソースに関する質問では精度が大幅に向上します。

よくある質問

「サブクエリ分解戦略」レッスンは無料ですか?

はい。「サブクエリ分解戦略」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。

「サブクエリ分解戦略」で何を学びますか?

複雑なマルチホップ質問をサブクエリに分割し、それぞれに回答してから最終回答を合成します。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agentsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「サブクエリ分解戦略」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Agentsレッスンでコードを書いて実行できますか?

はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ドキュメントローダーとパーサー
  2. インデックス階層:ベクトル、ツリー、キーワード
  3. クエリエンジンとレスポンス合成
  4. サブクエリ分解戦略
← AI Agentsに戻る