{"id":2395,"date":"2024-09-04T10:30:00","date_gmt":"2024-09-04T08:30:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2395"},"modified":"2026-08-05T17:25:16","modified_gmt":"2026-08-05T15:25:16","slug":"rag-agent-n8n-supabase","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/sv\/2024\/09\/04\/rag-agent-n8n-supabase\/","title":{"rendered":"RAG-agent utan kod: kombinera n8n och Supabase produktivt"},"content":{"rendered":"<p>De flesta RAG-guider p\u00e5 n\u00e4tet visar samma leksak om och om igen: &#8220;Chatta med din PDF&#8221;. Det som s\u00e4llan n\u00e4mns: de h\u00e4r demonstrationerna ligger l\u00e5ngt fr\u00e5n produktiv anv\u00e4ndning. S\u00e5 snart kunskapsbasen v\u00e4xer, dokument uppdateras eller anv\u00e4ndare st\u00e4ller fr\u00e5gor som ingen har testat b\u00f6rjar problemen. Det \u00e4r precis h\u00e4r ansatsen som beskrivs h\u00e4r kommer in.<\/p>\n<p>I sin video visar Cole Medin hur man med de tv\u00e5 verktygen <strong>n8n<\/strong> (arbetsfl\u00f6desautomatisering, j\u00e4mf\u00f6rbart med Make.com eller Zapier) och <strong>Supabase<\/strong> (databasplattform med vektorst\u00f6d via PG Vector) kan bygga en RAG-AI-agent som ligger n\u00e4rmare praktiken \u00e4n m\u00e5nga andra guider. L\u00f6ftet: ingen kod, \u00f6verblickbar arbetsinsats och en uppbyggnad som v\u00e4xer med kunskapsbasen. F\u00f6r beslutsfattare i sm\u00e5 och medelstora f\u00f6retag \u00e4r det framf\u00f6r allt intressant eftersom man d\u00e4rmed kan g\u00f6ra interna dokument, protokoll eller handb\u00f6cker s\u00f6kbara utan att syssels\u00e4tta ett utvecklingsteam.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\">\n<strong>Det viktigaste i korthet<\/strong><\/p>\n<ul>\n<li>RAG (Retrieval Augmented Generation) kopplar en spr\u00e5kmodell till en egen kunskapsdatabas, s\u00e5 att agenten n\u00e5r dina dokument i st\u00e4llet f\u00f6r bara sin tr\u00e4ningskunskap.<\/li>\n<li>n8n sk\u00f6ter automatiseringen, Supabase fungerar samtidigt som chattminne och som vektordatabas.<\/li>\n<li>Hela upps\u00e4ttningen fungerar utan programmering och \u00e4r enligt videon klar p\u00e5 under 15 minuter.<\/li>\n<li>Tv\u00e5 detaljer skiljer ansatsen fr\u00e5n ytliga guider: ett skalbart lagringsutrymme f\u00f6r chatthistoriken och radering av f\u00f6r\u00e5ldrade vektorer f\u00f6r att undvika dubbletter.<\/li>\n<li>Den kostnadsfria niv\u00e5n hos Supabase r\u00e4cker enligt videon fullt ut f\u00f6r att komma ig\u00e5ng.<\/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=\"Tv\u00e5spaltig j\u00e4mf\u00f6relse: till v\u00e4nster typiska RAG-guider med demofokus och lokal lagring, till h\u00f6ger den praktiskt anv\u00e4ndbara ansatsen med Supabase-minne och radering av f\u00f6r\u00e5ldrade vektorer.\" style=\"width:100%;height:auto;border-radius:8px;border:1px solid #E5E2DE;\"\/><figcaption style=\"font-size:0.9em;color:#6b6b6b;margin-top:8px;\">Tv\u00e5 ofta f\u00f6rbisedda detaljer avg\u00f6r om en RAG-agent f\u00f6rblir anv\u00e4ndbar n\u00e4r kunskapsbasen v\u00e4xer.<\/figcaption><\/figure>\n<h2>Vad agenten presterar i praktiken<\/h2>\n<p>Funktionss\u00e4ttet visas i videon med ett enkelt exempel. Fr\u00e5n b\u00f6rjan \u00e4r kunskapsdatabasen tom, den tillh\u00f6rande tabellen i Supabase inneh\u00e5ller inga poster. En testfr\u00e5ga om uppgifterna fr\u00e5n ett m\u00f6te kan agenten f\u00f6ljaktligen inte besvara.<\/p>\n<p>D\u00e4refter l\u00e4ggs ett dokument med m\u00f6tesanteckningar som Google-dokument i en \u00f6vervakad mapp. Inom ungef\u00e4r en minut k\u00f6rs ett n8n-arbetsfl\u00f6de i bakgrunden som bearbetar filen och l\u00e4gger in den i kunskapsdatabasen. Sedan dyker en ny post upp i Supabase med sidinneh\u00e5llet, metadata (bland annat Google Drive-filens ID) och den s\u00e5 kallade embedding-vektorn. St\u00e4ller man samma fr\u00e5ga igen levererar agenten nu det korrekta svaret ur dokumentet. Uppdateringar av filen uppt\u00e4cks ocks\u00e5 och f\u00f6ljs med.<\/p>\n<h2>Uppbyggnaden i \u00f6versikt<\/h2>\n<p>Arbetsfl\u00f6det best\u00e5r av tv\u00e5 delar: sj\u00e4lva chattagenten och en separat gren som automatiskt f\u00f6r in dokument i kunskapsbasen. En f\u00e4rdig JSON-mall kan enligt videon laddas ner fr\u00e5n ett GitHub-repository och l\u00e4sas in i den egna n8n-instansen via &#8220;Import from file&#8221;. Sedan beh\u00f6ver bara de egna inloggningsuppgifterna och \u00f6nskad mapp fyllas i.<\/p>\n<h3>F\u00f6rbered Supabase<\/h3>\n<p>Supabase s\u00e4tts upp med ett GitHub-konto. Tv\u00e5 avsnitt i projektinst\u00e4llningarna ger de n\u00f6dv\u00e4ndiga uppgifterna:<\/p>\n<ul>\n<li><strong>Database:<\/strong> host, databasnamn, port, anv\u00e4ndare och l\u00f6senord f\u00f6r Postgres-anslutningen. De uppgifterna anv\u00e4nds f\u00f6r chattminnet.<\/li>\n<li><strong>API:<\/strong> den projektspecifika URL:en samt service role-hemligheten. De uppgifterna beh\u00f6vs f\u00f6r vektordatabasen.<\/li>\n<\/ul>\n<p>F\u00f6r vektors\u00f6kningen tillhandah\u00e5ller n8n f\u00e4rdig SQL-kod i sin dokumentation. Den k\u00f6rs en g\u00e5ng i Supabases SQL-editor och skapar automatiskt PG Vector-till\u00e4gget, dokumenttabellen och matchningsfunktionen f\u00f6r RAG. Egen programkod beh\u00f6vs inte f\u00f6r detta.<\/p>\n<h3>Chattagenten<\/h3>\n<p>Agenten startas av en trigger, &#8220;When a chat message is received&#8221;. Den ger samtidigt ett chattf\u00f6nster direkt i n8n, d\u00e4r agenten kan testas utan deployment. Vid behov kan samma gr\u00e4nssnitt integreras p\u00e5 en webbplats med f\u00e4rdig inb\u00e4ddningskod. Till agenten \u00e4r tre byggstenar kopplade:<\/p>\n<ul>\n<li><strong>Chattmodell:<\/strong> i exemplet GPT-4o mini, ansluten via OpenAI-API-nyckeln. Alternativt g\u00e5r \u00e4ven Anthropic.<\/li>\n<li><strong>Chattminne:<\/strong> h\u00e4r anv\u00e4nds medvetet Postgres via Supabase i st\u00e4llet f\u00f6r det ofta rekommenderade lokala f\u00f6nsterminnet. Det lokala minnet belastar n8n-servern och skalar d\u00e5ligt. Den tabell som beh\u00f6vs skapar n8n sj\u00e4lv vid behov.<\/li>\n<li><strong>RAG-verktyg:<\/strong> verktyget &#8220;retrieve documents&#8221; med Supabase som vektorlager, konfigurerat via tabellnamn och fr\u00e5gefunktion.<\/li>\n<\/ul>\n<h3>L\u00e4gg in dokument automatiskt<\/h3>\n<p>Arbetsfl\u00f6dets andra del h\u00e5ller kunskapsbasen aktuell. En Google Drive-trigger kontrollerar regelbundet en angiven mapp efter nya eller \u00e4ndrade filer. Det fortsatta f\u00f6rloppet:<\/p>\n<ul>\n<li>Fil-ID:t extraheras och skickas vidare till de f\u00f6ljande stegen.<\/li>\n<li>Befintliga vektorer med samma fil-ID raderas i Supabase (mer om det nedan).<\/li>\n<li>Filen laddas ner, dokument omvandlas till text och Google Sheets till CSV f\u00f6r att f\u00e5 fram det rena textinneh\u00e5llet.<\/li>\n<li>Texten l\u00e4ggs in i vektordatabasen. F\u00f6r sm\u00e5 filer utg\u00e5r uppdelningen i avsnitt; i \u00f6vrigt anv\u00e4nds en enkel rekursiv textsplitter.<\/li>\n<\/ul>\n<h2>Tv\u00e5 detaljer som avg\u00f6r den praktiska anv\u00e4ndbarheten<\/h2>\n<p>Inl\u00e4gget lyfter fram tv\u00e5 punkter som saknas i m\u00e5nga guider och som skapar problem just d\u00e4r det blir allvar.<\/p>\n<h3>Skalbart chattminne<\/h3>\n<p>Historiken f\u00f6r ett samtal sparas ofta lokalt p\u00e5 n8n-instansen, eftersom det \u00e4r enklast. Just det \u00f6verbelastar servern n\u00e4r anv\u00e4ndningen v\u00e4xer. Att flytta ut den till en Postgres-databas hos Supabase \u00e4r steget som g\u00f6r agenten verkligt t\u00e5lig.<\/p>\n<h3>Radera f\u00f6r\u00e5ldrade vektorer<\/h3>\n<p>Den viktigare punkten g\u00e4ller uppdateringar. Vektoralternativen i n8n arbetar inte som &#8220;upsert&#8221;: en befintlig vektor ers\u00e4tts inte vid ny inl\u00e4ggning, utan dupliceras, eftersom fil-ID:t inte fungerar som vektor-ID. Uppdaterar man samma fil flera g\u00e5nger samlas dubbletter, och svarskvaliteten blir lidande. L\u00f6sningen i arbetsfl\u00f6det: f\u00f6re varje inl\u00e4ggning raderas alla vektorer vars metadata b\u00e4r fil-ID:t f\u00f6r det aktuella Google Drive-dokumentet. F\u00f6rst d\u00e4refter l\u00e4ggs den nya, uppdaterade versionen in. P\u00e5 s\u00e5 vis finns exakt en aktuell post kvar per dokument.<\/p>\n<h2>Vad detta betyder f\u00f6r beslutsfattare<\/h2>\n<p>Den uppbyggnad som visas \u00e4r uttryckligen t\u00e4nkt som en solid startpunkt, inte som en f\u00e4rdig slutl\u00f6sning. Utvidgningar som b\u00e4ttre semantisk s\u00f6kning eller en kompletterande s\u00f6kordss\u00f6kning \u00e4r m\u00f6jliga, men l\u00e4mnas medvetet \u00f6ppna. F\u00f6r en f\u00f6rsta produktionsn\u00e4ra kunskapsdatabas h\u00e5ller ansatsen \u00e4nd\u00e5.<\/p>\n<p>Kostnadssidan \u00e4r v\u00e4rd att notera: den kostnadsfria Supabase-niv\u00e5n r\u00e4cker enligt videon f\u00f6r att komma ig\u00e5ng, ett byte till den betalda planen l\u00f6nar sig f\u00f6rst vid skalning. Den som \u00e4nd\u00e5 arbetar med n8n kan s\u00e4tta upp agenten med sina egna dokument p\u00e5 kort tid, utan att best\u00e4lla extern utveckling.<\/p>\n<h2>Slutsats<\/h2>\n<p>Inl\u00e4gget visar nyktert och begripligt hur en RAG-AI-agent kan byggas med n8n och Supabase utan programmering. Det egentliga merv\u00e4rdet ligger inte i den snabba demoeffekten, utan i tv\u00e5 ofta f\u00f6rbisedda detaljer: ett skalbart chattminne och konsekvent borttagning av f\u00f6r\u00e5ldrade vektorer. Just de punkterna avg\u00f6r om en agent f\u00f6rblir anv\u00e4ndbar n\u00e4r kunskapsbasen v\u00e4xer eller blir op\u00e5litlig med tiden. Den som vill g\u00f6ra interna dokument s\u00f6kbara f\u00e5r h\u00e4r en pragmatisk ritning som kan byggas ut steg f\u00f6r steg.<\/p>\n<p><strong>K\u00e4lla:<\/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>S\u00e5 bygger du en produktionsf\u00e4rdig RAG-AI-agent med n8n och Supabase utan kod: kunskapsdatabas, vektors\u00f6kning och automatiska dokumentuppdateringar f\u00f6rklarade.<\/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-2395","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"_links":{"self":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts\/2395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/comments?post=2395"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts\/2395\/revisions"}],"predecessor-version":[{"id":3040,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts\/2395\/revisions\/3040"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/media\/1506"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/media?parent=2395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/categories?post=2395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/tags?post=2395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}