{"id":2417,"date":"2025-02-26T11:05:00","date_gmt":"2025-02-26T10:05:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2417"},"modified":"2026-08-05T17:25:27","modified_gmt":"2026-08-05T15:25:27","slug":"agentic-rag-n8n-kunskapsdatabas","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/sv\/2025\/02\/26\/agentic-rag-n8n-kunskapsdatabas\/","title":{"rendered":"Agentic RAG i n8n: varf\u00f6r klassisk RAG ofta misslyckas \u2013 och hur det g\u00f6rs b\u00e4ttre"},"content":{"rendered":"<p>M\u00e5nga f\u00f6retag satsar i dag p\u00e5 AI-assistenter som ska besvara fr\u00e5gor om egna dokument \u2013 om m\u00f6tesprotokoll, nyckeltalstabeller eller kundfeedback. Den g\u00e4ngse metoden bakom heter Retrieval Augmented Generation (RAG). Den \u00e4r utbredd, v\u00e4l underst\u00f6dd och snabbt genomf\u00f6rd i no-code-verktyg som n8n. Men: i praktiken ger klassisk RAG f\u00f6rv\u00e5nansv\u00e4rt ofta felaktiga eller ofullst\u00e4ndiga svar. Cole Medin visar i sin video vad det beror p\u00e5 och hur en s\u00e5 kallad agentic RAG-upps\u00e4ttning kringg\u00e5r de typiska svagheterna. Jag sammanfattar de viktigaste punkterna nyktert.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\"><strong>Det viktigaste i korthet<\/strong><\/p>\n<ul>\n<li>Klassisk RAG misslyckas framf\u00f6r allt med tv\u00e5 saker: den kan inte &#8220;zooma ut&#8221; till hela dokument och den kan inte g\u00f6ra n\u00e5gon verklig dataanalys \u00f6ver tabeller.<\/li>\n<li>Agentic RAG ger AI-agenten flera verktyg i st\u00e4llet f\u00f6r bara en s\u00f6kning \u2013 den avg\u00f6r sj\u00e4lv hur den s\u00f6ker igenom kunskapsdatabasen.<\/li>\n<li>Tabeller (CSV\/Excel) lagras separat s\u00e5 att de kan fr\u00e5gas via SQL \u2013 utan att en egen tabell m\u00e5ste skapas f\u00f6r varje fil.<\/li>\n<li>Agenten kan lista dokument, h\u00e4mta hela filer, citera k\u00e4llor och vid behov f\u00f6rb\u00e4ttra s\u00f6kningen.<\/li>\n<li>Den n8n-upps\u00e4ttning som visas \u00e4r en utbyggbar mall, inte en f\u00e4rdig produkt \u2013 prompter och verktyg m\u00e5ste anpassas till det egna anv\u00e4ndningsfallet.<\/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=\"Tv\u00e5spaltig j\u00e4mf\u00f6relse mellan klassisk RAG och agentic RAG med fyra punkter vardera\" style=\"width:100%;height:auto;border-radius:8px;border:1px solid #E5E2DE;\"\/><figcaption style=\"font-size:0.9em;color:#6b6b6b;margin-top:8px;\">Agentic RAG ger AI-agenten flera verktyg i st\u00e4llet f\u00f6r bara en s\u00f6kning.<\/figcaption><\/figure>\n<h2>Varf\u00f6r klassisk RAG g\u00f6r besviken i praktiken<\/h2>\n<p>RAG fungerar via en likhetss\u00f6kning: f\u00f6rfr\u00e5gan j\u00e4mf\u00f6rs med lagrade textstycken (&#8220;chunks&#8221;), och de mest passande skickas vidare till spr\u00e5kmodellen. Problemet \u00e4r urvalet. Det missar regelbundet viktig kontext.<\/p>\n<p>Medin n\u00e4mner tv\u00e5 konkreta svagheter:<\/p>\n<ul>\n<li><strong>Ingen blick \u00f6ver hela dokument:<\/strong> RAG tar bara in enskilda utdrag. Den som vill analysera trender i en tabell f\u00e5r kanske bara en fj\u00e4rdedel av raderna \u2013 och d\u00e4rmed ett felaktigt resultat.<\/li>\n<li><strong>Ingen verklig dataanalys:<\/strong> summor eller maxv\u00e4rden \u00f6ver en tabell g\u00e5r inte att ber\u00e4kna tillf\u00f6rlitligt med en ren texts\u00f6kning.<\/li>\n<\/ul>\n<p>Till det kommer ett praktiskt irritationsmoment: fr\u00e5gar man efter protokollet fr\u00e5n ett visst datum tar RAG ibland dokumentet fr\u00e5n fel dag \u2013 trots att datumet st\u00e5r i titeln. Och att koppla ihop olika dokument f\u00f6r att skapa ett bredare sammanhang lyckas s\u00e4llan.<\/p>\n<h2>Vad agentic RAG g\u00f6r annorlunda<\/h2>\n<p>Grundtanken \u00e4r enkel: i st\u00e4llet f\u00f6r att ge AI-agenten ett enda s\u00f6kverktyg f\u00e5r den flera \u2013 och f\u00e5r sj\u00e4lv avg\u00f6ra hur den tar sig an kunskapsdatabasen. Medin definierar agentic RAG s\u00e5 h\u00e4r:<\/p>\n<blockquote><p>Agentic RAG inneb\u00e4r att ge agenten f\u00f6rm\u00e5gan att t\u00e4nka \u00f6ver <strong>hur<\/strong> den s\u00f6ker igenom kunskapsdatabasen \u2013 i st\u00e4llet f\u00f6r att spika fast den vid ett enda verktyg.<\/p><\/blockquote>\n<p>Konkret kan agenten d\u00e4rmed f\u00f6rb\u00e4ttra sina s\u00f6kfr\u00e5gor, vid behov v\u00e4lja ett annat verktyg och pr\u00f6va flera v\u00e4gar tills den har ett h\u00e5llbart svar. Misslyckas den rena RAG-s\u00f6kningen \u00e4r den inte l\u00e4ngre blockerad.<\/p>\n<h3>Agentens fyra verktyg<\/h3>\n<p>I n8n-arbetsfl\u00f6det st\u00e5r f\u00f6ljande verktyg till agentens f\u00f6rfogande:<\/p>\n<ul>\n<li><strong>RAG-s\u00f6kning<\/strong> \u2013 den klassiska likhetss\u00f6kningen, i den f\u00f6rb\u00e4ttrade versionen inklusive k\u00e4llh\u00e4nvisning.<\/li>\n<li><strong>Lista dokument<\/strong> \u2013 agenten h\u00e4mtar alla dokument med titlar och ID:n och \u00f6verv\u00e4ger vilka som kan vara relevanta.<\/li>\n<li><strong>H\u00e4mta filinneh\u00e5ll<\/strong> \u2013 via fil-ID:t h\u00e4mtar den den fullst\u00e4ndiga texten i ett visst dokument (till exempel protokollet fr\u00e5n den 23 februari, igenk\u00e4nnbart p\u00e5 titeln).<\/li>\n<li><strong>SQL-fr\u00e5ga mot tabeller<\/strong> \u2013 CSV- och Excel-filer fr\u00e5gas som SQL-tabeller f\u00f6r att m\u00f6jligg\u00f6ra summor, maxv\u00e4rden och liknande analyser.<\/li>\n<\/ul>\n<p>I systemprompten instrueras agenten att b\u00f6rja med RAG och bara g\u00e5 \u00f6ver till de \u00f6vriga verktygen n\u00e4r s\u00f6kningen inte ger r\u00e4tt resultat. Ett viktigt p\u00e5pekande fr\u00e5n videon: att uttryckligen uppmana agenten till \u00e4rlighet \u2013 allts\u00e5 att \u00f6ppet s\u00e4ga n\u00e4r inget svar hittats \u2013 minskar hallucinationerna m\u00e4rkbart.<\/p>\n<h2>Hur tabelldata lagras<\/h2>\n<p>Den tekniskt mest intressanta delen g\u00e4ller tabeller. I Supabase skapas tre tabeller f\u00f6r detta:<\/p>\n<ul>\n<li><strong>documents<\/strong> \u2013 inneh\u00e5ller embeddings f\u00f6r RAG, metadata och inneh\u00e5llet i de enskilda chunkarna.<\/li>\n<li><strong>document_metadata<\/strong> \u2013 lagrar \u00f6vergripande information: titel, URL:er f\u00f6r k\u00e4llh\u00e4nvisningar och \u2013 f\u00f6r tabeller \u2013 schemat (allts\u00e5 kolumnnamnen).<\/li>\n<li><strong>document_rows<\/strong> \u2013 lagrar tabellraderna. Sj\u00e4lva data hamnar i en flexibel <strong>JSONB<\/strong>-kolumn vid namn <code>row_data<\/code>.<\/li>\n<\/ul>\n<p>Knepet: via JSONB g\u00e5r det att lagra godtyckliga kolumnstrukturer utan att beh\u00f6va skapa en egen SQL-tabell f\u00f6r varje CSV- eller Excel-fil. Agenten l\u00e4ser f\u00f6rst schemat ur metadata, f\u00f6rst\u00e5r vilka kolumner som finns och formulerar sedan en SQL-fr\u00e5ga mot <code>row_data<\/code>. Medin p\u00e5pekar uttryckligen att den h\u00e4r upps\u00e4ttningen \u00e4r f\u00f6renklad \u2013 schemat avsl\u00f6jar till exempel ingenting om datatyper, s\u00e5 en summa \u00f6ver en kolumn med dollartecken kan misslyckas. Han \u00e4r ute efter konceptet, inte ett perfekt genomf\u00f6rande.<\/p>\n<h2>RAG-pipelinen: fr\u00e5n Google Drive till Supabase<\/h2>\n<p>Innan agenten kan arbeta m\u00e5ste kunskapsdatabasen fyllas. Pipelinen l\u00f6per i flera steg:<\/p>\n<ul>\n<li><strong>Utl\u00f6sare:<\/strong> en Google Drive-trigger kontrollerar varje minut efter nya eller \u00e4ndrade filer. Alternativt fungerar Dropbox eller en lokal filtrigger. Raderade filer uppt\u00e4cks dock inte.<\/li>\n<li><strong>Flera filer samtidigt:<\/strong> en nyinbyggd slinga bearbetar nu ocks\u00e5 flera filer som kommer in i samma pollingintervall \u2013 en k\u00e4nd brist i den f\u00f6reg\u00e5ende versionen.<\/li>\n<li><strong>Radera gamla data:<\/strong> f\u00f6re varje import tas befintliga poster f\u00f6r respektive fil-ID bort. P\u00e5 s\u00e5 vis blir ingen f\u00f6r\u00e5ldrad chunk kvar n\u00e4r ett dokument har blivit kortare.<\/li>\n<li><strong>Extrahera inneh\u00e5ll:<\/strong> en switch-nod f\u00f6rgrenar beroende p\u00e5 filtyp \u2013 PDF, Google-dokument, text eller tabell l\u00e4ses ut p\u00e5 olika s\u00e4tt. Fler format som JSON eller HTML kan l\u00e4ggas till via ytterligare noder.<\/li>\n<li><strong>Lagra tabeller dubbelt:<\/strong> CSV-filer bereds dels som textdokument f\u00f6r RAG, dels lagras de radvis i <code>document_rows<\/code> f\u00f6r SQL-fr\u00e5gor.<\/li>\n<\/ul>\n<p>En praktisk snubbeltr\u00e5d vid upps\u00e4ttningen: f\u00f6r Postgres-anslutningen till Supabase m\u00e5ste enligt videon <strong>transaction pooler<\/strong> anv\u00e4ndas (port 6543), inte den direkta anslutningen. n8n:s dokumentation ska vara otydlig p\u00e5 den punkten.<\/p>\n<h3>Modeller som anv\u00e4nds<\/h3>\n<p>F\u00f6r embeddings anv\u00e4nds OpenAI:s <code>text-embedding-3<\/code>, som spr\u00e5kmodell <code>GPT-4o mini<\/code> \u2013 medvetet valt billigt och snabbt. F\u00f6r mer kr\u00e4vande fall rekommenderar Medin kraftfullare modeller som GPT-4o eller Claude Sonnet 4. Viktigt: vid inl\u00e4ggning och vid h\u00e4mtning m\u00e5ste samma embedding-modell med samma antal dimensioner anv\u00e4ndas.<\/p>\n<h2>Tre exempel ur videon<\/h2>\n<p>Medin demonstrerar hur agenten v\u00e4ljer olika verktyg beroende p\u00e5 fr\u00e5ga:<\/p>\n<ul>\n<li><strong>Tabellfr\u00e5ga:<\/strong> p\u00e5 &#8220;Vilken m\u00e5nad hade vi flest nya kunder?&#8221; skriver agenten en SQL-fr\u00e5ga och ger det korrekta resultatet (december, 129 nya kunder) \u2013 i st\u00e4llet f\u00f6r att f\u00f6rlita sig p\u00e5 ofullst\u00e4ndiga chunkar.<\/li>\n<li><strong>Ren RAG-fr\u00e5ga:<\/strong> p\u00e5 &#8220;Var kan vi bli b\u00e4ttre?&#8221; hittar likhetss\u00f6kningen feedbackdokumentet, trots att ordet &#8220;f\u00f6rb\u00e4ttring&#8221; medvetet inte anv\u00e4ndes.<\/li>\n<li><strong>Filh\u00e4mtning med k\u00e4lla:<\/strong> vid h\u00e4mtning av ett komplett m\u00f6tesprotokoll levererar agenten \u00e5tg\u00e4rdspunkterna och p\u00e5 f\u00f6rfr\u00e5gan en klickbar l\u00e4nk till k\u00e4llan.<\/li>\n<\/ul>\n<h2>Slutsats<\/h2>\n<p>Inl\u00e4gget visar nyktert varf\u00f6r naiv RAG inte r\u00e4cker f\u00f6r m\u00e5nga aff\u00e4rstill\u00e4mpningar: den missar kontext och kan inte r\u00e4kna med tabeller. Den agentiska ansatsen l\u00f6ser det pragmatiskt genom att ge AI-agenten flera verktyg och utrymme att v\u00e4lja. F\u00f6r beslutsfattare i sm\u00e5 och medelstora f\u00f6retag som \u00f6verv\u00e4ger en dokumentassistent \u00e4r det en viktig insikt: kvaliteten st\u00e5r och faller inte med modellen ensam, utan med arkitekturen bakom. Den som tar \u00f6ver den n8n-upps\u00e4ttning som presenteras b\u00f6r se den som en utg\u00e5ngspunkt \u2013 prompter, verktyg och datamodell h\u00f6r hemma anpassade till det egna databest\u00e5ndet. Just SQL-fr\u00e5gan mot tabeller och hanteringen av datatyper l\u00e4mnar utrymme f\u00f6r f\u00f6rb\u00e4ttringar.<\/p>\n<p><strong>K\u00e4lla:<\/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>Klassisk RAG missar ofta kontext och tabelldata. Hur en agentic RAG-upps\u00e4ttning i n8n s\u00f6ker igenom kunskapsdatabaser mer tillf\u00f6rlitligt \u2013 praktiskt f\u00f6rklarat.<\/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-2417","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\/2417","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=2417"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts\/2417\/revisions"}],"predecessor-version":[{"id":3085,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts\/2417\/revisions\/3085"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/media\/1507"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/media?parent=2417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/categories?post=2417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/tags?post=2417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}