0Pricing
AI Agents · Lekcja

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

  1. LLM analizuje pytanie
  2. LLM generuje podzapytania i przypisuje każde z nich do narzędzia
  3. Każde podzapytanie jest wykonywane równolegle
  4. 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

  1. Loadery i parsery dokumentów
  2. Hierarchia indeksów: wektorowy, drzewa, słów kluczowych
  3. Silniki zapytań i synteza odpowiedzi
  4. Strategia dekompozycji na podzapytania
← Powrót do AI Agents