NodePostprocessor & Reranking (CohereRerank / BGE-Reranker) în LlamaIndex & Data RAG

Interogare & RAG Avansat Nivel: avansat

Etapa de rafinare care preia cele 15-20 de pasaje găsite rapid de baza vectorială, le reevaluează profund cu un model Cross-Encoder și păstrează doar cele mai bune 3-5.

Sintaxă & invocare Python
from llama_index.core.postprocessor import SimilarityPostprocessor
from llama_index.postprocessor.flag_embedding_reranker import FlagEmbeddingReranker

reranker = FlagEmbeddingReranker(model='BAAI/bge-reranker-large', top_n=3)
qe = index.as_query_engine(
    similarity_top_k=15,
    node_postprocessors=[reranker]
)

Descriere & Utilizare

Căutarea vectorială (Bi-Encoder) este extrem de rapidă deoarece compară pre-calculat doi vectori independenți, însă această compresie pierde nuanțele fine dintre întrebare și document.

Tehnica standard pentru RAG de înaltă precizie este Two-Stage Retrieval (Extragere în două trepte):

1. Extragi un număr generos de candidați din index (ex: similarity_top_k=15 sau 20).

2. Îi treci printr-un Reranker (Cross-Encoder) – cum este CohereRerank sau modelul gratuit local BAAI/bge-reranker-v2-m3 – care citește simultan întrebarea și fiecare pasaj cuvânt cu cuvânt, acordând un scor exact de relevanță și păstrând doar primele top_n=3 sau 5 noduri pentru LLM.

Cum să o reții ușor

💡 Ca procesul de recrutare la o companie: mai întâi un filtru rapid selectează 20 de CV-uri din 10.000 după cuvinte cheie (Retriever), iar apoi un manager tehnic îi intervievează în detaliu pe cei 20 și îi alege pe cei mai buni 3 (Reranker).

Opțiuni și parametri tehnici

  • Intervine în pipeline după Retriever și înainte de ResponseSynthesizer.
  • Evaluează perechile (query, node_text) prin atenție încrucișată (Cross-Attention).
  • Poate fi înlănțuit cu SimilarityPostprocessor(similarity_cutoff=0.7) pentru a arunca complet rezultatele sub un anumit prag.

Exemple practice și cazuri de utilizare

  • Filtru simplu de prag fără model extern: qe = index.as_query_engine(node_postprocessors=[SimilarityPostprocessor(similarity_cutoff=0.75)])
  • Reranking comercial prin API: from llama_index.postprocessor.cohere_rerank import CohereRerank
    reranker = CohereRerank(api_key='...', top_n=4)

Sfaturi de configurare & capcane

Adăugarea unui Reranker este adesea cea mai eficientă optimizare pe care o poți aduce unui sistem RAG: crește dramatic acuratețea și scade costul LLM-ului deoarece trimiți în prompt doar 3-4 fragmente ultra-relevante în loc de 15.

Comenzi și ghiduri înrudite