Descriere & Utilizare
Un QueryEngine primește o întrebare în limbaj natural, caută în index cele mai relevante similarity_top_k fragmente și le trimite împreună cu întrebarea către LLM pentru a redacta răspunsul final.
Parametrul crucial este response_mode, care controlează cum sunt combinate fragmentele:
– 'compact' (implicit): îndeasă cât mai multe fragmente într-un singur prompt pentru a minimiza numărul de apeluri către LLM.
– 'refine': trece secvențial prin fiecare fragment, îmbogățind răspunsul pas cu pas (ideal pentru precizie maximă).
– 'tree_summarize': construiește ierarhic un arbore de rezumate de jos în sus (ideal când întrebi lucruri generale despre tot documentul).
Cum să o reții ușor
💡 Ca un cercetător parlamentar căruia îi ceri o sinteză: el își alege pe masă cele mai relevante 5 dosare (`similarity_top_k=5`) și îți redactează pe loc nota informativă cu citate la subsol.
Opțiuni și parametri tehnici
- Apelează intern
Retriever-ul pentru a extrage lista deNodeWithScore. - Trece lista prin eventualele filtre
node_postprocessors. - Trimite nodurile către
ResponseSynthesizerconform strategieiresponse_mode.
Exemple practice și cazuri de utilizare
- Interogare simplă:
res = query_engine.query('Care e termenul de livrare?'); print(res.response) - Rezumare amplă pe 10 pasaje:
qe = index.as_query_engine(similarity_top_k=10, response_mode='tree_summarize')
Sfaturi de configurare & capcane
Dacă vrei doar să testezi ce paragrafe găsește baza de date fără să consumi tokeni pe generarea răspunsului LLM, folosește retriever = index.as_retriever(similarity_top_k=5); nodes = retriever.retrieve('întrebare').
Comenzi și ghiduri înrudite
chat-engine: Resursă asociată din acest modul.vector-store-index: Resursă asociată din acest modul.reranker-postprocessor: Resursă asociată din acest modul.