{"id":2192,"date":"2024-09-04T10:30:00","date_gmt":"2024-09-04T08:30:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2192"},"modified":"2026-08-05T17:23:21","modified_gmt":"2026-08-05T15:23:21","slug":"agente-rag-n8n-supabase","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/it\/2024\/09\/04\/agente-rag-n8n-supabase\/","title":{"rendered":"Agente RAG senza codice: combinare n8n e Supabase in modo produttivo"},"content":{"rendered":"<p>La maggior parte dei tutorial su RAG in rete mostra sempre lo stesso giocattolo: &#8220;Parli con il Suo PDF&#8221;. Quello che raramente si dice: queste demo sono lontane da un impiego produttivo. Non appena la base di conoscenza cresce, i documenti vengono aggiornati o gli utenti pongono domande che nessuno ha testato, iniziano i problemi. \u00c8 esattamente qui che interviene l&#8217;approccio descritto di seguito.<\/p>\n<p>Nel suo video Cole Medin mostra come costruire, con i due strumenti <strong>n8n<\/strong> (automazione dei flussi di lavoro, paragonabile a Make.com o Zapier) e <strong>Supabase<\/strong> (piattaforma di database con supporto vettoriale tramite PG Vector), un agente IA RAG pi\u00f9 vicino alla pratica di molte altre guide. La promessa: nessun codice, impegno contenuto e un&#8217;architettura che cresce insieme alla base di conoscenza. Per i decisori nelle PMI questo \u00e8 interessante soprattutto perch\u00e9 consente di rendere ricercabili documenti interni, verbali o manuali senza impiegare un team di sviluppo.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\">\n<strong>L&#8217;essenziale in breve<\/strong><\/p>\n<ul>\n<li>RAG (Retrieval Augmented Generation) collega un modello linguistico a una base di conoscenza propria, cos\u00ec che l&#8217;agente acceda ai Suoi documenti e non solo al sapere acquisito in addestramento.<\/li>\n<li>n8n si occupa dell&#8217;automazione, Supabase funge al tempo stesso da memoria della chat e da database vettoriale.<\/li>\n<li>L&#8217;intera architettura funziona senza programmazione ed \u00e8 configurata, secondo il video, in meno di 15 minuti.<\/li>\n<li>Due dettagli distinguono questo approccio dai tutorial superficiali: una memoria scalabile per la cronologia della chat e la cancellazione dei vettori obsoleti per evitare duplicati.<\/li>\n<li>Il piano gratuito di Supabase, secondo il video, \u00e8 del tutto sufficiente per iniziare.<\/li>\n<\/ul>\n<\/div>\n<figure style=\"margin:28px 0;\"><img decoding=\"async\" src=\"https:\/\/pletzenauer.com\/wp-content\/uploads\/2026\/06\/1486-1.png\" alt=\"Confronto su due colonne: a sinistra i tipici tutorial su RAG orientati alla demo e con memoria locale, a destra l'approccio adatto alla pratica con memoria su Supabase e cancellazione dei vettori obsoleti.\" style=\"width:100%;height:auto;border-radius:8px;border:1px solid #E5E2DE;\"\/><figcaption style=\"font-size:0.9em;color:#6b6b6b;margin-top:8px;\">Due dettagli spesso trascurati decidono se un agente RAG resti utilizzabile man mano che la base di conoscenza cresce.<\/figcaption><\/figure>\n<h2>Che cosa fa l&#8217;agente nella pratica<\/h2>\n<p>Il funzionamento viene mostrato nel video con un esempio semplice. All&#8217;inizio la base di conoscenza \u00e8 vuota, la relativa tabella in Supabase non contiene voci. A una domanda di prova sui compiti emersi da una riunione l&#8217;agente, coerentemente, non sa rispondere.<\/p>\n<p>Poi viene depositato un documento con gli appunti della riunione come Google Doc in una cartella monitorata. Nel giro di circa un minuto gira in background un flusso di lavoro n8n che elabora il file e lo inserisce nella base di conoscenza. Dopodich\u00e9 in Supabase compare un nuovo record con il contenuto della pagina, i metadati (tra cui l&#8217;ID del file di Google Drive) e il cosiddetto vettore di embedding. Ponendo di nuovo la stessa domanda, l&#8217;agente fornisce ora la risposta corretta tratta dal documento. Anche gli aggiornamenti del file vengono riconosciuti e recepiti.<\/p>\n<h2>L&#8217;architettura in sintesi<\/h2>\n<p>Il flusso di lavoro si compone di due parti: l&#8217;agente di chat vero e proprio e un percorso separato che inserisce automaticamente i documenti nella base di conoscenza. Un template JSON gi\u00e0 pronto si pu\u00f2 scaricare, secondo il video, da un repository GitHub e caricare nella propria istanza n8n tramite &#8220;Import from file&#8221;. Dopodich\u00e9 occorre solo aggiungere le proprie credenziali e la cartella desiderata.<\/p>\n<h3>Preparare Supabase<\/h3>\n<p>Supabase si configura con un account GitHub. Due sezioni delle impostazioni di progetto forniscono le credenziali necessarie:<\/p>\n<ul>\n<li><strong>Database:<\/strong> host, nome del database, porta, utente e password per la connessione Postgres. Questi dati vengono usati per la memoria della chat.<\/li>\n<li><strong>API:<\/strong> l&#8217;URL specifico del progetto e il service role secret. Questi dati servono per il database vettoriale.<\/li>\n<\/ul>\n<p>Per la ricerca vettoriale n8n mette a disposizione nella sua documentazione codice SQL gi\u00e0 pronto. Lo si esegue una sola volta nell&#8217;editor SQL di Supabase e crea automaticamente l&#8217;estensione PG Vector, la tabella dei documenti e la funzione di matching per RAG. Non serve scrivere codice proprio.<\/p>\n<h3>L&#8217;agente di chat<\/h3>\n<p>L&#8217;agente viene avviato da un trigger &#8220;When a chat message is received&#8221;. Questo mette a disposizione anche una finestra di chat direttamente in n8n, con cui testare l&#8217;agente senza deployment. All&#8217;occorrenza la stessa interfaccia si pu\u00f2 integrare in un sito web tramite codice di incorporamento gi\u00e0 pronto. All&#8217;agente sono collegati tre elementi:<\/p>\n<ul>\n<li><strong>Modello di chat:<\/strong> nell&#8217;esempio GPT-4o mini, collegato tramite la chiave API di OpenAI. In alternativa \u00e8 possibile anche Anthropic.<\/li>\n<li><strong>Memoria della chat:<\/strong> qui si usa volutamente Postgres su Supabase al posto della memoria a finestra locale spesso consigliata. La memoria locale grava sul server n8n e scala male. La tabella necessaria la crea n8n stesso all&#8217;occorrenza.<\/li>\n<li><strong>Strumento RAG:<\/strong> il tool &#8220;retrieve documents&#8221; con Supabase come archivio vettoriale, configurato tramite nome della tabella e funzione di query.<\/li>\n<\/ul>\n<h3>Inserire i documenti automaticamente<\/h3>\n<p>La seconda parte del flusso di lavoro mantiene aggiornata la base di conoscenza. Un trigger di Google Drive controlla regolarmente in una cartella definita la presenza di file nuovi o modificati. Il seguito della procedura:<\/p>\n<ul>\n<li>L&#8217;ID del file viene estratto e passato ai passaggi successivi.<\/li>\n<li>I vettori esistenti con lo stesso ID di file vengono cancellati in Supabase (pi\u00f9 avanti maggiori dettagli).<\/li>\n<li>Il file viene scaricato, i documenti vengono convertiti in testo e i Google Sheets in CSV, per ricavarne il puro contenuto testuale.<\/li>\n<li>Il testo viene inserito nel database vettoriale. Per i file piccoli la suddivisione in sezioni non serve; altrimenti si usa un semplice text splitter ricorsivo.<\/li>\n<\/ul>\n<h2>Due dettagli che decidono l&#8217;idoneit\u00e0 alla pratica<\/h2>\n<p>L&#8217;articolo mette in evidenza due punti che in molti tutorial mancano e che creano problemi proprio dove le cose si fanno serie.<\/p>\n<h3>Memoria della chat scalabile<\/h3>\n<p>La cronologia di una conversazione viene spesso salvata localmente sull&#8217;istanza n8n, perch\u00e9 \u00e8 la via pi\u00f9 semplice. \u00c8 proprio questo a sovraccaricare il server con l&#8217;aumentare dell&#8217;uso. Lo spostamento in un database Postgres su Supabase \u00e8 il passaggio che rende l&#8217;agente davvero robusto.<\/p>\n<h3>Cancellare i vettori obsoleti<\/h3>\n<p>Il punto pi\u00f9 importante riguarda gli aggiornamenti. Le opzioni vettoriali in n8n non funzionano come &#8220;Upsert&#8221;: un vettore esistente, al nuovo inserimento, non viene sostituito ma duplicato, perch\u00e9 l&#8217;ID del file non funge da ID del vettore. Aggiornando pi\u00f9 volte lo stesso file si accumulano doppioni e la qualit\u00e0 delle risposte ne risente. La soluzione adottata nel flusso di lavoro: prima di ogni inserimento vengono cancellati tutti i vettori i cui metadati riportano l&#8217;ID del file del documento Google Drive corrente. Solo dopo viene inserita la nuova versione aggiornata. Cos\u00ec per ogni documento resta esattamente un record aggiornato.<\/p>\n<h2>Inquadramento per i decisori<\/h2>\n<p>L&#8217;architettura mostrata \u00e8 pensata esplicitamente come un solido punto di partenza, non come soluzione finale gi\u00e0 pronta. Ampliamenti come una ricerca semantica migliore o una ricerca per parole chiave aggiuntiva sono possibili, ma vengono volutamente lasciati aperti. Per una prima base di conoscenza vicina alla produzione l&#8217;approccio \u00e8 comunque sostenibile.<\/p>\n<p>Notevole \u00e8 il lato dei costi: il piano gratuito di Supabase basta, secondo il video, per iniziare, e il passaggio al piano a pagamento conviene solo quando si scala. Chi lavora gi\u00e0 con n8n pu\u00f2 allestire l&#8217;agente con i propri documenti in poco tempo, senza commissionare sviluppo esterno.<\/p>\n<h2>Conclusione<\/h2>\n<p>L&#8217;articolo mostra in modo sobrio e comprensibile come realizzare un agente IA RAG con n8n e Supabase senza programmazione. Il valore aggiunto reale non sta nell&#8217;effetto demo immediato, ma in due dettagli spesso trascurati: una memoria della chat scalabile e la rimozione sistematica dei vettori obsoleti. Sono proprio questi punti a decidere se un agente resti utilizzabile con una base di conoscenza crescente o se col tempo diventi inaffidabile. Chi vuole rendere ricercabili i documenti interni trova qui uno schema pragmatico, ampliabile passo dopo passo.<\/p>\n<p><strong>Fonte:<\/strong> Cole Medin, &#8220;This RAG AI Agent with n8n + Supabase is the Real Deal&#8221;, <a href=\"https:\/\/www.youtube.com\/watch?v=PEI_ePNNfJQ\">https:\/\/www.youtube.com\/watch?v=PEI_ePNNfJQ<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come costruire con n8n e Supabase un agente IA RAG pronto per la produzione senza codice: base di conoscenza, ricerca vettoriale e aggiornamento automatico dei documenti.<\/p>\n","protected":false},"author":0,"featured_media":1506,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2192","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\/2192","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=2192"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/posts\/2192\/revisions"}],"predecessor-version":[{"id":2670,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/posts\/2192\/revisions\/2670"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/media\/1506"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/media?parent=2192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/categories?post=2192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/it\/wp-json\/wp\/v2\/tags?post=2192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}