{"id":2193,"date":"2025-02-26T11:05:00","date_gmt":"2025-02-26T10:05:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2193"},"modified":"2026-08-05T17:23:21","modified_gmt":"2026-08-05T15:23:21","slug":"agentic-rag-n8n-base-di-conoscenza","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/it\/2025\/02\/26\/agentic-rag-n8n-base-di-conoscenza\/","title":{"rendered":"Agentic RAG in n8n: perch\u00e9 il RAG classico spesso fallisce \u2013 e come farlo meglio"},"content":{"rendered":"<p>Molte aziende puntano oggi su assistenti IA che rispondano a domande sui propri documenti \u2013 verbali di riunioni, tabelle di indicatori o feedback dei clienti. Il procedimento diffuso alla base si chiama Retrieval Augmented Generation (RAG). \u00c8 molto usato, ben supportato e realizzabile in fretta con strumenti no-code come n8n. Solo che, nella pratica, il RAG classico fornisce sorprendentemente spesso risposte errate o incomplete. Cole Medin mostra nel suo video da che cosa dipenda e come un cosiddetto setup Agentic RAG aggiri le debolezze tipiche. Riassumo i punti principali con sobriet\u00e0.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\"><strong>L&#8217;essenziale in breve<\/strong><\/p>\n<ul>\n<li>Il RAG classico fallisce soprattutto su due fronti: non riesce a &#8220;zoomare indietro&#8221; su interi documenti e non pu\u00f2 svolgere una vera analisi dei dati su tabelle.<\/li>\n<li>L&#8217;Agentic RAG d\u00e0 all&#8217;agente IA pi\u00f9 strumenti invece di una sola ricerca \u2013 \u00e8 lui a decidere come interrogare la base di conoscenza.<\/li>\n<li>Le tabelle (CSV\/Excel) vengono salvate a parte, cos\u00ec da poter essere interrogate via SQL \u2013 senza creare una tabella dedicata per ogni file.<\/li>\n<li>L&#8217;agente pu\u00f2 elencare i documenti, recuperare interi file, citare le fonti e, all&#8217;occorrenza, migliorare la ricerca.<\/li>\n<li>Il setup n8n mostrato \u00e8 un modello ampliabile, non un prodotto finito \u2013 prompt e strumenti vanno adattati al proprio caso d&#8217;uso.<\/li>\n<\/ul>\n<\/div>\n<figure style=\"margin:28px 0;\"><img decoding=\"async\" src=\"https:\/\/pletzenauer.com\/wp-content\/uploads\/2026\/06\/1487-1.png\" alt=\"Confronto su due colonne tra RAG classico e Agentic RAG con quattro punti ciascuno\" style=\"width:100%;height:auto;border-radius:8px;border:1px solid #E5E2DE;\"\/><figcaption style=\"font-size:0.9em;color:#6b6b6b;margin-top:8px;\">L&#8217;Agentic RAG d\u00e0 all&#8217;agente IA pi\u00f9 strumenti invece di una sola ricerca.<\/figcaption><\/figure>\n<h2>Perch\u00e9 il RAG classico delude nella pratica<\/h2>\n<p>Il RAG funziona tramite una ricerca per somiglianza: la richiesta viene confrontata con frammenti di testo memorizzati (&#8220;chunk&#8221;) e i pi\u00f9 pertinenti vengono passati al modello linguistico. Il problema \u00e8 la selezione. Trascura regolarmente contesto importante.<\/p>\n<p>Medin indica due punti deboli concreti:<\/p>\n<ul>\n<li><strong>Nessuno sguardo sui documenti interi:<\/strong> il RAG considera solo singoli estratti. Chi vuole analizzare tendenze in una tabella ottiene magari solo un quarto delle righe \u2013 e quindi un risultato sbagliato.<\/li>\n<li><strong>Nessuna vera analisi dei dati:<\/strong> somme o valori massimi su una tabella non si calcolano in modo affidabile con una pura ricerca testuale.<\/li>\n<\/ul>\n<p>A ci\u00f2 si aggiunge una seccatura pratica: se si chiede il verbale di una certa data, il RAG a volte pesca il documento del giorno sbagliato \u2013 bench\u00e9 la data sia nel titolo. E collegare tra loro documenti diversi per ricostruire un quadro pi\u00f9 ampio riesce di rado.<\/p>\n<h2>Che cosa fa di diverso l&#8217;Agentic RAG<\/h2>\n<p>L&#8217;idea di fondo \u00e8 semplice: invece di dare all&#8217;agente IA un solo strumento di ricerca, gliene si danno diversi \u2013 e lo si lascia decidere da s\u00e9 come esplorare la base di conoscenza. Medin definisce cos\u00ec l&#8217;Agentic RAG:<\/p>\n<blockquote><p>Agentic RAG significa dare all&#8217;agente la capacit\u00e0 di ragionare su <strong>come<\/strong> interrogare la base di conoscenza \u2013 invece di inchiodarlo a un unico strumento.<\/p><\/blockquote>\n<p>In concreto l&#8217;agente pu\u00f2 cos\u00ec migliorare le proprie query, scegliere all&#8217;occorrenza un altro strumento e provare pi\u00f9 strade finch\u00e9 non ottiene una risposta solida. Se la sola ricerca RAG fallisce, non resta pi\u00f9 bloccato.<\/p>\n<h3>I quattro strumenti dell&#8217;agente<\/h3>\n<p>Nel flusso di lavoro n8n l&#8217;agente dispone dei seguenti strumenti:<\/p>\n<ul>\n<li><strong>Ricerca RAG<\/strong> \u2013 la classica ricerca per somiglianza, nella versione migliorata con indicazione della fonte.<\/li>\n<li><strong>Elencare i documenti<\/strong> \u2013 l&#8217;agente recupera tutti i documenti con titoli e ID e valuta quali possano essere rilevanti.<\/li>\n<li><strong>Recuperare il contenuto di un file<\/strong> \u2013 tramite l&#8217;ID del file ottiene il testo completo di un determinato documento (ad esempio il verbale del 23 febbraio, riconoscibile dal titolo).<\/li>\n<li><strong>Query SQL sulle tabelle<\/strong> \u2013 i file CSV ed Excel vengono interrogati come tabelle SQL, per rendere possibili somme, massimi e analisi analoghe.<\/li>\n<\/ul>\n<p>Nel system prompt l&#8217;agente riceve l&#8217;istruzione di iniziare con il RAG e di ricorrere agli altri strumenti solo quando la ricerca non fornisce quanto serve. Un&#8217;indicazione importante dal video: chiedere esplicitamente all&#8217;agente di essere onesto \u2013 cio\u00e8 di dire apertamente quando non ha trovato una risposta \u2013 riduce sensibilmente le allucinazioni.<\/p>\n<h2>Come vengono salvati i dati tabellari<\/h2>\n<p>La parte tecnicamente pi\u00f9 interessante riguarda le tabelle. In Supabase ne vengono create tre:<\/p>\n<ul>\n<li><strong>documents<\/strong> \u2013 contiene gli embeddings per il RAG, i metadati e i contenuti dei singoli chunk.<\/li>\n<li><strong>document_metadata<\/strong> \u2013 salva le informazioni di livello superiore: titolo, URL per le indicazioni di fonte e \u2013 nel caso delle tabelle \u2013 lo schema (cio\u00e8 i nomi delle colonne).<\/li>\n<li><strong>document_rows<\/strong> \u2013 archivia le righe delle tabelle. I dati veri e propri finiscono in una flessibile colonna <strong>JSONB<\/strong> chiamata <code>row_data<\/code>.<\/li>\n<\/ul>\n<p>Il trucco: con JSONB si possono salvare strutture di colonne arbitrarie senza dover creare una tabella SQL dedicata per ogni file CSV o Excel. L&#8217;agente legge prima lo schema dai metadati, comprende le colonne disponibili e formula poi una query SQL su <code>row_data<\/code>. Medin sottolinea esplicitamente che questo setup \u00e8 semplificato \u2013 lo schema, ad esempio, non dice nulla sui tipi di dato, per cui una somma su una colonna con il simbolo del dollaro pu\u00f2 fallire. A lui interessa il concetto, non una realizzazione perfetta.<\/p>\n<h2>La pipeline RAG: da Google Drive a Supabase<\/h2>\n<p>Prima che l&#8217;agente possa lavorare, la base di conoscenza va riempita. La pipeline si svolge in pi\u00f9 passaggi:<\/p>\n<ul>\n<li><strong>Attivatore:<\/strong> un trigger di Google Drive controlla ogni minuto la presenza di file nuovi o modificati. In alternativa funzionano Dropbox o un trigger su file locali. I file cancellati, per\u00f2, non vengono riconosciuti.<\/li>\n<li><strong>Pi\u00f9 file contemporaneamente:<\/strong> un ciclo introdotto di recente elabora ora anche pi\u00f9 file che arrivano nello stesso intervallo di polling \u2013 una lacuna nota della versione precedente.<\/li>\n<li><strong>Cancellare i dati vecchi:<\/strong> prima di ogni importazione vengono rimosse le voci esistenti relative al rispettivo ID di file. Cos\u00ec non resta alcun chunk obsoleto quando un documento si \u00e8 accorciato.<\/li>\n<li><strong>Estrarre il contenuto:<\/strong> un nodo Switch dirama a seconda del tipo di file \u2013 PDF, Google Doc, testo o tabella vengono letti in modo diverso. Ulteriori formati come JSON o HTML si possono aggiungere con nodi supplementari.<\/li>\n<li><strong>Archiviare le tabelle due volte:<\/strong> i file CSV vengono da un lato preparati come documento testuale per il RAG, dall&#8217;altro salvati riga per riga in <code>document_rows<\/code> per le query SQL.<\/li>\n<\/ul>\n<p>Un ostacolo pratico in fase di configurazione: per la connessione Postgres a Supabase, secondo il video, va usato il <strong>transaction pooler<\/strong> (porta 6543), non la connessione diretta. La documentazione di n8n su questo punto sarebbe poco chiara.<\/p>\n<h3>Modelli impiegati<\/h3>\n<p>Per gli embeddings viene usato <code>text-embedding-3<\/code> di OpenAI, come modello linguistico <code>GPT-4o mini<\/code> \u2013 scelti volutamente economici e veloci. Per casi pi\u00f9 esigenti Medin consiglia modelli pi\u00f9 potenti come GPT-4o o Claude Sonnet 4. Importante: in inserimento e in recupero va usato lo stesso modello di embedding con lo stesso numero di dimensioni.<\/p>\n<h2>Tre esempi tratti dal video<\/h2>\n<p>Medin dimostra come l&#8217;agente scelga strumenti diversi a seconda della domanda:<\/p>\n<ul>\n<li><strong>Domanda su tabella:<\/strong> a &#8220;In quale mese abbiamo avuto pi\u00f9 clienti nuovi?&#8221; l&#8217;agente scrive una query SQL e fornisce il risultato corretto (dicembre, 129 clienti nuovi) \u2013 invece di affidarsi a chunk incompleti.<\/li>\n<li><strong>Domanda puramente RAG:<\/strong> a &#8220;Dove possiamo migliorare?&#8221; la ricerca per somiglianza trova il documento con i feedback, bench\u00e9 la parola &#8220;miglioramento&#8221; non sia stata usata di proposito.<\/li>\n<li><strong>Recupero di file con fonte:<\/strong> nel recupero di un verbale di riunione completo l&#8217;agente fornisce gli action item e, su richiesta, un link cliccabile alla fonte.<\/li>\n<\/ul>\n<h2>Conclusione<\/h2>\n<p>L&#8217;articolo mostra con sobriet\u00e0 perch\u00e9 un RAG ingenuo non basti per molte applicazioni aziendali: trascura il contesto e non sa calcolare sulle tabelle. L&#8217;approccio agentico risolve la cosa in modo pragmatico, dando all&#8217;agente IA pi\u00f9 strumenti e margine di decisione. Per i decisori delle PMI che valutano un assistente documentale questa \u00e8 una constatazione importante: la qualit\u00e0 non dipende dal modello soltanto, ma dall&#8217;architettura che gli sta dietro. Chi adotta il setup n8n presentato dovrebbe intenderlo come punto di partenza \u2013 prompt, strumenti e modello dei dati vanno adattati al proprio patrimonio informativo. Proprio la query SQL sulle tabelle e la gestione dei tipi di dato lasciano spazio a miglioramenti.<\/p>\n<p><strong>Fonte:<\/strong> Cole Medin \u2013 \u201eI Built the ULTIMATE n8n RAG AI Agent Template&#8221;, <a href=\"https:\/\/www.youtube.com\/watch?v=mQt1hOjBH9o\">https:\/\/www.youtube.com\/watch?v=mQt1hOjBH9o<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il RAG classico trascura spesso contesto e dati tabellari. Come un setup Agentic RAG in n8n interroga le basi di conoscenza in modo pi\u00f9 affidabile \u2013 spiegato nella pratica.<\/p>\n","protected":false},"author":0,"featured_media":1507,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"_links":{"self":[{"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/posts\/2193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/comments?post=2193"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/posts\/2193\/revisions"}],"predecessor-version":[{"id":2671,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/posts\/2193\/revisions\/2671"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/media\/1507"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/media?parent=2193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/categories?post=2193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/tags?post=2193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}