Strategia dekompozycji na podzapytania
W przypadku złożonych pytań wieloetapowych podziel je na podzapytania, odpowiedz na każde z nich, a następnie utwórz końcową odpowiedź.
Strategia dekompozycji na podzapytania to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Gdy single-hop zawodzi
Niektóre pytania wymagają wielu wyszukiwań:
„Porównaj przychody firmy Apple w 2022 roku i Microsoft w 2023 roku.”
Jedno wyszukiwanie podobieństwa nie znajdzie obu faktów; potrzebne są DWA podzapytania.
Dekompozycja na podzapytania
LlamaIndex SubQuestionQueryEngine dzieli pytanie na podzapytania, odpowiada na każde z nich, a następnie tworzy syntezę odpowiedzi:
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')Jak to działa
- LLM analizuje pytanie
- LLM generuje podzapytania i przypisuje każde z nich do narzędzia
- Każde podzapytanie jest wykonywane równolegle
- LLM tworzy końcową odpowiedź na podstawie odpowiedzi na podzapytania
Widoczność podzapytań
Można wyświetlić podzapytania wygenerowane przez silnik:
response = engine.query('Compare X and Y')
for sq in response.metadata.get('sub_qa', []):
print(sq.sub_q.sub_question, '->', sq.answer)Kiedy używać podzapytań
- Zapytania porównawcze (X vs Y)
- Agregowanie danych z wielu źródeł
- Pytania dotyczące wielu odrębnych faktów
Kiedy NIE używać
- Proste pytania i odpowiedzi — zwiększają opóźnienie i koszty
- Kontekst obejmujący jeden dokument
- Zadania, w których dekompozycja nie przynosi korzyści
Kierowanie za pomocą LLM
Sub-Question Engine można połączyć z RouterQueryEngine, aby najpierw zdecydować, do których kolekcji indeksów w ogóle kierować zapytania:
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.Podzapytania dla agentów programujących
W przypadku agentów piszących kod podzapytania pomagają zaplanować kolejne kroki:
„Zbuduj REST API” → podzadanie: zaprojektować modele, podzadanie: napisać procedury CRUD, podzadanie: dodać uwierzytelnianie.
Wpływ na koszty
Podzapytania powodują wykonanie N podzapytań zamiast jednego. Każde z nich obejmuje wywołanie LLM i wyszukiwanie. Należy odpowiednio zaplanować budżet — koszt jest 3–4 razy wyższy niż w przypadku single-hop.
W porównaniu z ReAct
Podzapytania oznaczają planowanie z wyprzedzeniem. ReAct (omówiony w następnym kursie) działa krok po kroku. W przypadku zapytań, które można z góry zdekomponować, podzapytania są szybsze; w zadaniach eksploracyjnych lepiej dostosowuje się ReAct.
Połączenie: ReAct + narzędzia podzapytań
Najbardziej elastyczne rozwiązanie to agent ReAct, w którym silniki podzapytań są narzędziami — każde „wywołanie narzędzia” może samo rozłożyć zadanie na wiele podzapytań.
Ocena jakości podzapytań
Należy sprawdzać, czy LLM generuje sensowne podzapytania. Bez analizowania śladów trudno debugować błędną dekompozycję.
Zastosowanie dekompozycji
W przypadku jakiego rodzaju pytania dekompozycja na podzapytania jest najbardziej przydatna?
Podsumowanie
Dekompozycja na podzapytania zamienia jedno złożone zapytanie na kilka prostych — przy wyższym koszcie, ale znacznie większej dokładności w przypadku pytań porównawczych i pytań wymagających danych z wielu źródeł.
Często zadawane pytania
Czy lekcja „Strategia dekompozycji na podzapytania” jest bezpłatna?
Tak — pełny tekst „Strategia dekompozycji na podzapytania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Strategia dekompozycji na podzapytania”?
W przypadku złożonych pytań wieloetapowych podziel je na podzapytania, odpowiedz na każde z nich, a następnie utwórz końcową odpowiedź. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Strategia dekompozycji na podzapytania”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Loadery i parsery dokumentów
- Hierarchia indeksów: wektorowy, drzewa, słów kluczowych
- Silniki zapytań i synteza odpowiedzi
- Strategia dekompozycji na podzapytania