pletzenauer — digital consulting

RAG-agent utan kod: kombinera n8n och Supabase produktivt

De flesta RAG-guider på nätet visar samma leksak om och om igen: “Chatta med din PDF”. Det som sällan nämns: de här demonstrationerna ligger långt från produktiv användning. Så snart kunskapsbasen växer, dokument uppdateras eller användare ställer frågor som ingen har testat börjar problemen. Det är precis här ansatsen som beskrivs här kommer in.

I sin video visar Cole Medin hur man med de två verktygen n8n (arbetsflödesautomatisering, jämförbart med Make.com eller Zapier) och Supabase (databasplattform med vektorstöd via PG Vector) kan bygga en RAG-AI-agent som ligger närmare praktiken än många andra guider. Löftet: ingen kod, överblickbar arbetsinsats och en uppbyggnad som växer med kunskapsbasen. För beslutsfattare i små och medelstora företag är det framför allt intressant eftersom man därmed kan göra interna dokument, protokoll eller handböcker sökbara utan att sysselsätta ett utvecklingsteam.

Det viktigaste i korthet

  • RAG (Retrieval Augmented Generation) kopplar en språkmodell till en egen kunskapsdatabas, så att agenten når dina dokument i stället för bara sin träningskunskap.
  • n8n sköter automatiseringen, Supabase fungerar samtidigt som chattminne och som vektordatabas.
  • Hela uppsättningen fungerar utan programmering och är enligt videon klar på under 15 minuter.
  • Två detaljer skiljer ansatsen från ytliga guider: ett skalbart lagringsutrymme för chatthistoriken och radering av föråldrade vektorer för att undvika dubbletter.
  • Den kostnadsfria nivån hos Supabase räcker enligt videon fullt ut för att komma igång.
Tvåspaltig jämförelse: till vänster typiska RAG-guider med demofokus och lokal lagring, till höger den praktiskt användbara ansatsen med Supabase-minne och radering av föråldrade vektorer.
Två ofta förbisedda detaljer avgör om en RAG-agent förblir användbar när kunskapsbasen växer.

Vad agenten presterar i praktiken

Funktionssättet visas i videon med ett enkelt exempel. Från början är kunskapsdatabasen tom, den tillhörande tabellen i Supabase innehåller inga poster. En testfråga om uppgifterna från ett möte kan agenten följaktligen inte besvara.

Därefter läggs ett dokument med mötesanteckningar som Google-dokument i en övervakad mapp. Inom ungefär en minut körs ett n8n-arbetsflöde i bakgrunden som bearbetar filen och lägger in den i kunskapsdatabasen. Sedan dyker en ny post upp i Supabase med sidinnehållet, metadata (bland annat Google Drive-filens ID) och den så kallade embedding-vektorn. Ställer man samma fråga igen levererar agenten nu det korrekta svaret ur dokumentet. Uppdateringar av filen upptäcks också och följs med.

Uppbyggnaden i översikt

Arbetsflödet består av två delar: själva chattagenten och en separat gren som automatiskt för in dokument i kunskapsbasen. En färdig JSON-mall kan enligt videon laddas ner från ett GitHub-repository och läsas in i den egna n8n-instansen via “Import from file”. Sedan behöver bara de egna inloggningsuppgifterna och önskad mapp fyllas i.

Förbered Supabase

Supabase sätts upp med ett GitHub-konto. Två avsnitt i projektinställningarna ger de nödvändiga uppgifterna:

  • Database: host, databasnamn, port, användare och lösenord för Postgres-anslutningen. De uppgifterna används för chattminnet.
  • API: den projektspecifika URL:en samt service role-hemligheten. De uppgifterna behövs för vektordatabasen.

För vektorsökningen tillhandahåller n8n färdig SQL-kod i sin dokumentation. Den körs en gång i Supabases SQL-editor och skapar automatiskt PG Vector-tillägget, dokumenttabellen och matchningsfunktionen för RAG. Egen programkod behövs inte för detta.

Chattagenten

Agenten startas av en trigger, “When a chat message is received”. Den ger samtidigt ett chattfönster direkt i n8n, där agenten kan testas utan deployment. Vid behov kan samma gränssnitt integreras på en webbplats med färdig inbäddningskod. Till agenten är tre byggstenar kopplade:

  • Chattmodell: i exemplet GPT-4o mini, ansluten via OpenAI-API-nyckeln. Alternativt går även Anthropic.
  • Chattminne: här används medvetet Postgres via Supabase i stället för det ofta rekommenderade lokala fönsterminnet. Det lokala minnet belastar n8n-servern och skalar dåligt. Den tabell som behövs skapar n8n själv vid behov.
  • RAG-verktyg: verktyget “retrieve documents” med Supabase som vektorlager, konfigurerat via tabellnamn och frågefunktion.

Lägg in dokument automatiskt

Arbetsflödets andra del håller kunskapsbasen aktuell. En Google Drive-trigger kontrollerar regelbundet en angiven mapp efter nya eller ändrade filer. Det fortsatta förloppet:

  • Fil-ID:t extraheras och skickas vidare till de följande stegen.
  • Befintliga vektorer med samma fil-ID raderas i Supabase (mer om det nedan).
  • Filen laddas ner, dokument omvandlas till text och Google Sheets till CSV för att få fram det rena textinnehållet.
  • Texten läggs in i vektordatabasen. För små filer utgår uppdelningen i avsnitt; i övrigt används en enkel rekursiv textsplitter.

Två detaljer som avgör den praktiska användbarheten

Inlägget lyfter fram två punkter som saknas i många guider och som skapar problem just där det blir allvar.

Skalbart chattminne

Historiken för ett samtal sparas ofta lokalt på n8n-instansen, eftersom det är enklast. Just det överbelastar servern när användningen växer. Att flytta ut den till en Postgres-databas hos Supabase är steget som gör agenten verkligt tålig.

Radera föråldrade vektorer

Den viktigare punkten gäller uppdateringar. Vektoralternativen i n8n arbetar inte som “upsert”: en befintlig vektor ersätts inte vid ny inläggning, utan dupliceras, eftersom fil-ID:t inte fungerar som vektor-ID. Uppdaterar man samma fil flera gånger samlas dubbletter, och svarskvaliteten blir lidande. Lösningen i arbetsflödet: före varje inläggning raderas alla vektorer vars metadata bär fil-ID:t för det aktuella Google Drive-dokumentet. Först därefter läggs den nya, uppdaterade versionen in. På så vis finns exakt en aktuell post kvar per dokument.

Vad detta betyder för beslutsfattare

Den uppbyggnad som visas är uttryckligen tänkt som en solid startpunkt, inte som en färdig slutlösning. Utvidgningar som bättre semantisk sökning eller en kompletterande sökordssökning är möjliga, men lämnas medvetet öppna. För en första produktionsnära kunskapsdatabas håller ansatsen ändå.

Kostnadssidan är värd att notera: den kostnadsfria Supabase-nivån räcker enligt videon för att komma igång, ett byte till den betalda planen lönar sig först vid skalning. Den som ändå arbetar med n8n kan sätta upp agenten med sina egna dokument på kort tid, utan att beställa extern utveckling.

Slutsats

Inlägget visar nyktert och begripligt hur en RAG-AI-agent kan byggas med n8n och Supabase utan programmering. Det egentliga mervärdet ligger inte i den snabba demoeffekten, utan i två ofta förbisedda detaljer: ett skalbart chattminne och konsekvent borttagning av föråldrade vektorer. Just de punkterna avgör om en agent förblir användbar när kunskapsbasen växer eller blir opålitlig med tiden. Den som vill göra interna dokument sökbara får här en pragmatisk ritning som kan byggas ut steg för steg.

Källa: Cole Medin, “This RAG AI Agent with n8n + Supabase is the Real Deal”, https://www.youtube.com/watch?v=PEI_ePNNfJQ

VyMinimalKlassiskDark