Silniki zapytań i synteza odpowiedzi
Silniki zapytań koordynują wyszukiwanie i syntezę za pomocą strategii takich jak refine, compact i tree_summarize.
Silniki zapytań i synteza odpowiedzi to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 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.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Silnik zapytań = wyszukiwanie + synteza
Silnik zapytań LlamaIndex ma dwa etapy:
- Retrieval — wyszukanie odpowiednich fragmentów
- Synthesis — wygenerowanie odpowiedzi na podstawie tych fragmentów
Oba etapy można konfigurować.
The Default Query Engine
query_engine = index.as_query_engine()
response = query_engine.query('What is our refund policy?')
print(response.response) # the answer
print(response.source_nodes) # the chunks usedTryby odpowiedzi
Sposób, w jaki silnik składa końcową odpowiedź z wyszukanych fragmentów:
- refine — przekazywanie fragmentów po kolei i stopniowe udoskonalanie odpowiedzi (największa dokładność, najwolniejsze działanie)
- compact — umieszczenie w kontekście jak największej liczby fragmentów przy każdym wywołaniu (domyślne)
- tree_summarize — rekurencyjne podsumowywanie
- simple_summarize — pojedyncze wywołanie ze wszystkimi fragmentami
Setting Response Mode
query_engine = index.as_query_engine(response_mode='tree_summarize')Configuring Retrieval
query_engine = index.as_query_engine(
similarity_top_k=5,
response_mode='compact'
)Własne prompty
Można wstrzyknąć własne szablony promptów:
from llama_index.core.prompts import PromptTemplate
qa_template = PromptTemplate(
'Context:\n{context_str}\n\nQuestion: {query_str}\nAnswer:'
)
query_engine.update_prompts({'response_synthesizer:text_qa_template': qa_template})Streaming Responses
query_engine = index.as_query_engine(streaming=True)
response = query_engine.query('Hello')
for token in response.response_gen:
print(token, end='', flush=True)Cytowania
Użyj CitationQueryEngine, aby uzyskać cytowania generowane przez LLM:
from llama_index.core.query_engine import CitationQueryEngine
engine = CitationQueryEngine.from_args(index, similarity_top_k=4)
response = engine.query('What is our refund policy?')
print(response.response)
for i, node in enumerate(response.source_nodes):
print(f'[{i+1}] {node.metadata}')Postprocesory
Przed syntezą można ponownie uszeregować wyszukane węzły lub je odfiltrować:
from llama_index.postprocessor.cohere_rerank import CohereRerank
rerank = CohereRerank(api_key=COHERE_KEY, top_n=3)
query_engine = index.as_query_engine(
similarity_top_k=20, # retrieve 20
node_postprocessors=[rerank] # rerank to top 3
)Metadata Filters
from llama_index.core.vector_stores import MetadataFilters, ExactMatchFilter
filters = MetadataFilters(filters=[
ExactMatchFilter(key='department', value='engineering')
])
query_engine = index.as_query_engine(filters=filters)Async Queries
response = await query_engine.aquery('What is our refund policy?')
print(response.response)Silnik czatu
Do wieloturowych rozmów z pamięcią:
chat_engine = index.as_chat_engine(chat_mode='context')
response = chat_engine.chat('What is our refund policy?')
followup = chat_engine.chat('And for opened items?')Potoki i przepływy pracy
W przypadku złożonych agentów wykonujących wiele kroków rozwiązanie LlamaIndex Workflows zapewnia sterowany zdarzeniami przepływ w stylu Pythona — podobny w założeniach do LangGraph.
Tryb odpowiedzi
Który tryb odpowiedzi jest najwolniejszy, ale zapewnia największą dokładność?
Podsumowanie
Należy skonfigurować top_k, response_mode, postprocesory i filtry metadanych, aby odpowiednio dostosować silnik zapytań. Do uzyskiwania wiarygodnych odpowiedzi warto używać CitationQueryEngine.
Ucz się AI Agents dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 60
- Lekcje
- 239
Często zadawane pytania
Czy lekcja „Silniki zapytań i synteza odpowiedzi” jest bezpłatna?
Tak — pełny tekst „Silniki zapytań i synteza odpowiedzi” 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 „Silniki zapytań i synteza odpowiedzi”?
Silniki zapytań koordynują wyszukiwanie i syntezę za pomocą strategii takich jak refine, compact i tree_summarize. Ć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 3 z 4.
Ile czasu zajmuje lekcja „Silniki zapytań i synteza odpowiedzi”?
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