Stratégie de décomposition en sous-questions
Pour les questions complexes à plusieurs étapes, divisez-les en sous-questions, répondez à chacune, puis composez la réponse finale.
Stratégie de décomposition en sous-questions est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
Quand une requête à un seul saut échoue
Certaines questions nécessitent plusieurs recherches :
« Comparez le chiffre d’affaires d’Apple en 2022 et celui de Microsoft en 2023. »
Une seule recherche par similarité ne récupérera pas les deux faits ; vous avez besoin de DEUX sous-requêtes.
Décomposer une question en sous-questions
LlamaIndex SubQuestionQueryEngine divise une question en sous-questions, répond à chacune, puis synthétise les réponses :
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')Fonctionnement
- Le LLM analyse la question
- Le LLM génère des sous-questions et attribue chacune à un outil
- Chaque sous-question est traitée en parallèle
- Le LLM synthétise une réponse finale à partir des réponses aux sous-questions
Afficher les sous-questions
Vous pouvez voir les sous-questions générées par le moteur :
response = engine.query('Compare X and Y')
for sq in response.metadata.get('sub_qa', []):
print(sq.sub_q.sub_question, '->', sq.answer)Quand utiliser les sous-questions
- Requêtes de comparaison (X par rapport à Y)
- Agrégation de plusieurs sources
- Questions comportant plusieurs faits distincts
Quand NE PAS les utiliser
- Questions-réponses simples — ajoute de la latence et des coûts
- Contexte limité à un seul document
- Tâches qui ne bénéficient pas d’une décomposition
Routage avec un LLM
SubQuestionQueryEngine s’associe à RouterQueryEngine pour décider d’abord quelles collections d’index interroger :
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.Sous-questions pour les agents de programmation
Pour les agents qui écrivent du code, une sous-question permet de planifier les étapes :
« Créer une API REST » → sous-tâche : concevoir les modèles, sous-tâche : écrire les gestionnaires CRUD, sous-tâche : ajouter l’authentification.
Conséquences sur les coûts
Les sous-questions produisent N sous-requêtes au lieu d’une seule. Chacune implique un appel au LLM et une récupération. Prévoyez votre budget : le coût est 3 à 4 fois supérieur à celui d’une requête à un seul saut.
Comparaison avec ReAct
Les sous-questions correspondent à une planification préalable. ReAct (dans le prochain cours) procède étape par étape. Pour les requêtes dont la décomposition est connue, les sous-questions sont plus rapides ; pour les tâches exploratoires, ReAct s’adapte mieux.
Combinaison : ReAct + outils de sous-questions
La solution la plus flexible consiste à utiliser un agent ReAct dont les moteurs de sous-questions sont des outils — chaque « appel d’outil » peut lui-même être décomposé en plusieurs sous-requêtes.
Évaluer la qualité des sous-questions
Vérifiez si le LLM génère des sous-questions pertinentes. Une mauvaise décomposition est difficile à déboguer sans inspecter les traces.
Cas d’utilisation de la décomposition
Pour quel type de question la décomposition en sous-questions est-elle la plus utile ?
Récapitulatif
La décomposition en sous-questions transforme une requête complexe en plusieurs requêtes simples — pour un coût plus élevé, mais une précision nettement supérieure dans les questions de comparaison et les questions faisant appel à plusieurs sources.
Questions Fréquemment Posées
La leçon « Stratégie de décomposition en sous-questions » est-elle gratuite ?
Oui — le texte complet de « Stratégie de décomposition en sous-questions » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Stratégie de décomposition en sous-questions » ?
Pour les questions complexes à plusieurs étapes, divisez-les en sous-questions, répondez à chacune, puis composez la réponse finale. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Agents ?
Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Stratégie de décomposition en sous-questions » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?
Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Chargeurs et analyseurs de documents
- Hiérarchie des index : vectoriel, arborescent, par mots-clés
- Moteurs de requêtes et synthèse des réponses
- Stratégie de décomposition en sous-questions