Dobbiamo dare al grande modello una "vita completa".

Anche i grandi modelli con una finestra di contesto molto lunga possono spesso "dimenticare". La "memoria" deve quindi essere gestita in modo proattivo e intelligente, proprio come un sistema operativo gestisce le risorse di un computer.

Il deficit di memoria intrinseco delle LLM e l'evoluzione delle finestre di contesto

È risaputo che le finestre di contesto delle moderne grandi modelli linguistici (LLM) sono generalmente limitate. La maggior parte dei modelli può elaborare solo migliaia o decine di migliaia di token alla volta. Ad esempio, il primo GPT-3, quando fu rilasciato, aveva una finestra di contesto di circa 2.048 token. Questa limitazione significa che, oltre una certa soglia, il modello non è più in grado di "ricordare" le interazioni precedenti o le informazioni fornite all'inizio di un dialogo.

Tuttavia, il campo sta evolvendo rapidamente. Negli ultimi tempi, alcuni modelli hanno esteso notevolmente la loro finestra di contesto, raggiungendo milioni o addirittura decine di milioni di token. Un esempio notevole è Llama 4 Scout di Meta, che afferma di poter elaborare fino a 10 milioni di token. Questa espansione è un passo significativo verso la risoluzione del problema della memoria, poiché una finestra di contesto più ampia permette al modello di accedere a una quantità maggiore di informazioni storiche direttamente durante il processo di inferenza.

L'immagine, che raffigura lo sviluppo storico delle dimensioni delle finestre di contesto delle LLM, evidenzia questa rapida progressione.

  • Nota: Il numero di token è un valore massimo approssimativo e soggetto a continui miglioramenti. "GPT-4.1" si riferisce alla versione aggiornata di GPT-4 rilasciata nell'aprile 2025, indicando un'evoluzione costante anche nei modelli più consolidati. "Scout" è una variante di Llama 4 con 17 miliardi di parametri, progettata specificamente per eccellere nella gestione di contesti estremamente lunghi, dimostrando un'attenzione mirata allo sviluppo di queste capacità.

Nonostante questi progressi, le LLM presentano ancora un "deficit di memoria" intrinseco. Le loro finestre di contesto, pur essendo estese, rimangono finite. Ciò limita fortemente la loro capacità di mantenere la coerenza e la pertinenza in interazioni multiple e a lungo termine. Per questo motivo, le moderne LLM hanno generalmente difficoltà a mantenere ricordi stabili e duraturi. Questo si rivela essere un problema significativo per molte applicazioni pratiche, poiché la memoria è un componente fondamentale per processi cognitivi complessi come la riflessione e la pianificazione, ed è un elemento indispensabile per la costruzione di sistemi di agenti autonomi.

La comprensione del funzionamento di un sistema di agente autonomo basato su LLM è cruciale in questo contesto. Una panoramica approfondita di tali sistemi può essere trovata nella pubblicazione di Lil'Log: https://lilianweng.github.io/posts/2023-06-23-agent/.

MemOS: un "sistema operativo" per la gestione della memoria delle LLM

Recentemente, l'attenzione della ricerca si è focalizzata intensamente sulla problematica della memoria nei grandi modelli. Tra le soluzioni più innovative emerse, MemOS ha attirato molta attenzione con la sua proposta rivoluzionaria.

A differenza degli approcci tradizionali, come la generazione aumentata dal recupero (RAG) che si concentra sul recupero di informazioni da basi di conoscenza esterne, o delle pure memorie parametriche che incorporano la conoscenza direttamente nei pesi del modello, MemOS adotta una prospettiva diversa e più olistica. Esso considera la "memoria" non come un semplice archivio di dati, ma come una risorsa di sistema fondamentale e critica, al pari della potenza di calcolo. La sua architettura è progettata per gestire continuamente la memoria a lungo termine dei grandi modelli, fornendo un framework unificato che coordina, fonde, archivia e gestisce i permessi di diverse forme di memoria: dal testo in chiaro agli stati di attivazione del modello e alle memorie parametriche. L'obiettivo ultimo di MemOS è conferire ai grandi modelli la capacità di evoluzione continua e di auto-aggiornamento, permettendo loro di apprendere e adattarsi in modo dinamico nel tempo, superando i limiti di un apprendimento statico o di una memoria effimera.

Memoria e capacità di elaborazione di contesti lunghi: un legame intrinseco e complementare

I progressi nei grandi modelli discussi in precedenza, che consentono di elaborare un numero elevato di token, fino a decine di milioni, rientrano tutti nella più ampia "capacità delle LLM di elaborare contesti lunghi". È diventato evidente dall'esperienza pratica con le LLM che esiste una correlazione diretta e forte tra questa capacità e la qualità della memoria del modello. In altre parole, i modelli con una maggiore capacità di elaborare contesti lunghi dimostrano anche una memoria più robusta e affidabile. Questo legame intrinseco evidenzia che la gestione efficace della memoria non può prescindere da una solida capacità di contesto.

Contesto lungo (Long Context)

Il concetto di "contesto lungo" si riferisce specificamente alla lunghezza del testo storico che il modello può "vedere" e considerare durante l'attuale processo di inferenza. Essenzialmente, rappresenta la lunghezza della sequenza completa che viene immessa nel modello in una singola iterazione.

Questa capacità è fondamentale per risolvere una serie di compiti complessi che richiedono una comprensione profonda e coerente di informazioni estese. Tali compiti includono, a titolo esemplificativo:

  • Domande-risposte su documenti estesi: dove il modello deve analizzare testi lunghi per estrarre e sintetizzare risposte accurate.
  • Dialoghi multi-turno: in cui è cruciale mantenere la coerenza e il ricordo delle interazioni precedenti per fornire risposte pertinenti.
  • Analisi del codice: dove il contesto di intere basi di codice o moduli è necessario per comprendere la logica e identificare errori o suggerire miglioramenti.

La "capacità di elaborazione di contesti lunghi" non è un concetto monolitico, ma comprende diverse abilità chiave:

  • Capacità di generalizzazione della lunghezza: questa si riferisce all'abilità del modello di estrapolare e operare efficacemente su sequenze che sono più lunghe di quelle su cui è stato addestrato. Se la sequenza di input supera la lunghezza massima vista durante l'addestramento, alcuni modelli possono andare incontro a un fallimento catastrofico, perdendo completamente la loro funzionalità.
  • Capacità di attenzione efficiente: per gestire sequenze lunghe, sono necessari meccanismi (spesso algoritmi sub-quadratici) per ridurre il consumo computazionale e di memoria associato al meccanismo di attenzione. Questo può includere l'implementazione di tecniche come l'attenzione approssimata, pattern sparsi di attenzione o architetture completamente alternative che ottimizzano l'elaborazione delle dipendenze a lungo raggio.
  • Capacità di ritenzione delle informazioni: questa è la capacità critica del modello di utilizzare effettivamente le informazioni provenienti da parti più distanti del contesto. Un'ampia finestra di contesto è inefficace se il modello ignora di fatto il contenuto del contesto oltre una certa posizione. Questo problema può manifestarsi a causa di un addestramento scadente, portando a una diminuzione dei pesi di attenzione o alla perdita effettiva del contesto dopo una determinata lunghezza della sequenza.
  • Capacità di progettazione e utilizzo dei prompt: riguarda lo studio e lo sviluppo di strategie per formulare i prompt in modo ottimale, al fine di sfruttare al meglio i vantaggi offerti da un contesto lungo e guidare il modello verso le risposte desiderate in modo efficace.

Memoria (Memory)

La "memoria", nel contesto delle LLM, si riferisce alle informazioni che il modello è in grado di conservare e richiamare attraverso più dialoghi, interazioni o utilizzi. È un meccanismo di persistenza che registra e conserva dati cruciali su utenti, specifici dialoghi passati, preferenze espresse e altre informazioni contestuali che sono rilevanti per mantenere una conversazione coerente e personalizzata nel tempo.

Aurimas Griciūnas, fondatore e CEO di SwirlAI, ha proposto una categorizzazione dettagliata dei tipi di memoria nelle LLM, suddividendoli come segue:

  1. Memoria di evento: questo tipo di memoria documenta le interazioni passate dell'agente e le azioni che ha eseguito. Una volta che un'azione è stata completata, il sistema di controllo registra le informazioni relative a tale azione in un archivio persistente. Questo permette all'agente di richiamare o tracciare queste azioni in futuro, contribuendo alla sua coerenza e alla sua capacità di apprendere dalle proprie esperienze.
  2. Memoria semantica: la memoria semantica abbraccia un vasto insieme di conoscenze. Include sia le informazioni di conoscenza esterna accessibili (ad esempio, tramite motori di ricerca o basi di dati), sia la comprensione intrinseca dell'agente riguardo al proprio stato attuale e alle proprie capacità. Questa memoria può assumere la forma di "conoscenza di sfondo" (background knowledge), che è visibile e utilizzabile solo internamente dall'agente, oppure un "contesto di messa a terra" (grounding context). Quest'ultimo è utilizzato per limitare l'ambito delle informazioni rilevanti e migliorare la precisione delle risposte, selezionando dalla vasta quantità di dati disponibili su internet solo ciò che è pertinente al compito specifico che si sta eseguendo.
  3. Memoria procedurale: la memoria procedurale è costituita dalle informazioni strutturali intrinsecamente legate al "sistema operativo" interno dell'agente. Questo include elementi come il formato standard dei prompt di sistema, l'elenco e le modalità di utilizzo degli strumenti richiamabili a disposizione dell'agente, e i limiti di comportamento preimpostati (guardrails) che definiscono le sue azioni consentite e non consentite.
  4. In determinati scenari di compito, il sistema agente è in grado di recuperare dinamicamente le informazioni pertinenti dalla memoria a lungo termine. Queste informazioni vengono poi temporaneamente memorizzate in una cache locale. Questo processo è fondamentale per consentire un accesso rapido e un'esecuzione efficiente del compito corrente, riducendo la latenza e migliorando la reattività del sistema.
  5. Le informazioni che vengono recuperate dalla memoria a lungo termine, insieme a quelle già presenti nella cache locale attuale, formano insieme la memoria di lavoro (spesso denominata anche memoria a breve termine) dell'agente. Queste informazioni aggregate vengono quindi riassunte in un prompt coerente che viene passato al grande modello linguistico (LLM). Questo prompt consolidato è essenziale per guidare le successive istruzioni d'azione o le risposte dell'LLM ai compiti, assicurando che siano basate su una comprensione completa e aggiornata del contesto.

È utile visualizzare la relazione tra questi tipi di memoria. Tipicamente, i tipi 1, 2 e 3 sono classificati come componenti della memoria a lungo termine dell'LLM, in quanto persistono attraverso diverse sessioni. Il tipo 5, invece, rappresenta la memoria a breve termine o di lavoro, che è dinamica e specifica per l'interazione corrente.

Collaborazione tra contesti lunghi e memoria: una sinergia potente

La capacità di elaborazione di contesti lunghi e la memoria non sono concetti isolati, ma possono e devono collaborare per massimizzare le prestazioni e l'utilità delle LLM. Questa sinergia si manifesta in diversi modi cruciali:

  • Le informazioni recuperate dal sistema di memoria (ad esempio, le preferenze specifiche dell'utente, le informazioni di contatto o i dati storici rilevanti) possono essere inserite dinamicamente nel contesto del prompt. Questo arricchisce il prompt con dati personalizzati e contestuali, permettendo all'LLM di generare risposte più mirate e pertinenti.
  • Una finestra di contesto particolarmente lunga offre un vantaggio significativo: può aiutare il modello a mantenere la sua "memoria" a breve termine all'interno del dialogo attuale in modo più efficace. Di conseguenza, il modello dipende meno dal sistema di memoria esterno per richiamare dettagli recenti della conversazione, rendendo l'interazione più fluida e naturale.

Metodi per implementare la memoria delle LLM

Il miglioramento della memoria nelle LLM è un obiettivo primario nella ricerca attuale. Come accennato in precedenza, una LLM può facilmente dimenticare le preferenze dell'utente, ripetere domande già poste o persino contraddire fatti precedentemente confermati se il dialogo supera la sua finestra di contesto. Il metodo più diretto ed efficace per migliorare la capacità di memoria di una LLM consiste nel potenziare direttamente la sua capacità di elaborare contesti lunghi. Attualmente, esistono diverse metodologie all'avanguardia per raggiungere questo obiettivo:

Metodi per contesti lunghi

  1. RAG (Retrieval-augmented Generation - Generazione aumentata dal recupero) è un metodo estremamente versatile e generalmente applicabile, impiegato per costruire un repertorio di conoscenza esterno e per controllare il comportamento di una LLM. Convertendo dati sia strutturati che non strutturati in una rappresentazione semantica ricercabile, RAG implementa il processo di recupero e generazione aumentata, integrando informazioni esterne per migliorare la pertinenza e la coerenza delle risposte della LLM. Questo approccio consente di estendere efficacemente la conoscenza del modello oltre i dati di addestramento, fornendo informazioni aggiornate e specifiche al contesto senza dover riaddestrare l'intero modello.