Salta al contenuto principale

Generazione Aumentata da Recupero per Compiti NLP ad Alta Intensità di Conoscenza

6 minuti di letturaMike ThriftMike Thrift
Generazione Aumentata da Recupero per Compiti NLP ad Alta Intensità di Conoscenza

L'articolo di Lewis et al., "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" (NeurIPS 2020), è probabilmente il singolo documento più responsabile di come i sistemi AI di produzione sono progettati oggi. A cinque anni dalla pubblicazione, rimane il punto di riferimento rispetto al quale viene misurato quasi ogni sistema linguistico basato su documenti. Lo sto leggendo ora perché tutto nel mio arretrato di Bean Labs — dal QA sui registri alla spiegazione delle anomalie — incontra prima o poi il problema del recupero, e voglio comprendere chiaramente le decisioni progettuali originali prima di passare ai suoi successori.

L'articolo

Il problema centrale che RAG affronta è che i modelli linguistici pre-addestrati cuociono la conoscenza nei pesi al momento dell'addestramento, rendendo tale conoscenza statica, opaca e impossibile da aggiornare senza riaddestramento. Lewis et al. propongono un'architettura ibrida: una memoria parametrica (BART-large come generatore) abbinata a una memoria non parametrica (un indice FAISS denso su 21 milioni di passaggi di Wikipedia), collegata da un recuperatore appreso basato sul Dense Passage Retrieval (DPR, Karpukhin et al. 2020). Al momento dell'inferenza, il modello recupera i primi K passaggi rilevanti, quindi li marginalizza per produrre l'output finale.

L'articolo introduce due varianti. RAG-Sequence recupera una volta e utilizza lo stesso insieme di documenti per l'intera sequenza generata — più coerente ma meno adattivo. RAG-Token consente al modello di prestare attenzione a un documento recuperato diverso a ogni passo di generazione, permettendogli di sintetizzare informazioni da più fonti a metà frase. Entrambe le varianti apprendono il recuperatore e il generatore congiuntamente durante la messa a punto, sebbene il codificatore di documenti sia congelato per evitare il costo di ricostruire l'indice FAISS durante l'addestramento.

Idee chiave

  • RAG-Sequence raggiunge un Exact Match di 44.5 su Natural Questions, 56.8 EM su TriviaQA e 68.0 EM su WebQuestions — stato dell'arte al momento della pubblicazione
  • Su MS-MARCO abstractive QA, RAG-Sequence ottiene un ROUGE-L di 40.8 contro 38.2 per una baseline solo BART — modesto ma coerente
  • Generazione di domande da Jeopardy: i valutatori umani hanno giudicato gli output RAG più fattuali di BART nel 42.7% dei casi (BART più fattuale nel 7.1%)
  • Su FEVER fact verification, RAG raggiunge un'accuratezza a 3 vie del 72.5% (4.3 punti al di sotto dello SOTA specializzato) senza alcuna ingegneria specifica per il compito
  • Congelare il codificatore di documenti durante l'addestramento costa solo circa 3 punti EM su NQ (44.0 → 41.2), rendendo l'approccio computazionalmente fattibile a scapito della conoscenza dell'indice obsoleto
  • Il recupero denso supera BM25 in tutti i compiti tranne FEVER, dove le query incentrate su entità favoriscono la sovrapposizione di termini — un segnale concreto che il recupero sparso non è uniformemente inferiore

Cosa regge — e cosa no

L'intuizione fondamentale — separare il deposito di conoscenza dal motore di ragionamento — è invecchiata molto bene. Fornisce conoscenza aggiornabile (basta reindicizzare), attribuzione della fonte (i passaggi recuperati sono ispezionabili) e si generalizza attraverso QA a dominio aperto, generazione e verifica dei fatti senza architetture specifiche per compito. Queste proprietà contano ancora più in pratica dei numeri specifici di Exact Match.

I revisori del NeurIPS avevano ragione sul fatto che la novità tecnica è limitata. DPR e BART esistevano già; RAG è un'integrazione attenta, non un avanzamento algoritmico fondamentale. La decisione del codificatore di documenti congelato crea anche un problema sottile che l'articolo sorvola in parte: l'indice viene costruito una volta e diventa un'istantanea. Qualsiasi fatto che cambi dopo la costruzione dell'indice è invisibile al modello. Per corpora statici come le dichiarazioni SEC questo è accettabile. Per sistemi in tempo reale — prezzi in tempo reale, flussi di transazioni giornalieri — è un vincolo architettonico genuino, non un dettaglio minore.

La scoperta del collasso del recupero merita più attenzione di quanta ne riceva. Sui compiti di generazione di storie, il modello ha imparato a ignorare completamente i documenti recuperati e a generare dalla memoria parametrica. L'articolo nota che questo accade quando il compito non "richiede conoscenza specifica" ma non spiega il meccanismo né fornisce ai professionisti un modo principiato per rilevarlo. Un agente che smette silenziosamente di recuperare pur apparendo funzionare normalmente è esattamente la modalità di fallimento che mi preoccupa nei sistemi finanziari di produzione.

Anche l'impronta di memoria non è trascurabile: il solo indice di Wikipedia richiede circa 100 GB di RAM CPU. L'articolo presenta questo come una caratteristica (la memoria non parametrica è "veloce da aggiornare") ma è un costo operativo reale che ha plasmato come la tecnica si è evoluta — verso indici compressi e recupero approssimato — negli anni successivi.

Perché questo è importante per l'AI finanziaria

L'architettura di recupero si adatta naturalmente alla struttura del problema di Beancount. Un registro Beancount è un vasto corpus di documenti solo-append in cui le singole voci sono collegate semanticamente: una spesa deducibile dalle tasse fa riferimento a una categoria, una categoria fa riferimento a una regola, una regola fa riferimento a un anno fiscale. Nessun modello parametrico addestrato su dati pubblici conosce il piano dei conti specifico di un utente. La separazione di RAG tra ragionamento e conoscenza lo rende la risposta strutturale corretta: mettere a punto il generatore sui formati dei compiti contabili, ma basare le ricerche fattuali nell'indice del registro effettivo dell'utente.

La preoccupazione pratica è la stessa che l'articolo identifica ma sottovaluta: gli indici obsoleti. Se un agente Beancount recupera da un indice costruito ieri, potrebbe perdere le transazioni di oggi. L'indicizzazione incrementale e la reindicizzazione attivata dalle scritture sul registro devono far parte del progetto del sistema fin dall'inizio, non essere aggiunte successivamente. L'altra preoccupazione è la precisione del recupero su dati strutturati. RAG è stato progettato per la prosa di Wikipedia. Un registro Beancount ha intervalli di date, gerarchie di conti e denominazioni di valuta che i recuperatori ottimizzati per la prosa non gestiscono nativamente. La domanda "i LLM possono ragionare su dati tabulari" che ho esplorato in precedenza limita direttamente ciò che RAG può recuperare utilmente.

Cosa leggere dopo

  • Fusion-in-Decoder (FiD), Izacard & Grave 2020 (arXiv:2007.01282) — elabora indipendentemente ogni passaggio recuperato e li fonde nel decodificatore, raggiungendo punteggi NQ più alti di RAG pur essendo architetturalmente più semplice; vale la pena di capirlo prima di adottare l'approccio di lettura congiunta di RAG-Token
  • FLARE: Active Retrieval Augmented Generation, Jiang et al. 2023 (arXiv:2305.06983) — recupera su richiesta durante la generazione prevedendo quando il modello sta per allucinare; l'estensione più naturale delle idee di RAG verso agenti più adattivi
  • "Fine-Tuning or Retrieval?" Ovadia et al. 2023 (arXiv:2312.05934) — confronto sistematico dei metodi di iniezione della conoscenza tra compiti diversi; le prove empiriche necessarie prima di decidere se mettere a punto un generatore specifico per registri o semplicemente migliorare il recupero

Condividi questo articolo