pletzenauer — digital consulting

RAG-agent uden kode: n8n og Supabase kombineret i produktion

De fleste RAG-tutorials på nettet viser det samme legetøj igen og igen: “chat med din PDF”. Hvad der sjældent nævnes: de demoer er langt fra en produktiv anvendelse. Så snart videngrundlaget vokser, dokumenter opdateres, eller brugere stiller spørgsmål, ingen har testet, begynder problemerne. Præcis dér sætter den tilgang ind, der beskrives her.

I sin video viser Cole Medin, hvordan man med de to værktøjer n8n (workflow-automatisering, sammenligneligt med Make.com eller Zapier) og Supabase (databaseplatform med vektorunderstøttelse via PG Vector) kan bygge en RAG-AI-agent, der ligger tættere på praksis end mange andre vejledninger. Løftet: ingen kode, overskuelig indsats og en opbygning, der vokser med videngrundlaget. For beslutningstagere i SMV’er er det især interessant, fordi man derved kan gøre interne dokumenter, referater eller manualer søgbare uden at ansætte et udviklingsteam.

Det vigtigste kort fortalt

  • RAG (Retrieval Augmented Generation) forbinder en sprogmodel med en egen videnbase, så agenten tilgår dine dokumenter i stedet for kun sin træningsviden.
  • n8n står for automatiseringen, Supabase fungerer på én gang som chat-hukommelse og som vektordatabase.
  • Hele opbygningen fungerer uden programmering og er ifølge videoen sat op på under 15 minutter.
  • To detaljer hæver tilgangen over overfladiske tutorials: et skalerbart lager til chatforløbet og sletning af forældede vektorer for at undgå dubletter.
  • Supabases gratis niveau er ifølge videoen fuldt tilstrækkeligt til at komme i gang.
Sammenligning i to spalter: til venstre typiske RAG-tutorials med demofokus og lokalt lager, til højre den praksisegnede tilgang med Supabase-hukommelse og sletning af forældede vektorer.
To ofte oversete detaljer afgør, om en RAG-agent forbliver brugbar, når videngrundlaget vokser.

Hvad agenten præsterer i praksis

Funktionsmåden vises i videoen med et enkelt eksempel. I begyndelsen er videnbasen tom, den tilhørende tabel i Supabase indeholder ingen poster. Et testspørgsmål om opgaverne fra et møde kan agenten følgelig ikke besvare.

Derefter lægges et dokument med mødenoter som Google-dokument i en overvåget mappe. Inden for cirka et minut kører et n8n-workflow i baggrunden, som behandler filen og indsætter den i videnbasen. Bagefter dukker der en ny post op i Supabase med sideindholdet, metadataene (blandt andet Google Drive-fil-id’et) og den såkaldte embedding-vektor. Stiller man det samme spørgsmål igen, leverer agenten nu det korrekte svar fra dokumentet. Opdateringer af filen bliver også registreret og fulgt op.

Opbygningen i overblik

Workflowet består af to dele: selve chat-agenten og en separat strækning, der automatisk lægger dokumenter ind i videngrundlaget. En færdig JSON-skabelon kan ifølge videoen hentes fra et GitHub-repository og indlæses i ens egen n8n-instans via “Import from file”. Derefter skal blot ens egne adgangsoplysninger og den ønskede mappe tilføjes.

Forbered Supabase

Supabase sættes op med en GitHub-konto. To områder i projektindstillingerne leverer de nødvendige adgangsoplysninger:

  • Database: host, databasenavn, port, bruger og adgangskode til Postgres-forbindelsen. De oplysninger bruges til chat-hukommelsen.
  • API: den projektspecifikke URL samt service role-secret. De oplysninger er nødvendige for vektordatabasen.

Til vektorsøgningen stiller n8n færdig SQL-kode til rådighed i sin dokumentation. Den køres én gang i Supabases SQL-editor og opretter automatisk PG Vector-udvidelsen, dokumenttabellen og matching-funktionen til RAG. Egen programkode er ikke nødvendig.

Chat-agenten

Agenten startes af en trigger “When a chat message is received”. Den giver samtidig et chatvindue direkte i n8n, hvor agenten kan testes uden deployment. Ved behov kan den samme brugerflade integreres på et website med færdig indlejringskode. Til agenten er der koblet tre byggeklodser:

  • Chatmodel: i eksemplet GPT-4o mini, tilkoblet via OpenAI-API-nøglen. Alternativt er Anthropic også muligt.
  • Chat-hukommelse: her bruges bevidst Postgres via Supabase i stedet for det ofte anbefalede lokale vindueslager. Det lokale lager belaster n8n-serveren og skalerer dårligt. n8n opretter selv den nødvendige tabel ved behov.
  • RAG-værktøj: værktøjet “retrieve documents” med Supabase som vektorlager, konfigureret via tabelnavn og forespørgselsfunktion.

Læg dokumenter ind automatisk

Anden del af workflowet holder videngrundlaget opdateret. En Google Drive-trigger tjekker regelmæssigt en fastlagt mappe for nye eller ændrede filer. Det videre forløb:

  • Fil-id’et udtrækkes og gives videre til de følgende trin.
  • Eksisterende vektorer med samme fil-id slettes i Supabase (mere om det nedenfor).
  • Filen hentes, dokumenter konverteres til tekst og Google Sheets til CSV for at få det rene tekstindhold.
  • Teksten indsættes i vektordatabasen. Ved små filer falder opdelingen i afsnit bort; ellers bruges en simpel rekursiv tekst-splitter.

To detaljer, der afgør praksisegnetheden

Indlægget fremhæver to punkter, som mangler i mange tutorials og fører til problemer netop dér, hvor det bliver alvor.

Skalerbar chat-hukommelse

Forløbet i en samtale gemmes ofte lokalt på n8n-instansen, fordi det er nemmest. Netop det overbelaster serveren, efterhånden som brugen vokser. At flytte det ud i en Postgres-database hos Supabase er det skridt, der virkelig gør agenten robust.

Slet forældede vektorer

Det vigtigere punkt handler om opdateringer. Vektormulighederne i n8n arbejder ikke som “upsert”: en eksisterende vektor bliver ikke erstattet ved fornyet indsættelse, men duplikeret, fordi fil-id’et ikke bruges som vektor-id. Opdaterer man den samme fil flere gange, hober dubletterne sig op, og svarkvaliteten lider. Løsningen i workflowet: før hver indsættelse slettes alle vektorer, hvis metadata bærer fil-id’et på det aktuelle Google Drive-dokument. Først derefter indsættes den nye, opdaterede version. Sådan bliver der præcis én aktuel post pr. dokument.

Vurdering for beslutningstagere

Den viste opbygning er udtrykkeligt tænkt som et solidt udgangspunkt, ikke som en færdig slutløsning. Udvidelser som bedre semantisk søgning eller en yderligere nøgleordssøgning er mulige, men bevidst ladt åbne. Til en første produktionsnær videnbase er tilgangen alligevel bæredygtig.

Bemærkelsesværdig er omkostningssiden: Supabases gratis niveau er ifølge videoen nok til at komme i gang, et skift til den betalte plan betaler sig først ved skalering. Arbejder du alligevel med n8n, kan du sætte agenten op med dine egne dokumenter på kort tid uden at hyre ekstern udvikling.

Konklusion

Indlægget viser nøgternt og forståeligt, hvordan en RAG-AI-agent kan bygges med n8n og Supabase uden programmering. Den egentlige merværdi ligger ikke i den hurtige demoeffekt, men i to ofte oversete detaljer: en skalerbar chat-hukommelse og den konsekvente fjernelse af forældede vektorer. Præcis de punkter afgør, om en agent forbliver brugbar, når videngrundlaget vokser, eller med tiden bliver upålidelig. Vil du gøre interne dokumenter søgbare, får du her en pragmatisk skabelon, der kan udvides skridt for skridt.

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

VisningMinimalKlassiskDark