Un modello linguistico non conserva le informazioni da una chiamata all’altra: a ogni esecuzione, lavora solo con il testo fornito nella richiesta. Per gli agenti di IA, che devono tenere traccia delle azioni passate, ricordare le preferenze di un utente o portare a termine un compito in più fasi, questo limite rende necessaria una memoria esterna al modello. Questa memoria archivia le informazioni al di fuori della finestra di contesto, cioè la quantità di testo che un modello può elaborare in una sola volta, e le restituisce quando sono utili.
I blocchi della memoria degli agenti
Gli agenti hanno bisogno di trasportare informazioni da una chiamata e da un compito all’altro. Potrebbero doversi ricordare di ciò che è già stato pianificato per evitare azioni duplicate, o conservare in memoria i tentativi falliti per non ripetere lo stesso lavoro. Senza memoria, ogni chiamata dispone solo del contesto che le viene fornito.
I tipi di memoria si suddividono in quattro categorie. La memoria di lavoro contiene lo stato attivo del compito, come i risultati intermedi, e si consulta direttamente per chiave. La memoria episodica conserva ciò che è accaduto: interazioni passate, esecuzioni di compiti e decisioni prese, in un diario cronologico o in una base vettoriale, con una ricerca per similarità semantica. La memoria semantica raccoglie ciò che è ritenuto vero, ovvero fatti e preferenze, che vengono aggiornati piuttosto che aggiunti. La memoria procedurale descrive il modo di fare le cose, che si tratti di schemi di azioni riuscite o di modalità di fallimento note, e si basa su modelli di prompt o sul fine-tuning, un adattamento del modello a partire da dati specifici.
Progettare una memoria affidabile
Nell’esempio di un agente di ricerca che lavora più giorni sullo stesso compito, ogni risultato viene prima scritto in memoria di lavoro con una durata breve. Quando un risultato si rivela utile, passa in memoria episodica con un punteggio di importanza. Prima di ogni chiamata a uno strumento, l’agente consulta la memoria di lavoro e poi, se necessario, la memoria episodica. Se il compito fallisce durante l’esecuzione, lo stato temporaneo può essere cancellato mentre la cronologia dei lavori completati viene conservata.
Diverse pratiche rendono la memoria più affidabile man mano che cresce: annotare l’importanza delle informazioni prima della scrittura, limitare la memoria di ogni agente al suo ruolo nei sistemi multi-agente, consultare la memoria a ogni fase decisionale e tracciare l’origine di ogni elemento, che provenga da un agente, da uno strumento, da un input utente o da un timestamp. Alcuni approcci, semplici da implementare, diventano invece poco affidabili. È il caso dell’archiviazione di tutto in un’unica base vettoriale, della compressione tramite riassunti liberi, che può cancellare numeri o vincoli, della crescita senza limiti della memoria, o ancora della fiducia accordata allo stesso modo a ogni scrittura. Quest’ultima espone all’avvelenamento della memoria, dove un contenuto inaffidabile o malevolo viene archiviato e poi trattato come un’informazione sicura.
Framework con approcci diversi
I framework si collocano tra una memoria testuale semplice e i grafi di conoscenza. Letta si basa su blocchi di testo che l’agente può riscrivere da solo e aggiorna un blocco quando rileva una contraddizione. Mem0 utilizza una memoria vettoriale con una ricerca sensibile alle entità e aggiunge i nuovi ricordi accanto a quelli vecchi. Graphiti si appoggia a un grafo di conoscenza bi-temporale con relazioni tipizzate: invalida le vecchie relazioni conservandone però la cronologia consultabile. Cognee costruisce a partire dai dati sorgente degli strati di grafo, vettoriali e relazionali e ricostruisce la rappresentazione della memoria, con modalità temporali per seguire i cambiamenti.
Nei sistemi multi-agente, la condivisione della memoria può provocare conflitti durante aggiornamenti simultanei. Le soluzioni menzionate includono un servizio centrale con controllo delle scritture, spazi dei nomi separati per ogni agente, o diari in sola aggiunta i cui conflitti vengono risolti al momento della ricerca. La valutazione si basa su diversi indicatori: il recall, che misura se i ricordi pertinenti vengono recuperati, la precisione, che misura la quota di informazioni inutili restituite, la fedeltà, che verifica l’uso corretto delle informazioni recuperate, e l’obsolescenza, che misura la frequenza delle informazioni superate. Secondo l’articolo, la scelta dipende dal carico di lavoro dell’agente, dai suoi dati e dai suoi requisiti operativi.
