Sedetevi con un sistema RAG piatto che è stato in produzione per un anno e provate a fargli quattro domande. "Perché hai detto questo?" Il modello ha prodotto una risposta sicura sulla data di rinnovo del contratto del cliente, ma non esiste una traccia che porti alla clausola originale. "Rivaluta questa affermazione: la fonte è cambiata." Il contratto è stato modificato la scorsa settimana. Ogni fatto derivato da esso è sospetto. Non riuscite a trovarli perché non sanno da quale documento provengono. "Decidi tra questi due fatti contraddittori." Uno dice che Alex lavora per Google, l'altro per Stripe. Nessuno dei due ha un punteggio di confidenza o un timestamp della fonte. La novità della scrittura non ha nulla a che fare con la novità della prova. "Attribuisci questa allucinazione." Il modello ha detto che la riunione era giovedì. Non c'è stata alcuna riunione giovedì. Non potete dire se l'LLM ha inventato la data o se sono stati dati errati in memoria a trarre in inganno.
Questi quattro fallimenti condividono una causa comune. Sono ciascuno una colonna mancante. Un identificatore di fonte, un timestamp di acquisizione, un punteggio di confidenza, un registro di citazioni di risposta. Ognuno costa pochi byte in fase di scrittura. Il costo di non averli è illimitato: ogni affermazione non è verificabile, ogni contraddizione è irrisolvibile, ogni allucinazione è intracciabile.
In 19 sistemi, lo schema è coerente. Le implementazioni più robuste trattano la provenienza come un tribunale tratta le prove: ogni affermazione arriva con una catena di custodia ininterrotta, oppure non arriva affatto. Le più deboli non ne hanno alcuna, e pagano ogni volta che qualcosa va storto in produzione. Questo articolo esplora i sei livelli di provenienza emersi dal corpus, i tre livelli di maturità implementativa che li separano, e il costo reale di costruire questa funzionalità correttamente fin dall'inizio.
Sei livelli, una disciplina
Analizzando 19 sistemi uno dopo l'altro, emergono sei livelli distinti di provenienza. Non sono una gerarchia; sono ortogonali. Un sistema può avere provenienza della fonte senza provenienza causale. Può avere versionamento senza punteggio di confidenza. Le implementazioni più forti coprono tutti e sei. Nessuna delle più deboli ne copre alcuno.
L'identità risponde a "quale fatto, esattamente?" OpenContext genera UUID per ogni frammento di contesto al momento dell'ingestione e li espone come schema di citazione che l'agente può usare direttamente nelle risposte. L'identificatore sopravvive a rinomine, spostamenti e riorganizzazioni perché è legato al contenuto, non al percorso. mem9 porta un ID di memoria stabile su ogni riga più un contatore di versione esplicito con protezione di concorrenza If-Match. Senza provenienza dell'identità non potete nemmeno nominare ciò di cui state parlando quando le cose vanno male.
La fonte risponde a "da dove proviene?" Hindsight registra il tipo di fonte e l'identificatore su ogni osservazione, così il sistema può rispondere a quale conversazione o documento ha prodotto un dato fatto. mem9 porta fonte, ID agente e ID sessione su ogni riga. Supermemory memorizza gli ID dei documenti insieme ai ricordi. Senza provenienza della fonte non potete aggiornare a cascata quando una fonte cambia, perché non sapete da quali fatti dipende.
Causale risponde a "quale passaggio dell'agente ha usato questo?" Hindsight cattura ogni fatto recuperato e utilizzato in un livello di osservazione con contesto di recupero completo: quale recuperatore lo ha portato alla luce, quale rango ha raggiunto e se l'agente lo ha effettivamente consumato. Moraine tratta ogni passo di traccia come un proprio record di provenienza, rendendo l'intera esecuzione dell'agente recuperabile come una sequenza di eventi indirizzabili per fonte. Senza provenienza causale non potete distinguere tra "il sistema ha recuperato questo fatto" e "l'agente ha usato questo fatto per produrre quella risposta."
Confidenza di acquisizione risponde a "quanto eravamo sicuri quando lo abbiamo scritto?" Graphify segna ogni arco nel suo grafo di conoscenza con tre livelli di confidenza di acquisizione: CONFERMATO per estrazioni deterministiche, PROBABILE per inferenze LLM ad alta confidenza e AMBIGUO per affermazioni incerte. Gli archi AMBIGUI emergono come "lacune di conoscenza" per la revisione umana, invece di essere trattati silenziosamente come fatti. Hindsight porta un punteggio di confidenza su ogni osservazione che decade nel tempo attraverso il suo ciclo di vita di freschezza: le osservazioni recenti sono attendibili, quelle obsolete vengono declassate o ritirate. mem9 esegue il rilevamento di quasi-duplicati in modalità ombra prima, registrando i punteggi senza agire su di essi finché l'ingegnere non ha calibrato la soglia dai dati reali. Senza confidenza di acquisizione, i fatti incerti e quelli certi vengono recuperati con lo stesso peso e l'agente non può discriminare tra un'affermazione solida e una supposizione istruita.
Versionato risponde a "cosa credevamo prima?" Supermemory tratta la memoria come un DAG con versioni e archi tipizzati (aggiornamenti, estensioni, derivazioni), dando a ogni credenza una cronologia di commit. mem9 divide il percorso di scrittura: mutazione in-place per le modifiche umane, append-e-archivia per le riscritture guidate da LLM in cui il nuovo contenuto sostituisce semanticamente il vecchio. Tolaria lascia che Git gestisca interamente la cronologia delle versioni, trattando i diff di una riga come un artefatto di prima classe visibile all'utente. Senza provenienza versionata non potete tornare indietro a ciò che il sistema credeva martedì, perché le vecchie credenze vengono cancellate invece di essere archiviate.
Reciproco risponde a "quali altri fatti condividono questa origine?" llm-wiki pesa la sovrapposizione delle fonti più dei collegamenti diretti nel suo grafo di rilevanza a quattro segnali: due pagine provenienti dallo stesso documento grezzo sono considerate più fortemente correlate di due pagine con un wikilink diretto, perché l'LLM è inaffidabile nei collegamenti incrociati mentre i metadati delle fonti sono mantenuti meccanicamente. EdgeQuake accumula ID di fonte su entità e relazioni nell'intero corpus, così che menzioni ripetute della stessa entità da fonti diverse rafforzano il suo peso di provenienza. second-brain porta la fonte come parte della chiave composita del suo indice lessicale, permettendo a un singolo documento di essere indicizzato da più pipeline in modo indipendente. Senza provenienza reciproca non potete rispondere a "mostrami tutto in questo sistema che proviene dalla stessa conversazione" o "cos'altro abbiamo imparato da quel documento?"
I sei sono ortogonali ma si rafforzano a vicenda. La provenienza della fonte è inutile senza identità (bisogna nominare il fatto prima di poterlo tracciare). Il versionamento è più debole senza confidenza (si conosce la discendenza delle modifiche ma non quanto il sistema fosse sicuro di ciascuna). Le query reciproche dipendono dalla presenza preliminare della fonte. I sistemi che portano tutti e sei sono quelli la cui memoria non marcisce silenziosamente.
Tre livelli di maturità implementativa
Il corpus si separa in tre livelli basati su dove vive la provenienza e cosa può fare in fase di lettura.
Il Livello 1 è RAG senza provenienza, il punto di partenza per la maggior parte dei team. Archivi vettoriali piatti con contenuto e un embedding. Nessuna colonna di fonte, nessun punteggio di confidenza, nessuna cronologia delle versioni. Quando un fatto viene recuperato, si ottiene testo e un punteggio di similarità. Non potete tracciare da dove provenga, quanto il sistema ne fosse sicuro o se sia stato sostituito. Ogni sistema che è partito da qui si è spostato verso il Livello 2 nel tempo.
Il Livello 2 porta la provenienza sulla riga. ID fonte, confidenza, versione: tutti presenti come colonne accanto al fatto. mem9 si trova qui con fonte, ID agente, ID sessione e versione su ogni riga. Il DAG versionato di Supermemory è una struttura di Livello 2. La confidenza di arco a tre livelli di Graphify è una disciplina di Livello 2. La provenienza è disponibile per le query, ma non decora automaticamente i risultati di recupero. Dovete scrivere la query che la utilizza.
Il Livello 3 decora i risultati in fase di lettura con il contesto di provenienza senza che il chiamante debba richiederlo. Hindsight è il riferimento qui: ogni fatto recuperato arriva con il tipo di fonte, il punteggio di confidenza, lo stato di freschezza e la classifica per recuperatore già allegati. L'agente che consuma il risultato vede la provenienza come parte del fatto, non come una ricerca separata. La decorazione source-turn di mem9 si trova a metà strada tra Livello 2 e Livello 3, innestando il contesto di lettura su uno schema di Livello 2.
La migrazione è unidirezionale. Nessun sistema parte dal Livello 3 e decide di rimuovere la disciplina della provenienza. Le colonne dimostrano il loro valore non appena sono presenti. Se state progettando un sistema di memoria oggi, la domanda non è "ho bisogno di provenienza?" ma "da quale livello voglio iniziare, sapendo che ogni livello sopra quello che scelgo è più difficile da raggiungere in seguito che da incorporare ora?"
Il caso monito: calcolato e scartato
Understand-Anything illustra cosa succede quando il substrato per la confidenza esiste ma la colonna per registrarlo no. Il sistema distingue archi deterministici (risolti da uno scanner di progetto da file sorgente) da archi inferiti (indovinati da un LLM durante l'analisi semantica). Questa informazione è reale e significativa: un arco di import strutturale merita una confidenza più alta di un'inferenza non legata al codice. Ma entrambi vengono memorizzati con peso 0.7, identici nel grafo. Il segnale di confidenza viene calcolato in fase di scrittura e scartato prima della persistenza.
Aggiungere un campo di confidenza sarebbe una piccola modifica con un grande guadagno in qualità dell'informazione. Il sistema sa già quali archi sono solidi e quali sono supposizioni. Semplicemente non registra la distinzione dove conta: sulla riga che verrà recuperata in seguito, quando l'agente dovrà discriminare tra di essi. Questo schema appare in più sistemi nel corpus: l'informazione è disponibile al momento della scrittura, economica da catturare, e poi persa perché nessuno ha aggiunto la colonna.
Il costo reale di costruire questa funzionalità correttamente
La provenienza costa byte. Un ID fonte, un punteggio di confidenza, un contatore di versione: ognuno aggiunge pochi campi per riga. Su larga scala questo conta, ma conta molto meno del costo di non averli quando qualcosa va storto in produzione e non potete tracciare perché il sistema ha prodotto una risposta sbagliata.
Il costo computazionale è inferiore al previsto. Il punteggio di confidenza richiede tipicamente una chiamata LLM aggiuntiva in fase di scrittura (o un'euristica deterministica per fatti strutturali), che viene ammortizzata su ogni lettura successiva. Il tracciamento della fonte non costa nulla oltre a registrare un identificatore che già esiste. Il versionamento costa una colonna in più o un'append per scrittura, non un'istantanea completa. Il livello di osservazione di Hindsight aggiunge storage proporzionale al numero di fatti recuperati e utilizzati, ma registra solo ciò che l'agente ha effettivamente consumato, non tutto ciò che ha visto.
Il costo operativo è il vero problema. La decorazione di Livello 3 significa più dati che fluiscono in ogni recupero, il che aumenta leggermente l'uso del contesto e la latenza di risposta. I sistemi che lo implementano gestiscono la cosa mantenendo le decorazioni concise: un'enumerazione del tipo di fonte, un float di confidenza, uno stato di freschezza, invece di alberi di provenienza completi in linea. L'agente riceve abbastanza per discriminare senza annegare nei metadati.
Cosa condividono le implementazioni più forti
Gli esempi migliori nel corpus meritano di essere ribaditi perché nessuno risolve la stessa fetta del problema:
OpenContext genera UUID che sopravvivono a qualsiasi riorganizzazione del filesystem e li espone come schema di citazione che l'agente può usare direttamente. mem9 porta fonte, ID agente, ID sessione su ogni riga, versione su ogni aggiornamento e decora i risultati di ricerca con il contesto del turno di fonte governato da un budget esplicito. Supermemory tratta la memoria come un DAG con versioni e archi tipizzati, dando a ogni credenza una cronologia di commit. Hindsight cattura ogni fatto recuperato e utilizzato in un livello di osservazione con provenienza completa della fonte, cronologia dell'evoluzione e classifica per recuperatore. Graphify segna ogni arco con confidenza di acquisizione a tre livelli, portando gli archi incerti alla revisione umana invece di trattarli come fatti.
L'osservazione unificante è chiara: la provenienza non è metadato, è parte del fatto. I sistemi che la trattano in questo modo sono quelli la cui memoria non marcisce silenziosamente, le cui contraddizioni possono essere risolte, le cui allucinazioni possono essere tracciate e la cui cronologia delle credenze può essere riavvolta a qualsiasi punto del passato senza aver anticipato la necessità.
I sistemi che non lo fanno sono quelli i cui utenti imparano, alla fine, che la memoria di cui si fidavano era in realtà un'isola.
La provenienza è l'assicurazione più economica che possiate acquistare in fase di scrittura. La disciplina è acquistarla prima di scoprire di averne bisogno.
Se hai trovato utile questo articolo, condividilo così anche altri potranno beneficiarne :)
Il prossimo articolo esplora il recupero ibrido e RRF, lo schema che permette di combinare segnali vettoriali e testuali senza che uno sopraffaccia l'altro – il che conta di più quando la provenienza ti dice che un fatto è solido ma la sola rilevanza lo seppellirebbe. Quel pezzo è in arrivo.





