SubQuestionQueryEngine (Întrebări Comparative Complexe) în LlamaIndex & Data RAG

Descompune o întrebare complexă sau comparativă în mai multe sub-întrebări simple, le execută în paralel pe indecși diferiți și sintetizează răspunsul final.

Sintaxă & invocare Python
from llama_index.core.query_engine import SubQuestionQueryEngine

qe_comparativ = SubQuestionQueryEngine.from_defaults(
    query_engine_tools=[tool_raport_2024, tool_raport_2025]
)
raspuns = qe_comparativ.query('Cum a evoluat profitul net și numărul de angajați între 2024 și 2025?')

Descriere & Utilizare

Dacă întrebi un RAG clasic ‘Care este diferența dintre veniturile din 2024 și cele din 2025?’, o singură căutare vectorială cu această frază poate rata cifrele exacte din ambele rapoarte anuale.

SubQuestionQueryEngine abordează problema ca un analist uman: sparge întrebarea principală într-un plan de sub-întrebări punctuale:

1. ‘Care a fost profitul net în 2024?’ -> trimis către tool_raport_2024

2. ‘Care a fost profitul net în 2025?’ -> trimis către tool_raport_2025

3. ‘Câți angajați erau în 2024 vs 2025?’

După ce primește răspunsurile individuale la toate sub-întrebările, le adună într-un context comun și redactează analiza comparativă completă.

Cum să o reții ușor

💡 Ca un redactor-șef care pregătește un articol comparativ despre două orașe: trimite câte un reporter în fiecare oraș cu o listă clară de întrebări, iar când ambii se întorc cu cifrele, scrie tabelul comparativ.

Opțiuni și parametri tehnici

  • Folosește un QuestionGenerator bazat pe LLM pentru a emite o listă structurată de SubQuestion(sub_question, tool_name).
  • Execută toate sub-întrebările asincron în paralel (dacă use_async=True).
  • Trimite perechile (sub-întrebare, răspuns) către sintetizatorul final.

Exemple practice și cazuri de utilizare

  • Analiză concurențială: compararea ofertelor tehnice de la 3 furnizori diferiți încărcați în 3 indecși separați.
  • Inspecția sub-întrebărilor generate: în consolă (sau în raspuns.source_nodes) poți vedea exact ce sub-întrebări a gândit modelul.

Sfaturi de configurare & capcane

Pentru că lansează mai multe interogări interne pentru o singură întrebare a utilizatorului, asigură-te că rulezi cu use_async=True pentru ca sub-întrebările să se execute simultan, nu una după alta.

Comenzi și ghiduri înrudite