コンポーネントの説明
クエリ分解コンポーネントの仕組み
クエリ分解コンポーネント
クエリ分解は、複雑な入力クエリを個別で管理可能なサブクエリに分割することで、AI駆動ワークフローの精度と効果を高めるために設計されたフローコンポーネントです。このプロセスにより、ユーザーの元の質問のあらゆる側面が対応され、より徹底的かつ正確な応答を導きます。
このコンポーネントは何をするのか?
クエリ分解コンポーネントの主な機能は、通常複雑または複数部分からなる質問を入力テキストとして受け取り、それを複数の代替クエリやサブクエリに分割することです。これらのサブクエリは、元のクエリに完全に回答するために解決すべき個々の情報要素を表します。このアプローチは、質問が幅広い場合やあいまいな場合、または複数の要素が絡み合っている場合に特に有用です。
主な特徴と入力項目
| 入力名 | 型 | 必須 | 説明 |
|---|---|---|---|
| 入力テキスト | Message | はい | 複数の代替クエリに分割したいメインテキストや質問。 |
| チャット履歴 | InMemoryChatMessageHistory | いいえ | より正確なサブクエリ生成のための文脈を提供する過去のチャットメッセージ。 |
| LLM(モデル) | BaseChatModel | いいえ | 代替クエリ生成に使用する言語モデル。 |
| 元のクエリを含める | Boolean | いいえ | 生成された代替クエリのリストに元のクエリも含めるかどうかのオプション。 |
| システムメッセージ | String | いいえ | 挙動をカスタマイズできるよう、プロンプトに追加できるシステムレベルの追加指示。 |
- 入力テキスト(必須):解析・分解するテキスト。ユーザーの主要な質問です。
- チャット履歴:(任意)利用可能な場合、過去の会話文脈を与えることで生成されるサブクエリの関連性と精度向上に役立ちます。
- LLM(モデル):(任意)分解処理に使用する大規模言語モデル(LLM)を指定でき、さまざまなAIモデルとの柔軟な統合が可能です。
- 元のクエリを含める:(上級・任意)生成されるサブクエリと一緒に元のクエリも結果に含めるか制御できます。
- システムメッセージ:(上級・任意)カスタムシステムメッセージを追加し、出力の方向付けやモデルへの追加指示が可能です。
出力
- Message:このコンポーネントは、代替クエリやサブ質問のリストを含むメッセージオブジェクトを出力します。これは、下流のAI処理ステップ(個別回答、情報検索、さらなる分析など)の入力として使用できます。
どんな時に役立つのか?
クエリ分解は、単一のクエリが複数のトピックにまたがる場合や、多段階の推論を要するような複雑なAIワークフローにおいて価値があります。クエリを分割することで、以下が可能になります:
- 複雑な質問のすべての要素に確実に対応できる
- より正確な情報検索やリトリーバルを促進できる
- AIパイプラインでモジュール的、段階的処理が可能になる
- AIが生成した回答の透明性や説明性を向上できる
活用例
- カスタマーサポート:長文の顧客問い合わせを個別の課題に分解し、より的確な対応を実現
- リサーチ支援:幅広い調査質問を具体的なサブトピックに分解し、文献検索を効率化
- 多段階推論:順次的な問題解決や計画を要するAIエージェント向けに質問を準備
サマリーテーブル
| 機能 | 説明 |
|---|---|
| 入力 | 複雑なユーザークエリ(テキスト) |
| 出力 | 代替クエリ/サブクエリのリスト(メッセージオブジェクトとして) |
| 文脈サポート | あり(チャット履歴経由) |
| モデル選択 | あり(カスタムLLM指定可能) |
| 上級オプション | 元のクエリを含める、カスタムシステムメッセージ |
クエリ分解をAIワークフローに統合することで、複雑なクエリのよりスマートかつ細やかな処理が可能となり、成果とユーザー体験の向上に繋がります。
よくある質問
- クエリ分解コンポーネントとは何ですか?
クエリ分解は、複雑で複合的なクエリを、より簡単に対応できる単純なサブクエリへと分割します。これにより、より詳細で焦点を絞った回答が可能になります。
- クエリ分解を使わないとどうなりますか?
クエリ分解は、すべてのフローで必須というわけではありません。主な用途は、カスタマーサービスボットの作成や、複雑な入力に段階を追った対応が必要な場合です。タスク分解を使用することで、詳細かつ高い関連性のある回答が得られます。使用しない場合、ボットが曖昧な回答に頼ることがあります。
- クエリエクスパンションとクエリ分解の違いは何ですか?
どちらもボットがクエリをよりよく理解するための機能です。クエリ分解は、複雑または複合的なクエリをより小さな実行可能なステップに分割します。一方、クエリエクスパンションは、不完全または不適切なクエリを補い、明確かつ完全にします。
