Motorul de Interogare: index.as_query_engine() în LlamaIndex & Data RAG

Interogare & RAG Avansat Nivel: începător

Interfața principală de întrebare-răspuns peste datele indexate: combină extragerea celor mai relevante noduri (Retrieval) cu sinteza răspunsului prin LLM.

Sintaxă & invocare Python
query_engine = index.as_query_engine(
    similarity_top_k=5,
    response_mode='compact',
    streaming=True
)
raspuns = query_engine.query('Cum se configurează autentificarea?')
raspuns.print_response_stream()

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 de NodeWithScore.
  • Trece lista prin eventualele filtre node_postprocessors.
  • Trimite nodurile către ResponseSynthesizer conform strategiei response_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