🔴 Expert — code vereist ⏱ 5-8 uur ai-agents

Bouw een AI-chatbot op basis van je eigen kennisbank (RAG)

Leer hoe je een chatbot bouwt die antwoorden geeft op basis van jouw eigen documenten, handleidingen of FAQ - in plaats van algemene trainingsdata. We gebruiken n8n, OpenAI embeddings en een eenvoudige vector store.

Tools: n8n Cloud of zelf-gehostOpenAI API (embeddings + chat)Supabase (gratis tier) als vector databaseJe eigen documenten (PDF of tekst)
Bouw een AI-chatbot op basis van je eigen kennisbank (RAG)

Wat je leert in deze handleiding

  • Wat RAG is en waarom het beter werkt dan fine-tuning
  • Hoe je documenten omzet naar embeddings
  • Hoe je embeddings opslaat in Supabase met pgvector
  • Hoe je een retrieval-augmented chatbot bouwt in n8n
  • Hoe je de kwaliteit bewaakt en verbetert

Wat is RAG en waarom heb je het nodig?

RAG staat voor Retrieval-Augmented Generation. In plaats van een AI te trainen op jouw data (duur en complex), zoekt het systeem bij elke vraag eerst de meest relevante stukken uit jouw documenten op - en geeft die als context mee aan het taalmodel.

Het resultaat: een chatbot die precies jouw kennisbank kent, geen dingen verzint die er niet in staan, en altijd up-to-date is als je documenten toevoegt.

Architectuur van het systeem

Het systeem bestaat uit twee flows: (1) een indexeer-pipeline die documenten verwerkt en opslaat, en (2) een query-pipeline die vragen beantwoordt.

Kernconcepten

Chunks: je documenten worden opgedeeld in blokken van ~500 woorden. Embeddings: elk blok wordt omgezet naar een vector van getallen die de betekenis representeert. Similarity search: bij een vraag zoek je de meest vergelijkbare vectoren op.

Stap 1: Supabase instellen met pgvector

Maak een gratis Supabase account aan. Activeer de pgvector extensie en maak een documenten-tabel aan.

Supabase SQL setup
-- Activeer pgvector extensie
create extension if not exists vector;

-- Maak documenten tabel
create table documents (
  id bigserial primary key,
  content text,
  embedding vector(1536),
  metadata jsonb,
  created_at timestamp default now()
);

-- Maak index voor snelle similarity search
create index on documents 
using ivfflat (embedding vector_cosine_ops)
with (lists = 100);

Stap 2: Document indexeer-pipeline in n8n

Bouw een n8n workflow die: (1) een document inleest, (2) het opdeelt in chunks van ~500 woorden, (3) voor elke chunk een embedding aanvraagt bij OpenAI, (4) de embedding opslaat in Supabase.

OpenAI Embedding request
{
  "model": "text-embedding-3-small",
  "input": "{{$json.chunk_text}}"
}

Stap 3: Query-pipeline bouwen

De query-pipeline: (1) gebruiker stelt vraag, (2) maak embedding van de vraag, (3) zoek de 5 meest vergelijkbare chunks op in Supabase, (4) stuur vraag + chunks naar GPT-4o als context, (5) stuur antwoord terug.

Supabase similarity query
-- Similarity search in Supabase
select content, metadata,
  1 - (embedding <=> $1::vector) as similarity
from documents
order by embedding <=> $1::vector
limit 5;

Verwachte kosten

OpenAI text-embedding-3-small: $0.02 per 1M tokens (indexeren is eenmalig). GPT-4o-mini voor antwoorden: circa $0.001 per vraag. Voor een kennisbank van 100 paginas is de indexeerkosten circa $0.05 eenmalig.

Kwaliteit verbeteren

Test je chatbot door dezelfde vragen te stellen die je klanten stellen. Analyseer antwoorden die incorrect zijn en check of de juiste chunks worden opgehaald. Verklein chunk-grootte bij slechte retrieval.

Nieuwsbrief

Meer handleidingen en tips?

Elke week de beste agentic AI inzichten en nieuwe handleidingen in je inbox.

Gratis aanmelden →