Ce este Corrective RAG (CRAG)?

Metoda (Yan et al., 2024) care evaluează documentele regăsite, le rafinează când sunt relevante și caută pe web când sunt irelevante.

Denumire completă

CRAG – evaluator de regăsire → Correct (rafinare) / Incorrect (căutare web) / Ambiguous (ambele)

RAG depinde de relevanța documentelor regăsite: dacă regăsirea greșește, generarea pornește de la date proaste. Corrective Retrieval Augmented Generation (Yan, Gu, Zhu și Ling, 2024) adaugă un evaluator de regăsire ușor, care dă un grad de încredere pentru documentele găsite. În lucrare, evaluatorul este un T5-large ajustat (fine-tuned), mult mai mic decât LLM-urile obișnuite.

Pe baza scorurilor și a două praguri, unul superior și unul inferior, se declanșează o acțiune. Correct: cel puțin un document depășește pragul superior; documentele trec prin rafinare (decompose-then-recompose): sunt împărțite în fâșii de cunoștințe (knowledge strips), fiecare fâșie este punctată de evaluator, cele irelevante sunt eliminate, iar restul se concatenează în ordine. Incorrect: toate documentele sunt sub pragul inferior; sunt eliminate și se face o căutare web. Ambiguous: în rest; se combină cunoștințele interne rafinate cu cele de pe web.

Pentru căutarea web, intrarea este rescrisă de ChatGPT în interogări din cuvinte cheie; autorii au folosit Google Search API, au preferat pagini de autoritate precum Wikipedia și au aplicat aceeași rafinare pe conținutul paginilor. CRAG este plug-and-play: lucrarea îl combină cu RAG standard și cu Self-RAG (Self-CRAG) și raportează îmbunătățiri pe patru seturi de date, cu generare scurtă și lungă.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
Retrieval evaluator T5-large ajustat; scor de încredere pentru fiecare document și, la rafinare, pentru fiecare fâșie.
Prag superior / inferior Hiperparametri aleși de autori; lucrarea nu dă valori universale.
Correct Cel puțin un document peste pragul superior → rafinare.
Incorrect Toate documentele sub pragul inferior → documentele se elimină, urmează căutarea web.
Ambiguous Restul cazurilor → cunoștințe interne rafinate + cunoștințe de pe web.
Knowledge refinement Decompose-then-recompose: fâșii, filtrare, recompunere în ordine.

Exemple practice și scenarii reale

Exemplul 1: Fluxul de decizie CRAG, după lucrare

Pseudocod; pragurile se calibrează pe date etichetate.

documente = retrieve(intrebare)
scoruri = [evaluator(intrebare, d) for d in documente]

if max(scoruri) > PRAG_SUPERIOR:                  # Correct
    cunostinte = rafinare(documente)
elif all(s < PRAG_INFERIOR for s in scoruri):     # Incorrect
    cunostinte = cautare_web(cuvinte_cheie(intrebare))
else:                                             # Ambiguous
    cunostinte = rafinare(documente) + cautare_web(cuvinte_cheie(intrebare))

raspuns = llm(intrebare, cunostinte)

Greșeli frecvente și capcane

  • Să copiezi praguri „standard” (de exemplu 0,7 și 0,3). Lucrarea nu dă valori universale; calibrează-le pe date etichetate din domeniul tău.
  • Să trimiți pagini web brute în prompt. CRAG aplică pe rezultatele web aceeași rafinare pe fâșii ca pe documentele interne.
  • Să ignori costul căutării web. Fiecare caz Incorrect sau Ambiguous adaugă rescrierea interogării, un apel de căutare și descărcarea paginilor.

Noțiuni și module înrudite