RAG-ul obișnuit aduce mereu un număr fix de pasaje, fie că regăsirea e necesară, fie că pasajele sunt relevante. Self-RAG (Self-Reflective Retrieval-Augmented Generation; Asai, Wu, Wang, Sil și Hajishirzi, 2023) antrenează un singur LM care caută la cerere și își critică pasajele și generarea prin tokeni speciali, numiți tokeni de reflecție.
Sunt patru tipuri: Retrieve (yes / no / continue) decide dacă se caută; IsRel (relevant / irrelevant) spune dacă pasajul ajută; IsSup (fully supported / partially supported / no support) spune dacă afirmațiile segmentului sunt susținute de pasaj; IsUse (5 până la 1) notează utilitatea răspunsului. În experimente, un segment este o propoziție.
Antrenarea folosește două modele. Un critic, antrenat parțial pe etichete obținute cu GPT-4, inserează offline tokenii de reflecție în corpusul de antrenare. Apoi generatorul învață să producă text și tokeni de reflecție dintr-un vocabular extins, deci criticul nu mai este necesar la inferență. La inferență, un beam search la nivel de segment ordonează continuările după o sumă ponderată a probabilităților tokenilor de critică; ponderile se pot ajusta fără reantrenare. Lucrarea raportează că Self-RAG (7B și 13B) depășește ChatGPT și Llama2-chat cu regăsire pe QA open-domain, raționament și verificarea faptelor.
Concepte cheie și caracteristici
| Concept / Parametru | Descriere practică |
|---|---|
Retrieve |
{yes, no, continue}: dacă trebuie căutat. Regăsirea se declanșează când probabilitatea depășește un prag. |
IsRel |
{relevant, irrelevant}: relevanța pasajului. |
IsSup |
{fully supported, partially supported, no support}: cât de susținut de pasaj este segmentul. |
IsUse |
{5, 4, 3, 2, 1}: utilitatea răspunsului. |
Critic / generator |
Criticul etichetează datele de antrenare offline; generatorul emite singur tokenii la inferență. |
Beam search pe segmente |
Alege continuarea cu cel mai bun scor: suma ponderată a probabilităților tokenilor de critică. |
Exemple practice și scenarii reale
Exemplul 1: Forma unei generări cu tokeni de reflecție
Schematic; numele și valorile tokenilor sunt cele din tabelul 1 al lucrării.
Întrebare: ...
[Retrieve=Yes] <pasaj 1> [IsRel=Relevant]
Propoziția 1 a răspunsului [IsSup=Fully Supported]
[Retrieve=Continue]
Propoziția 2 a răspunsului [IsSup=Partially Supported]
[IsUse=4]
Exemplul 2: Modelele publicate de autori pe Hugging Face
selfrag/selfrag_llama2_7b
selfrag/selfrag_llama2_13b
Greșeli frecvente și capcane
- Să crezi că Self-RAG se obține din prompt. Tokenii de reflecție sunt învățați la antrenare; un model obișnuit nu îi emite corect doar pentru că îi ceri.
- Să tratezi
IsSupca garanție. Este o predicție a modelului, nu o verificare formală; răspunsurile importante se verifică în continuare. - Să ignori controlul de la inferență. Ponderile tokenilor de critică și pragul de regăsire schimbă comportamentul fără reantrenare; ajustează-le pentru sarcina ta.