Transcription
Abbiamo una nuova metodologia per costruire knowledge base che crescono nel tempo e che risiedono in modo persistente nel tuo computer. Questa nuova metodologia prende il nome di LLM Wiki. Risolve moltissimi problemi irrisolti del precedente approccio, ovvero il sistema Rag.
Questa metodologia nuova è stata sviluppata e ideata da Andrew Carpati. Il tutto è partito da un semplice post su dove Andrew Carpati spiega come lui crea basi di conoscenza da dare a Large Language Model, spiegandole sotto forma, cioè con un post semplicemente. Da lì il web è esploso e tramite l'utilizzo di Obsidian come IDE, come software, possiamo adesso creare knowledge base con una qualità nettamente superiore, trasparente all'uomo, cioè che noi possiamo capire qual è il ragionamento che sta facendo il modello sopra i nostri documenti, che può crescere insieme a noi e rimanere persistente nel nostro computer.
E prima di saltare direttamente a vedere l'utilizzo, come si costruisce una cosa del genere, voglio partire con una presentazione facendo un excursus storico, partendo dal sistema Rag alla Gentic File Search che presentai in un precedente video, fino all'LLM Wiki introdotto recentemente.
Un large language model non ricorda. Immaginatelo come una persona che soffre di Alzheimer. Ogni volta che gli fai una domanda, ok, per tenere memoria di ciò che è successo prima, ha bisogno di un foglietto, di un blocco note, di un qualcosa dove poter scrivere e poter leggere le informazioni. Per questo abbiamo bisogno di un sistema, ok? Bisogna costruirgli una memoria esterna, altrimenti, eh, rimane un sistema stateless, cioè senza stato, senza ricordo di ciò che è successo prima. Come si costruisce questa memoria definisce, eh, cosa è capace di fare questa gente.
Siamo passati da ben tre generazioni di memorie differenti. Abbiamo la prima generazione. Nel 2022 è nato il RAG, che sta per Retrieval Augmented Generation, e si basa sul praticamente prendere quelli che sono i nostri documenti. Faccio un riassunto breve, molto, molto veloce. Prendere i documenti PDF, TXT. Puoi spezzettarli in chunk o blocchi o capitoli o sotto-sotto blocchi di testo. Ogni chunk viene convertito utilizzando un modello particolare che si chiama embedding model. Vengono convertiti tutti questi pezzi di testo in dei vettori. Ok? I vettori sono una lista di numeri, una sequenza di numeri, quindi una sequenza di numeri che può essere 0,6, 0,1, 3, 7. E questo vettore qua sarebbe la compressione di questo testo. Tutti questi vettori vanno a riempire quello che è un database vettoriale. Quindi ciascun punto è una coordinata in uno spazio vettoriale. La coordinata è definita appunto dalle dalla lista di numeri, dove ciascun numero, queste sono le coordinate su tutti i vari assi. Creato il database vettoriale, quando arriva la domanda dell'utente, quindi quando l'utente fa la domanda, fa la query, la query anche passa da questo modello qua, viene convertita in un vettore. Il vettore si va a vedere nello spazio dove finisce e per similarità si reperiscono le informazioni più rilevanti per quella domanda. Reperiti i punti, cioè le coordinate più rilevanti, si prendono i blocchi di testo associati e in questo modo, ok, si fa la parte di augmentation, quindi la nostra query Q più tutto questo blocco di testo che abbiamo reperito diventa la nuova query che entra dentro il Large Language Model che ci dà poi la risposta. E per questo si chiama RAG, si chiama R.A.G. Questo approccio sta per Retrieval. Retrieval è questa fase qua di pesca nel database vettoriale, la retrieval. Augmented è questa fase qua dove andiamo a sommare la query con i documenti che abbiamo preso. Retrieval Augmented Generation, cioè la nuova risposta.
In questo modo, è lo stesso modo in cui funziona NotebookLM. NotebookLM alla fine costruisce un RAG e NotebookLM è diventato super famoso e popolare ed è a mio avviso la knowledge base più usata al mondo. Ok? Più anche facilmente accessibile dalle persone. Quindi qualsiasi documento gli carichiamo, un video, quello che fa dal video è prende la trascrizione, la trascrizione testo, lo spezzetta in blocchi e lo carica nel database vettoriale. Gli carichi l'audio, lo stesso, gli carichi dei PDF, allo stesso modo.
Da questo approccio qua del RAG, dove gli embedding sono pre-computati, gli embedding sono appunto questi vettori qua, e Large Language Model riceve c'han simile alla domanda, siamo passati all'Agentic File Search. L'Agentic File Search è tutt'altro approccio che nasce con gli agenti AI, con agents, e l'Agentic File Search si basa sul file system. File system, dove non abbiamo più bisogno di un database vettoriale, non abbiamo bisogno di un database e il nostro file system stesso con le cartelle e sottocartelle a rappresentare la nostra base di conoscenza. Ogni cartella poi al suo interno ha dei file che sono markdown, cioè si basano principalmente sul formato markdown, che è il formato più facilmente leggibile dalle AI. Questo approccio qua, ad esempio, è utilizzato su tutti i coding agent e su tutti questi agenti qua di nuova generazione, come ad esempio OpenClow, il famosissimo OpenClow, no? Come si basa? Andando a vedere come funziona la memory overview. La memory overview si basa su appunto file markdown, memory.md, la cartella memory dove dentro vari file markdown per giorno, mese e anno, il file dreams.md dove si scrive, ad esempio, delle review, dei riassunti di quello che è successo. E poi tramite i tool, per questo è Tool Search, tramite dei tool l'agente AI può andare a esplorare le cartelle. Quindi può andare ad esempio, l'agente decide di entrare dentro questa cartella, non trova quello che gli serve, allora va in quest'altra cartella, si legge magari i primi due documenti, vede che il documento che ha le informazioni è il secondo e allora poi risponde all'utente e ti fornisce la risposta. Questo è l'Agentic File Search, cioè l'agente AI che è talmente intelligente da poter comprendere il file system, le cartelle, sotto-cartelle, le esplora utilizzando i tool che ha. Quindi può utilizzare il tool per leggere un file, per leggere un file PDF, per aprire la cartella, per vedere quali file ci sono nella cartella e quindi esplora così, eh, eh, lo spazio delle informazioni e queste informazioni sono file. Ok? Qua dentro ci ci potrebbero stare PDF, CSV, quello che vuoi te, ok? E l'agente in base anche alla alla natura del documento lo può leggere, lo può comprendere, eccetera.
Adesso siamo arrivati al terzo approccio, LLM Wiki, dove praticamente se prima l'agente naviga i file come un umano, scansiona, ragiona, segue i riferimenti, adesso la conoscenza viene compilata in un artefatto persistente che è la wiki che cresce nel tempo. Questo è il nuovo approccio.
Quindi, generazione 1, il RAG. Abbiamo visto come funziona. Documenti, chunking, embedding, vector DB. La domanda, similarity search, si prendono i chunk, cioè il testo più rilevante, risposta delle Large Language Models. Quali sono i limiti del RAG? E che i chunk possono perdere contesto. Le cross-reference non sono, eh, sono invisibili. Similarità non è detto che è la stessa cosa di rilevanza e nessun accumulo, cioè il sistema non impara dalle domande passate, ogni query è indipendente. Dobbiamo noi "accroccarci" un qualcosa per poter manutenere questo database vettoriale.
Poi, Agentic File Search. La cosa bella è che possiamo lanciare più agenti in parallelo che sfogliano tutti i documenti della cartella in una singola passata, quindi possono leggere i sommari, gli header, i file, le prime righe. Poi possiamo fare una estrazione selettiva, quindi solamente i documenti giudicati e valutati vengono letti per intero, il resto viene ignorato, quindi risparmiamo un sacco di token. E per poi seguire i riferimenti, cioè se un documento fa, ha un riferimento a un altro documento e un'altra cartella, l'agente intelligentemente può andare ad aprire, eh, l'altra cartella. Non si fa nessun embedding e la struttura dei file diventa parte di ragionamento, cioè come strutturiamo gerarchicamente proprio le cartelle e sottocartelle aiuta e fa parte appunto del ragionamento che fa il modello. E nell'Agentic File Search utilizziamo appunto dei tool che può essere scansione della cartella, preview del file, parts file, read, grep, glob, tutti i tool che l'agente può utilizzare. CloudCowork ragiona in questo modo e formati supportati PDF, DOCX, PowerPoint, XLS, HTML, Markdown. E ci dà output strutturato, citazione sorgente, token tracking. Questo è l'approccio che si usa adesso su tutti gli agenti, sia per il coding che non. Mentre, infatti, la memoria con il file markdown è gestita da OpenClow, da tutti questi agenti qua dove utilizzano dei plugin per migliorare la gestione della wiki.
Mentre nel nuovo approccio, generazione 3, LLM Wiki si basa sul sul concetto della wiki, della conoscenza che viene compilata una volta e poi tenuta aggiornata proprio come una wiki, eh, dove non devi ridefinire ogni domanda, ok? Non ti devi andare a ricostruire tutto ogni volta. Questa idea della wiki è stata appunto descritta nel dettaglio da Andrew Carpati in questo modo: "LLM and Knowledge Base". Qualche volta io trovo veramente utile recentemente utilizzare Large Language Model per costruire una knowledge base personale per differenti topic di interesse. E dice che una gran parte dei suoi token che utilizza stanno via sempre diminuendo dal punto di vista della manipolazione del codice e stanno aumentando sempre di più nella manipolazione della conoscenza salvata come markdown e immagini.
E adesso entriamo nel cuore. Fase 1, data ingest. Praticamente puoi caricare dentro una cartella raw/articoli, paper, report, dataset, immagini, eccetera. Quindi tutti i file "sporchi" che hai li carichi là dentro e poi si utilizza il Large Language Model per compilare la wiki in modo incrementale. Cosa fa? Va a creare tanti file MD Markdown e nella struttura appunto delle directory e include anche quelli che sono i riassunti dei documenti, i backlinks, come sono collegati, li categorizza, insomma, struttura tutta la, eh, la wiki. Praticamente abbiamo una cartella che è LLM, dentro abbiamo la cartella raw e dentro la cartella raw possiamo mettere quelli che sono PDF, possiamo metterci CSV, possiamo metterci TXT, possiamo inserirci anche file markdown, tutti i file che troviamo li inseriamo qua dentro. Immagini, possiamo anche inserire imgs. E quello che fa la gente, una volta che noi gli chiediamo di crearci appunto la wiki, sarà quello di creare una nuova cartella che sarà wiki e dentro ci creerà tanti file markdown, quindi ci creerà asterisco.md, raw.md, un altro.md e questi markdown dentro hanno dei backlink, cioè questo è collegato a questo, visto che questo è collegato a quest'altro, ci sono dei link proprio nei documenti. E crea quello che è un file markdown che è l'index, dove l'index la devi immaginare proprio come l'indice che dice abbiamo questo documento che parla di questo, quest'altro, di quest'altra cosa, quindi l'indice principale. Ed un altro markmd dove si tiene in conto di tutti i log, cioè di tutte le modifiche che fa. Modifiche, quali modifiche può fare? Inserire nuova conoscenza, aggiornare la conoscenza, eliminarla. Quindi qua viene scritta tutta, tutta, tutta la conoscenza in log, cioè tutte le transazioni che ha fatto.
Poi IDE come software per visualizzare tutta questa conoscenza che stiamo costruendo, lato frontend, si utilizza Obsidian. Obsidian che cos'è? Questo programma completamente gratuito che puoi scaricare ed installare sul tuo computer Windows, Linux o MacBook che sia. E questo programma qua non è un database vettoriale, è solamente un programma che ti permette di visualizzare i documenti che hai già, eh, in locale nel tuo computer. Quindi Obsidian, che vedi qua, alla fine ti fa visualizzare i file markdown in questo modo. Ok? Queste sono le cartelle che ti permette di vedere sia i documenti, diciamo, raw "sporchi", sia ti permette di vedere appunto i file puliti in markdown, che ha anche questa bellissima visualizzazione dove tiene in considerazione tutti quelli che sono i link fra i documenti. No, questa piatta, cioè questa questa applicazione qua è solamente visiva per noi esseri umani, ma l'LLM Wiki può funzionare benissimo anche senza, eh, Obsidian, non è obbligatoria, è solamente un aiuto per noi per navigare questi documenti.
Andiamo avanti. Q&A. Qua le cose si fanno interessanti perché dice: "Quando la tua wiki è grande abbastanza", e per lui dice, "ha fatto wiki di 100 articoli, 400.000 parole, insomma, wiki di una certa taglia". Tu puoi chiedere a Large Language Model tutta una serie di domande complesse sulla tua wiki. L'agente cosa fa? Prende e inizia a, ehm, a, diciamo, ad analizzare la la richiesta. Quindi tu gli fai una domanda, la prima cosa che fa l'agente è è andarsi a vedere cosa c'ha nella wiki. Quindi si va a guardare l'index. Dall'index vede che magari i documenti rilevanti sono questi due. Va a leggere il primo documento, va a leggere il secondo documento, poi vede che ci sono dei riferimenti ad altri documenti, allora va ad esplorare la wiki, cioè va alla fine, se noi disegnassimo qua il grafo, lo disegniamo così, va magari a saltare da un link all'altro in base appunto alle informazioni che trova. E una volta che trova tutte le informazioni che gli servono, ti risponde. Ok? Ed è super utile soprattutto quando abbiamo dei delle knowledge base, ad esempio in ambito legale, in ambito scientifico di paper, dove ci sono tanti link. Ah, faccio un esempio. La legge della regione con la legge, legge della provincia, legge nazionale e legge europea, quindi ci stanno tutta questa gerarchia nei documenti, tutti questi link ed è ottimo per appunto tenere traccia di tutte queste interconnessioni e lo fa tutto l'agente in autonomia.
Output. Invece di ottenere l'output come testo o sul terminale, lui preferisce farsi fare un render nel formato MARP format. MARP Format. Io non sapevo che formato fosse fino a quando ho letto questo articolo. MARP Format sta per Markdown Presentation Ecosystem, e quindi un file MD, un markdown che però rappresenta una presentazione, quindi come output gli facciamo generare proprio presentazioni. Ehm, e su Obsidian, se vogliamo visualizzarle come tali, come presentazione, ci sta un plugin particolare che si può aggiungere.
Altra fase particolare, il linting. Praticamente il linting è un check della salute della nostra wiki. Quindi cosa fa? Parte l'agente e controlla se ci stanno inconsistenze, dati mancanti, impuri o connessioni interessanti da aggiungere su articoli candidati. E quindi il Large Language Model è veramente bravo a suggerire, eh, e a manutenere quella che è la wiki. Quindi è per questo che utilizziamo questo approccio qua, perché noi possiamo preoccuparci solamente di aggiungere informazioni e poi l'agente si occupa sia di ingerire e gestire, ma anche di pulire, migliorare i link, eccetera, eccetera, eccetera.
Quindi, tornando alla presentazione, Obsidian è l'IDE, è solamente un programma di front-end, ehm, che ti permette anche di vedere con la graph view quello che è tutto il grafo. Questi file markdown sono collegati uno con l'altro con questo tag `[[ ]]` qua, quindi doppia parentesi qua aperta e chiusa e dentro ci sta l'altro documento che sta linkando. E i cluster emergono da soli, nel senso i cluster sono i documenti che vengono citati più spesso e così via, eccetera, eccetera.
I tre livelli dell'architettura. Abbiamo nel primo layer le, eh, i dati "sporchi" raw, quindi articoli, paper, immagini, che è la tua fonte di verità che carichi. Poi abbiamo il secondo strato che è la wiki, quindi il nostro Large Language Model costruisce tutta questa wiki con entità, concetti, sintesi, l'indice, tutto in markdown. E poi abbiamo lo schema. Lo schema è poi il file `cloud.md` MD, eh, che contiene la skill che permette al nostro agente di poter utilizzare e navigare al meglio quello che è appunto la, la wiki. Le tre operazioni le abbiamo viste: prima ingerisce, poi puoi fare le query e manutenzione e controllo per mantenere nel tempo la wiki. L'ingest, appunto, è quello che inserisce nella wiki le i dati, quelli che sono "sporchi". Query e l'esplorazione e l'intenzione del, del, e alla fine il prodotto, l'interazione tra le pagine, claim obsoleti contro fonti più recenti, concetti menzionati, dati "orfani" senza link di entrata.
Il large language model non si annoia. La cosa più importante che dice anche Carpati è che praticamente, eh, la wiki è sempre stata la fonte migliore per mantenere la conoscenza di un qualcosa. La wiki aziendale, la wiki della documentazione, Wikipedia alla fine è una wiki. La cosa della wiki è che funziona, è molto efficiente, ma è difficile da manutenere quando cresce. E dice: "I large language model non si annoiano". Devi modificare 15 file in una passata senza dimenticare, lo fa. Devi editare 30 file, 20 riferimenti. Il large language model è perfetto per questo scopo ed è per questo che abbiamo sviluppato LLM Wiki. E ci sono appunto due file di servizio: `index.md` che dentro ha appunto tutti gli indici di cosa abbiamo, dove stanno i file principali, entità, concetti, eccetera, e `log.md` che tiene in conto di quello che abbiamo fatto in data tot, giorno tot. Abbiamo ingerito questi documenti, abbiamo modificato questi link, oppure abbiamo eliminato queste informazioni.
Dove si applica LLM Wiki? Su tutto, su documenti personali, articoli, podcast o sulla ricerca, ad esempio paper, report, interviste, una tesi che stiamo facendo e che stiamo raccogliendo dei dati, un libro, ok, per la lettura, per un team week interno auto-mantenuta, quindi Slack, meeting, call per un'azienda o analisi competitiva, aziende, mercati, contratti. Eh, molti la stanno utilizzando l'LLM Wiki per tenere traccia, ad esempio, nel trading delle strategie. Si stanno facendo la wiki o per hobby, ad esempio, deep dive a lungo termine. Ci sono tantissimi casi d'uso, puoi usare e costruire una wiki per ogni cosa.
Questo è il cuore. Perché funziona? Perché la parte noiosa non è leggere o pensare, è la contabilità. Cross-reference, coerenza, freschezza. Gli umani abbandonano le wiki, i large language model, no?
E adesso andiamo a vedere come andare a costruirla da zero. Step numero uno, andiamo sulla pagina web di Obsidian e la scarichiamo per il nostro sistema operativo. Installata Obsidian, la apriamo e facciamo "Crea nuovo Vault". Selezioniamo la cartella dove vogliamo stare e il nome. Quindi, settato il nome, settata la posizione, andiamo su "Crea" e ci troveremo con un file di benvenuto. E vediamo qua a destra il nostro grafo. Possiamo anche chiudere il tutto. Per visualizzare il grafo basta cliccare qua su "Apri vista grafo". Vediamo la vista grafo. E per la, ehm, gestione dei file li vediamo direttamente qua, dove possiamo creare un nuovo file, le cartelle, ma questo non ci interessa. L'importante è da avere installato Obsidian e aver creato un nuovo Vault in una cartella.
Ora Carpati ci consiglia di installare Obsidian Web Clipper Extension. Perché ce la consiglia? Per poter trasformare quelle che sono le pagine web direttamente in file markdown da mettere dentro Obsidian. Quindi aggiungiamo questa estensione su Chrome. Aggiungi, aggiungi estensione. Fatto ciò, lo step numero tre, quello più importante, è aprire la cartella dove appunto abbiamo, eh, istanziato il nostro Vault di di Obsidian. Quindi, vedi qua, il file benvenuto è lo stesso file che vediamo qua. Siamo nella stessa cartella. Da qua dentro avviamo il nostro, eh, coding agent che può essere OpenCode, eh, Antigravity, CloudCode. Io, ad esempio, adesso avvio Cloud e da qua dentro adesso gli facciamo istanziare tutto quello che è l'LLM Wiki. Possiamo andare ad eliminare, ad esempio, il file `benvenuto.md`, non ci interessa. Ok.
Andiamo adesso in questa repository qua che ti linkerò sotto in descrizione che è la LLM, il file `prompt.md` creato proprio da Carpati, ok? Questo è il suo ufficiale dove, ehm, descrive esattamente tutta l'architettura: ingest, query, lint, però descritta in un modo migliore da dare proprio ad un large language model, quindi lo copiamo tutto, fino a sotto pure con le note. Nelle note c'è scritto che è lasciato in modo intenzionale, abbastanza astratto su delle parti, in modo tale che ciascuno di noi lo può customizzare. Andiamo ad incollare qua tutto quello che è l'LLM Wiki e gli aggiungiamo anche questo prompt: "Se il mio agente LLM Wiki implementa questo esatto file di idee con il mio secondo cervello, guidami passo passo, crea il file di schema `cloud.md` con le regole complete. Imposta `index.md`, `log.md`, definisci le convenzioni per le cartelle, mostra il primo esempio di acquisizione ingest. D'ora in poi ogni interazione seguirà lo schema."
Gli diamo questo prompt e adesso facciamo strutturare alla nostra AI tutto quello che è appunto la la struttura delle cartelle con le sottocartelle. Eh, adesso ci creerà adesso la cartella `raw` dove possiamo poi inserire tutti i nostri documenti. Ti diciamo di sì, di creare adesso le cartelle. Vedi che sta strutturando `raw`, `wiki`, `concept`, `entities`, `sources`, `synthesis`. Una volta che ci ha creato tutta la struttura, a volte potrete trovare su `raw` la sottocartella `assets`. Io, ad esempio, queste due adesso le elimino perché me le ha create tipo di esempio per farmi vedere.
Una volta creata tutta la struttura, adesso dentro `raw` possiamo andarci a mettere quello che vogliamo: CSV, PDF, quello che vogliamo, oppure utilizzando appunto quella che è l'estensione che abbiamo appena installato, possiamo convertire una pagina web in file Markdown che va direttamente lì dentro. Ad esempio, vogliamo creare una wiki sulle sulla dieta, sulle migliori diete per varie cose. Ad esempio, migliore dieta per aumentare la massa muscolare. Ad esempio, andiamo nelle varie pagine web, ok? Ad esempio, ci sta questa pagina web qua. Cliccando sull'estensione Obsidian Web Clipper possiamo scrivendo qui `raw` settare dove deve andare questo questo questa informazione. Aggiungi Obsidian e una volta cliccata "Aggiungi Obsidian", ecco qua che ci ha scaricato adesso la pagina con anche le immagini e ce la troviamo adesso, eh, direttamente anche come documento. Ok? Ehm, quindi il file sta dentro `raw`, non sta ancora dentro la wiki, quindi l'AI non ha ancora ingerito tutto, inserito tutte le informazioni. Infatti il documento, se vedi, sono tutti vuoti, tutti i link e riferimenti. Ma questo qui è un modo veloce per avere te controllo sui dati che vuoi fargli ingerire. Invece di tutte le volte scrivere qua `raw`, puoi andare sulle impostazioni predefinite e scrivere qua invece di `clipping row`. Ok, fatto ciò, adesso tutti i documenti li possiamo esportare in modo molto veloce. Ad esempio qua Obsidian, aggiungi Obsidian oppure, eh, migliore dieta per il cervello, dieta per la mente, quali cibi per mantenere il cervello attivo. Quindi aggiungiamo anche questa. E questo approccio qua lo utilizza Andrew Carpati, ad esempio, con i paper scientifici. Lui prende tutti i paper scientifici e se li inserisce così, come adesso stiamo facendo. Tu lo puoi fare su documenti PDF che ti mostrerò dopo. Eh, migliore dieta per, ehm, ridurre lo stress. Vediamo se esiste una dieta per lo stress. Combattere stress con l'alimentazione. Ok, faccio proprio un esempio di inserimento, questo inserimento delle informazioni nella base. Ok, quindi adesso abbiamo già un po' di documenti che stanno tutti su `raw`. Adesso quello che dobbiamo fare è andare sul nostro, eh, agente e dirgli: "Ho inserito dei documenti dentro `raw` che trattano di diete. Voglio creare una wiki sulle diete. Eh, vai con la fase di ingest."
Ora parte con la fase di ingest e quindi quello che succederà è che mi trasformerà questi documenti markdown qua in altri markdown che mi andranno a popolare queste cartelle qui, quindi `concept`, `entity`, `sources`, `synthesis` e vedrai qua nella parte a destra in tempo reale, diciamo, la formazione della della knowledge base con tutti i link. Come puoi vedere, ci ha costruito adesso una knowledge base più ricca di informazioni. Vediamo qua che adesso sta terminando `index.md` e `log.md` ed ha quasi terminato. Eh, anche qua sotto vediamo i concetti che ha creato. Questi sono tutti i file markdown, l'entità, sources, synthesis e quindi di ogni documento abbiamo le proprietà tipo tag, creato, eh, nutrienti per obiettivo. E quando praticamente troviamo uno di questo link qua, cliccandoci ci porta un altro MD. Questo link è proprio l'arco che ci sta fra i due nodi del grafo e che andandoli a vedere proprio dal punto di vista di file markdown puri, ok? Questi link vengono gestiti. Vediamo se lo becchiamo uno. Ehm, questi sono dei link, no? Vediamo. Ah, perché stavamo su `raw`. Sono dei link fatti con le doppie parentesi quadra. Eccole qua. Doppia parentesi quadra, `alimentazione stress` e ci carica esattamente l'altro file markdown, `alimentazione stress`. Quindi potrebbe funzionare anche senza Obsidian, anzi funziona senza Obsidian. Obsidian serve solamente per farti visualizzare i file che ci sono, come sono strutturati e per poter passare da uno all'altro, ok? Per leggere le hai, soprattutto come ragiona, perché adesso quando gli andremo a fare delle domande vedrà esattamente il passaggio di file in file che vorrà fare.
Report: 4 sources, 7 concepts, 4 entities, 2 synthesis. Apri Obsidian, ti spiega pure come fare. Guarda il graph view. Dovresti vedere la sintesi al centro, i nodi. Ah! Le pagine citate non sono ancora create. Cortisolo, serotonina appariranno come candidate orfane. Sono note per un prossimo giro di ingest o lint. Quindi possiamo anche dirgli: "Guarda, aumenta con i concetti" oppure "Fermati qua" oppure "Facciamo la parte di lint" e decide lui se eliminare o no. E possiamo comunque aggiungere altri documenti qua su `raw`.
Proviamo a fare una query. Voglio fare una query sulla wiki, ovvero voglio sapere, eh, la migliore dieta per aumentare le performance del cervello. E guarda adesso come esplora la wiki. Ok? Ed ecco qua la risposta. La mia query mi ha risposto: "Attingo principalmente da `dieta per la mente` e dalle, eh, `nutrimenti per obiettivo` e `alimenti trasversali`." Principi di fondo: il cervello consuma 20% dell'energia totale del corpo. Non esiste un cibo miracoloso. E nutrimenti chiave: omega-3, vitamine gruppo B, magnesio. Gli alimenti amici della mente in ordine di priorità sono pesce azzurro, frutta secca. E poi vedi cosa limitare? Evitare sale in eccesso, zuccheri raffinati, grassi saturi. E come puoi vedere si è basato su questi documenti in locale che abbiamo la nostra knowledge base. Non è andato sul web a cercare le informazioni. E poi ci dice: "Guarda, ti propongo di salvare questa risposta come nuova pagina di sintesi". Va bene, va bene, salvala, salva la. E gli possiamo dire poi di farlo sempre. Ok? Per questo ci ha dato Andrew Carpati libertà, perché nel file `cloud.md` gli possiamo dire: "Guarda, tutte le query salvamele come documento di sintesi, eh, tipo confronti, analisi, grossource, oppure mettila in una cartella chiamata `presentazioni`, mettila dove vuoi tu". E poi da Obsidian possiamo andare a vedere quello che è il risultato. Ecco qua che l'ha aggiunto e ci possiamo andare a vedere il risultato. Eccolo qua. `performance cervello`. Risposta sintetica alla query. Principio di fondo, cinque nutrimenti chiave. Vedi omega-3? Non so che cos'è l'omega-3. Clicco sull'omega-3 e mi leggo che cos'è l'omega-3. Famiglia di acidi grassi e nutrienti più trasversali nella dieta. Fonti: Funzioni: cervello, stress, massa muscolare. Poi da qua vedo massa muscolare. Vedi massa, massa muscolare, cosa mangiare? Mi vedo l'altro, eh, l'altro file. E quindi è un modo, eh, quello di di utilizzare la wiki per poter esplorare i concetti, le informazioni che sono già state ingerite e gestite dalle AI e quindi è il modo migliore per poter apprendere, imparare e far crescere questa conoscenza.
Ok? Facciamo ora un altro esempio con questi file PDF che sono dei bandi pubblici, ok? Microcredito che hanno delle informazioni. Questa è una circolare di 23 pagine e mettiamo il caso che vogliamo indicizzare, eh, questi bandi pubblici per la nostra startup per prendere i fondi. Ok? Quindi cosa facciamo? Come prima, prendiamo le nostre risorse e le incolliamo dentro la cartella `raw`. Una volta inseriti dentro la cartella `raw`, vedi, le ci ritroviamo qua. Gli diciamo: "Ho aggiunto due file PDF dei bandi pubblici per startup, voglio che li ingerisci nella LLM Wiki." E adesso farà la stessa procedura e mi strutturerà il tutto per aggiungerli nella wiki. Quindi possiamo aprire adesso qua la wiki e vedere adesso come aggiungerà questi altri concetti e tutti e tutti i file. Quindi, ad esempio, possiamo creare una wiki con le nostre informazioni personali. Chi sono, di cosa mi occupo, canali YouTube, Instagram, TikTok, le trascrizioni degli ultimi video. Mi mi creo quindi il cervello sulla mia know-how. Poi posso fare un altro Vault dove metto tutti i dati aziendali oppure mi faccio un Vault specifico per un progetto che sto seguendo, eh, o un Vault specifico per documenti legali, leggi, burocrazie, normative. Insomma, puoi crearti la tua knowledge come vuoi te. Rimane in locale sul tuo PC.
Adesso vedi, sta leggendo i file `raw` in primo luogo. Ecco qua, ingest completato. Vediamo come il file `index` praticamente si porta tutti i link ai documenti principali ed è giusto così. Sta adesso scrivendo quelli che sono il log. Quindi, andando a vedere il log, lo possiamo vedere anche da qua, in realtà il log c'è scritto: setup, inizializzazione, ingest quattro fonti, poi query, refactor, ingest due bandi pubblici per startup. Vedi, si tiene conto di tutto quello che abbiamo fatto. L'index invece è il catalogo di tutte le pagine della wiki: dominio diete, dominio startup, entità entità per dominio. Abbiamo anche visto come si distinguono, no, anche visivamente i grafi. Abbiamo da una parte i bandi e dall'altra abbiamo tutto quello che è la dieta. Ci sono due gruppi che sono uniti dai log e dall'index, come è giusto che sia, perché cita tutto. Poi abbiamo dei file, ok, separati a sé che possiamo collegare, esplicare ancora di più.
E adesso che abbiamo aggiunto i documenti sui bandi, ad esempio, possiamo fargli domande su specifiche per i bandi. Ho un'azienda di consulenza. Ci occupiamo di automatizzare le PMI con l'uso dell'intelligenza artificiale. Abbiamo fondato da 6 mesi. Quale bando possiamo partecipare? Quali sono i requisiti? Quanti soldi ci danno? Cerca nella wiki. Quindi alla nostra query, vedi come ci ha risposto utilizzando i documenti: `bandi di avvio impresa`, `Smart Start Italia`, `microcredito circolare`, `startup innovativa`. Ci ha risposto poi come prima ci ha detto: "Guarda, ti creo un file markdown, te lo salvo qua, va bene?" E inoltre aggiorno `index.md`, gli ho fatto: "Si salva" e quindi adesso ci troviamo il tutto salvato su, eh, Ecco qua, `caso studio`, `consulenza` e `PMI`. Ci dice: "Analisi di applicabilità dei bandi tracciati in wiki a un profilo aziendale specifico: azienda di consulenza che automatizza PMI, età costituita da minore uguale 60 mesi, requisito ampiamente rispettato 6 mesi. Oggetto il punto, ehm, prodotti e servizi, va bene. Bonus età requisiti da verificare prima della domanda. Iscrizione alla sezione speciale del registro delle imprese come startup innovativa." Ad esempio, io non gli ho specificato se siamo startup innovativa o no, lo leggo qua che è necessario. Dico: "Ma che cos'è?" Clicco sul link e mi leggo che cos'è la startup innovativa. Sta scritto qua: "Categoria giuridica di imprese introdotta al decreto legge. Requisiti essenziali durata nella qualità soglia massima. Requisiti sul personale e rilevare ai fini della rendicontazione sul personale. Smart Smart Start Italia. Che cos'è Smart Start Italia?" E così posso esplorare la mia wiki o manualmente dal, appunto, dall'IDE che è Obsidian o dalla gente qua che esplora i file al posto mio e mi risponde e mi può rispondere sia come testo, sia come file markdown che ci genera qua, o anche come presentazioni, come diceva Andrew Carpati, utilizzando il MARP come formato.
Ma per fare questo bisogna abilitare un plugin su Obsidian. Per abilitare il plugin bisogna andare su impostazioni, puoi andare su plugin di terze parti, abilitare il tutto, puoi andare su plugin della comunità, sfoglia e scrivere MARP, MARP, MARP Slides, andare qua, installare MARP Slides, abilita. Una volta abilitato, possiamo andare sull'agente nostro e gli possiamo dire: "Creami una, eh, MARP slide con la risposta alla mia query." Vi facciamo creare proprio una presentazione adesso che visualizzeremo appunto grazie a questo plugin che abbiamo installato. Ecco fatto. Vediamo che mi ha risposto. Mi ha generato appunto un file markdown dentro una nuova cartella che si chiama `presentations`. Mi dice pure come visualizzare in Obsidian. Installa il plugin MARP for Obsidian. L'abbiamo fatta, andiamo a vedere. Quindi sta su `presentation`. Eccolo. Quindi adesso lo possiamo visualizzare normalmente come file markdown, però l'estensione. Ecco, ci ha aggiunto questa parte qua, "Show slide preview", che ci permette di vedere proprio le slide. Ok, questa è parte uno, parte due. La possiamo vedere come, ehm, PDF, esporta come PDF. Eccolo qua, l'abbiamo esportato come PDF. Apri con un'app predefinita. Ed ecco qua la nostra presentazione. `Smart Start Italia`, il bando giusto per la nostra consulenza. La situazione di partenza è da 6 mesi. Obiettivo domanda chiave: quale strumento pubblico potete candidarvi con requisiti? Il match: requisito bloccante, startup innovativa. Quanti soldi? Esempio concreto. E quindi possiamo ottenere delle risposte che sono delle vere e proprie presentazioni, proprio come fa Andrew Carpati.
Questo è tutto l'approccio. Poi gli posso dire: "Parti con la fase di lint" e adesso gli faccio ripulire tutti i collegamenti, i file che magari, eh, mancano, delle citazioni o aggiunge dei contenuti. E adesso noi manualmente abbiamo inserito le sorgenti, la base di conoscenza, ma volendo potevamo dire a Cloud o a chi sia di andare sul web, scaricarmi tutti i bandi pubblici che ha trovato come PDF, mettermeli dentro `raw` e poi far partire l'ingest. Ecco qua che cerca le menzioni di concetti candidati citati ma senza pagina dedicata. Per efficienza, verifica in-bound link di ogni pagina in parallelo e cerca anche concetti candidati ricorrenti senza wikilink. Adesso mi va a pulire il tutto e mi metterà, mi fa l'health check, cioè il check della salute della wiki e io non devo fare nulla. Io mi devo preoccupare solamente di ingerire i documenti, magari se i documenti PDF sono delle scansioni, di applicare un OCR, di trasformarle io in un documento leggibile dalle AI e il resto per tutto il resto ci pensa appunto l'intelligenza artificiale.
Facciamo un recap di chiusura. Abbiamo il RAG che usa gli embeddings. Accesso similarity search, contesto a tutti i frammenti dei chunk. Cross-reference invisibili. Accumulo nessuno, non si accumula la la conoscenza. Mentre sulla Gentic è quello più leggero perché utilizza il file system, accesso con tool scan, read, grep, contesto documenti interi, cross-reference eseguibili a runtime e l'accumulo è debole. Note opzionali oppure l'append sullo stesso file, insomma, eh, è veloce ma costa di più in termini di token. E poi abbiamo LLM Wiki compilata persistente, index più lettura, lettura diretta, pagine inter-linkate, sintesi materializzati come link, quindi non è che a runtime lui si deve ricostruire come sono collegati, ma se li vede proprio come link, riferimenti dentro i documenti. Accumulo centrale, proprio il punto centrale della LLM Wiki.
Questi tre approcci non è che uno sostituisce l'altro, ok? Possono anche coesistere tutti insieme. Possiamo fare l'LLM Wiki dove su certi documenti grandi utilizziamo l'Agentic File Search per scansionare un documento e possiamo usare il RAG quando abbiamo milioni e milioni di documenti dove facciamo un pre-filtro selezionando i documenti più rilevanti e poi partiamo magari con il grafo questo qui di LLM e poi con la Gentic. Questi sono i tre approcci in ordine. Prima tutto si basava sul RAG, adesso si stanno basando gli agenti sulla parte di seconda generazione, adesso stiamo iniziando con la terza generazione. Lo troviamo anche su OpenClow dove hanno aggiunto anche loro Memory Wiki Companion Plugin, dove hanno aggiunto loro anche la gestione della wiki per migliorare la memoria persistente del tuo agente personale.
Intanto qua ho controllato, ho trovato bassa severità, media severità, dei file, dei link da modificare. Adesso glieli faccio. Spero che questa video lezione ti sia piaciuta dove abbiamo fatto un excursus di come viene gestita la memoria, la knowledge base dei nostri agenti AI. A mio avviso è il migliore investimento che possiamo fare nella costruzione di una knowledge base perché le AI continuano a migliorare, ma le nostre informazioni ce le abbiamo noi, quindi dobbiamo partire già da prima a costruirci una buona base di dati per poter usare al meglio le AI. E troverai in descrizione tutti i vari link delle repo, del post su ex, troverai tutto in descrizione. Fammi sapere con un commento qua sotto cosa ne pensi, se lo stavi già utilizzando, se ne avevi sentito parlare. Seguimi per rimanere aggiornato sul mondo delle AI.