RAG-implementatie laten maken: retrieval-augmented generation voor enterprise-AI

Uw LLM hallucineert, kent uw producten niet en kan geen bron citeren. Retrieval-augmented generation lost dat op zonder fine-tuning: real-time grounding op uw eigen kennisbronnen — documentatie, contracten, tickets, wiki's, productdata — met citation-grounding voor accountability en hybrid retrieval voor hoge precisie. Wij bouwen productie-RAG die meet wat-ie weet en weet wat-ie níet weet.

Hybrid retrieval (BM25 + dense) Reranking (Cohere, ColBERT) Citation-grounding RAGAS evaluatie Multi-modal (PDF, tabel, beeld) Agentic RAG
Bespreek uw RAG-case Bekijk architectuur
Query Embedding + BM25 hybrid retrieval Vector-DB Pinecone / Qdrant Weaviate / pgvector Reranker Cohere Rerank ColBERT v2 LLM-synthesis met citations [doc-12 §3.2] [wiki-handbook] [ticket-4421]

Wanneer RAG, wanneer fine-tuning, wanneer alleen prompt engineering

De drie methoden om een LLM domein-kennis te geven hebben verschillende kostenstructuren, latency-profielen en accountability-eigenschappen. De juiste keuze hangt af van datavers-frequentie, het volume aan grond-waarheid en de eisen rond bronvermelding. RAG is in negen van de tien enterprise-cases het juiste startpunt.

Prompt engineering werkt zolang uw kennis in een paar duizend tokens past en zelden verandert. Zodra uw kennisbron groter is dan het context-window of dagelijks muteert (productcatalogus, ticket-historie, juridische updates), valt prompt engineering om. Fine-tuning is bedoeld om gedrag of stijl te leren — niet om feiten in te bakken. Een fine-tuned model dat een verzonnen feit produceert is even moeilijk te corrigeren als een fout in een gewicht-matrix; u kunt het niet selectief vergeten.

RAG ontkoppelt kennis van model. De LLM blijft een algemeen redeneer-apparaat, en de waarheid leeft in een extern document-store met versie-historie, audit-trail en autorisatie. Een document bijwerken is een upsert op de vector-DB, geen retraining-run van twaalf uur. Een document intrekken (GDPR, geheimhoudingsplicht, verlopen contract) is een delete; bij fine-tuning is dat in feite onmogelijk. Voor enterprise-toepassingen waar accountability, retracteerbaarheid en bronvermelding ertoe doen, is RAG de structureel juiste architectuur.

RAGReal-time grounding op externe kennis. Citaten naar bron. Updates zonder retraining. De default voor enterprise-Q&A, support-bots, juridische assistenten, productie-documentatie.
Fine-tuningStijl, toon, output-formaat, taakspecifiek gedrag (classificatie, extractie). Géén feiten. Combineer eventueel met RAG: fine-tune voor formaat, retrieve voor inhoud.
Prompt engineeringKleine, statische context (<50KB). Snelle prototypes, internal tools. Stopt te schalen zodra uw bron meer dan een paar documenten omvat of regelmatig muteert.

RAG-architectuur: ingestion, retrieval, synthesis, observability

Een productie-RAG bestaat uit twee pipelines die op verschillende cadans draaien — ingestion (batch of streaming) en retrieval (per query, sub-seconde). Daaroverheen ligt een observability-laag die meet of het systeem nog doet waarvoor het gebouwd is.

📥

Ingestion-pipeline

Document-loaders voor PDF, DOCX, HTML, Confluence, SharePoint, Notion, Jira, Zendesk, S3, databases. Parsing met layout-bewustzijn (Unstructured.io, LlamaParse, Azure Document Intelligence) zodat tabellen, headers en figuur-bijschriften niet verloren gaan. Daarna chunking (semantic of fixed met overlap), metadata-verrijking (auteur, datum, vertrouwelijkheidsklasse, source-URI) en batch-embedding via OpenAI text-embedding-3-large, voyage-3, Cohere embed-v3 of open-source BGE/e5. Indexering in de vector-DB met hybrid-index (dense + BM25/SPLADE).

🔍

Retrieval-pipeline

Query-understanding (rewriting, expansion, HyDE), parallel hybrid retrieval (top-50 dense + top-50 BM25), reciprocal rank fusion, reranking naar top-5 met Cohere Rerank of ColBERT v2, en context-assembly met deduplicatie. Synthesis-prompt vraagt expliciet om citaten per claim. Optioneel: agentic loop met tool-use voor multi-hop vragen waar één retrieval-stap niet volstaat.

📊

Observability & eval

Tracing via Langfuse, Helicone, LangSmith of OpenTelemetry — elke retrieval, elke prompt, elk antwoord wordt vastgelegd. Offline-eval op golden sets met RAGAS (faithfulness, answer relevancy, context precision, context recall) en LlamaIndex Eval. Online-eval via thumbs-up/down, escalation-rate en menselijke audits. Drift-detectie: als context recall daalt of citation-grounding-score zakt, gaat er een alert.

Wij scheiden deze drie pipelines bewust. Ingestion mag falen zonder dat retrieval omvalt; retrieval mag traag zijn zonder dat eval-runs erop wachten. Elk component is afzonderlijk te schalen, te debuggen en te vervangen — Pinecone vervangen door Qdrant of pgvector is dan een config-change van één component, geen herbouw van het systeem.

Chunking-strategie, embeddings en vector-database: drie keuzes die alles bepalen

De drie technische beslissingen die het meest direct invloed hebben op retrieval-kwaliteit zijn: hoe u documenten in stukken hakt, welk embedding-model u kiest, en op welke vector-store u indexeert. Standaardadvies bestaat niet — de juiste keuze hangt af van documentlengte, query-stijl, taal en latency-budget.

Chunking. Fixed-size chunking (bijvoorbeeld 512 tokens met 64 overlap) is robuust en goedkoop, maar breekt vaak midden in een argument af. Semantic chunking gebruikt een sentence-encoder om logische breekpunten te vinden — de chunk-grens valt waar het onderwerp daadwerkelijk verandert. Voor lange juridische of technische documenten werkt hiërarchische chunking goed: kleine chunks voor retrieval-precisie, gekoppeld aan grotere parent-chunks die als context bij synthesis worden meegegeven. De recall-score op uw eigen golden set is de enige betrouwbare manier om te bepalen welke strategie wint.

Embeddings. OpenAI text-embedding-3-large is een sterke default voor Engels en redelijk Nederlands. Voyage-3 en voyage-multilingual presteren consistent hoog op multilingual benchmarks. Cohere embed-v3 ondersteunt input-type-conditioning (search_document vs. search_query) wat asymmetric retrieval ten goede komt. Voor self-hosted scenario's werken BGE-large, e5-mistral en gte-large goed; ze zijn fine-tunebaar op uw eigen domein als out-of-the-box accuracy tekortschiet. Belangrijk: een embedding-model wisselen betekent uw hele index herbouwen, dus benchmark vooraf op uw eigen data.

Vector-database. Pinecone is managed, schaalt eenvoudig en heeft sterke hybrid-search; geen self-hosting mogelijk. Weaviate biedt rijke filtering, GraphQL-API en self-host of cloud. Qdrant is hoge-prestatie, Rust-based, met sterke filtering en goede self-host story. pgvector koppelt vector-search aan een bestaande PostgreSQL — handig als uw metadata toch al relationeel is en u één database wilt beheren. Milvus is enterprise-scale (miljarden vectoren), maar zwaarder in operationele complexiteit. De keuze hangt af van schaal, hosting-vereisten (EU-only?), filter-complexiteit en of u losse infrastructuur of een geïntegreerde stack wilt.

Pinecone Weaviate Qdrant pgvector Milvus OpenAI text-embedding-3-large voyage-3 Cohere embed-v3 BGE-large e5-mistral SPLADE BM25

Hybrid retrieval, reranking en geavanceerde RAG-patronen

Pure dense-retrieval (alleen embeddings) faalt voorspelbaar op exacte termen, productcodes, eigennamen en negaties. Pure BM25 mist semantische relaties. Productie-RAG combineert ze — en gebruikt een reranker om de top-50 kandidaten te filteren naar de top-5 die werkelijk in de prompt komen.

Hybrid retrieval (BM25 + dense)

Twee parallelle queries: BM25 (lexicaal) voor exacte matches en dense (semantisch) voor conceptuele matches. Resultaten samengevoegd via Reciprocal Rank Fusion of een gewogen combinatie. Op de meeste enterprise-corpora levert dit 10-25% recall-verbetering ten opzichte van dense-only — vooral op queries met productcodes, klantnamen en specifieke termen die niet in de embedding-trainingsdata zaten.

Reranking (Cohere Rerank, ColBERT v2)

Een cross-encoder die per kandidaat-document een relevantiescore tegen de query berekent. Veel duurder dan bi-encoder-retrieval, dus alleen toegepast op een top-K. Cohere Rerank is een API-call; ColBERT v2 is self-hostbaar en quantizeerbaar. Reranking pakt vaak nog eens 5-15% precisie erbij, en filtert hard de chunks weg die wel semantisch lijken maar niet daadwerkelijk uw vraag beantwoorden.

HyDE en query-expansion

Hypothetical Document Embeddings: laat de LLM eerst een hypothetisch antwoord op de query genereren, en zoek met de embedding van dát antwoord. Werkt verrassend goed voor vragen die slecht overeenkomen met document-stijl (een korte vraag tegen lange handleidingen). Query-expansion (synoniemen, gerelateerde termen) verhoogt recall maar moet zorgvuldig — te brede expansie zet uw precisie onderuit.

Agentic RAG en GraphRAG

Voor multi-hop vragen ("welke contracten lopen af in Q3 én hebben een minimale-afname-clausule?") volstaat één retrieval-stap niet. Agentic RAG geeft het model tools om iteratief te zoeken, te filteren en sub-vragen te stellen. Microsoft GraphRAG bouwt vooraf een entity-graaf uit het corpus, zodat queries die vragen naar relaties tussen entiteiten direct via de graaf kunnen — sneller en preciezer dan herhaald embedding-zoekwerk.

Multi-modal RAG

Tabellen in PDF's, diagrammen, schermafbeeldingen en gescande contracten zijn met pure text-embeddings onbenaderbaar. Wij gebruiken layout-aware parsers (Unstructured.io, Azure Document Intelligence, LlamaParse) plus multi-modal embeddings (CLIP, voyage-multimodal, Cohere embed-multimodal) om tabellen als gestructureerde data en figuren als visuele embeddings te indexeren. Resultaat: een vraag over een specifieke regel in een tabel landt op de juiste cel, niet op een omliggende paragraaf.

Citation-grounding en attribution

Het model krijgt expliciet de instructie om elke claim te koppelen aan een document-ID en sectie. In de output verschijnt naast elke uitspraak een citaat-marker; de UI rendert dat als klikbare bron. Dit is geen cosmetisch detail — het is wat audit-vereisten, juridische review en gebruikersvertrouwen mogelijk maakt. Een RAG-systeem zonder citaten is niet productie-rijp.

Evaluatie: RAGAS, golden sets en wat het écht betekent dat uw RAG werkt

Een RAG-systeem dat bij de demo werkt zegt niets over een RAG-systeem dat in productie werkt. U heeft kwantitatieve evaluatie nodig — anders is iedere wijziging een gok en weet u niet of een nieuwe embedding-versie een verbetering of regressie is.

Faithfulness

Mate waarin het antwoord daadwerkelijk gegrond is in de opgehaalde context. Een hallucinated-fact-rate is hier de kwaadaardigste regressie: het systeem klinkt overtuigend maar bedenkt dingen. RAGAS scoort dit door per claim te checken of-ie afleidbaar is uit de context.

Answer relevancy

Past het antwoord daadwerkelijk bij de vraag? Een correct maar irrelevant antwoord ("de documentatie zegt X") is alsnog een falen als de gebruiker iets specifiekers vroeg. Wordt vaak gemeten met een LLM-judge die antwoord-vraag-paren scoort.

Context precision & recall

Precision: van de opgehaalde chunks, hoeveel zijn daadwerkelijk relevant. Recall: van alle relevante chunks in het corpus, hoeveel werden er opgehaald. Deze twee metrics zijn de zuiverste meting van retrieval-kwaliteit, los van LLM-gedrag. NDCG en MRR zijn klassieke IR-metrics die hierop verfijnen.

Golden sets en regressie-tests

50 tot 200 vraag-antwoord-paren door domein-experts gevalideerd, gekoppeld aan de specifieke documenten die het antwoord bevatten. Elke deploy draait tegen deze set. Een regressie zichtbaar maken is de helft van het werk; zonder golden set werkt u op basis van indrukken.

Wij leveren elke RAG-implementatie met een eval-harness die u zelf kunt draaien. Een nieuwe LLM-versie, een ander embedding-model, een aangepaste chunking-strategie — u vergelijkt voor en na, en u beslist op cijfers in plaats van onderbuik. Frameworks die we standaard inzetten: RAGAS, LlamaIndex Eval, custom pytest-harnesses voor specifieke claim-types, en Langfuse voor productie-tracing.

Nog niet zeker over een groot traject?

Test je idee eerst — werkend prototype in 1 dag

Met OneDayBuild maken we je idee in één dag tastbaar voor €950, zodat je weet of verdere ontwikkeling de investering waard is. Besluit je door te gaan met de volledige bouw? Dan verrekenen we de kosten volledig.

Bekijk OneDayBuild →

Hoe wij RAG-implementaties bouwen

Iteratief, met meetbare deliverables per fase. Geen grote upfront-architectuur die in maand drie omvalt — wel een werkend systeem in week vier dat u zelf kunt valideren.

Discovery & corpus-analyse

Welke documenten, welk volume, welk formaat, welke vertrouwelijkheidsklasse. Inventariseer use cases, definieer 30-50 voorbeeldvragen met domein-experts. Bouw een eerste golden set.

Baseline-RAG in 2-3 weken

Werkende prototype: ingestion-pipeline, hybrid retrieval, basale UI met citation-grounding. Eerste meting tegen de golden set. Dit is uw uitgangspunt — alle vervolgwerk verbetert vanaf hier.

Iteratieve verbetering

Reranker toevoegen, chunking-strategie tunen, embedding-model swap testen, query-rewriting, prompt-engineering op de synthesis-stap. Elke iteratie meten op faithfulness, recall en relevancy.

Productie & observability

Auth, RBAC, audit-logging, tracing (Langfuse), drift-monitoring, alerts op kwaliteits-regressie. Documentatie en kennisoverdracht zodat uw eigen team de eval-harness kan draaien.

Stack die wij standaard inzetten

Wij blijven model- en vendor-agnostisch. De juiste keuze hangt af van uw hosting-vereisten (EU-only, on-prem, hybrid), schaal, budget en latency-eisen. Onderstaande lijst is wat wij gebruikt hebben in productie — niet wat wij verkopen.

Python FastAPI LangChain LlamaIndex Haystack DSPy Pinecone Weaviate Qdrant pgvector Milvus OpenAI Anthropic Claude Azure OpenAI Mistral Cohere Rerank ColBERT v2 Unstructured.io LlamaParse RAGAS Langfuse Helicone Docker Kubernetes Terraform

Voor klanten met strikte data-residency-eisen (financiële instellingen, zorg, overheid) draaien we de volledige stack op Azure West Europe of een Nederlandse cloud-provider, met self-hosted Qdrant of pgvector en open-source LLM's via vLLM of Azure OpenAI Service in de EU-region. Geen Amerikaanse data-egress, geen vendor-lock-in op een enkel SaaS-platform.

Concrete RAG-toepassingen die wij bouwen

RAG is niet één product — het is een patroon dat in vrijwel elk kennis-intensief proces past. Een paar terugkerende toepassingen waar de ROI direct meetbaar is.

Internal knowledge-assistent

Confluence, SharePoint, Notion, Google Drive, Slack-archieven, Jira-tickets, support-historie — samengevoegd tot één chat-interface waar nieuwe medewerkers en specialisten antwoorden vinden zonder zes mensen rond te bellen. Met RBAC zodat iedereen alleen ziet wat-ie mag zien, en citation-grounding zodat uitspraken naar de bron-pagina linken.

Customer-support copilot

Een interface voor uw support-medewerkers die op basis van klantvraag relevante kennisbank-artikelen, eerdere tickets en productdocumentatie ophaalt en een conceptantwoord schrijft. De medewerker checkt en verstuurt — gemiddelde handle-time omlaag, kwaliteit en consistentie omhoog. Eventueel direct een tier-1-bot naar de klant met escalation-logica.

Juridische en contract-Q&A

Contracten, NDA's, leveringsvoorwaarden, jurisprudentie en interne legal-memo's doorzoekbaar maken met citation-grounding. "Welke contracten hebben een minimale-afname-clausule en lopen af in Q3?" — een vraag die handmatig dagen kost, in seconden beantwoord met directe verwijzingen naar artikel-nummers en pagina's.

Productie- en operationele documentatie

Werkinstructies, machinehandleidingen, veiligheidsprocedures en QA-protocollen aan operators op de werkvloer beschikbaar via een spraak- of touch-interface. Multi-modal RAG die diagrammen en stap-voor-stap-fotosequenties opzoekt. Toepasbaar in pharma, manufacturing, logistiek en zorg.

Data-governance, RBAC en AVG bij RAG

Document-level autorisatie

RBAC propageert door tot in de retrieval-laag: een gebruiker krijgt alleen chunks terug uit documenten waar die toegang toe heeft. We koppelen op user-claims (Azure AD, Okta, custom IdP) en filteren in de vector-DB op metadata. Geen leaks via een chat-interface.

AVG-compliance en data-residency

Documenten met persoonsgegevens worden behandeld volgens AVG: doelbinding, dataminimalisatie, retentie. Bij EU-residency-eisen draait de hele stack in een EU-region. Subprocessors-overzicht en verwerkersovereenkomsten leveren we standaard.

Audit-trail en retracteerbaarheid

Elk antwoord wordt gelogd met query, opgehaalde context, citaten en model-versie. Een document intrekken is een delete op de vector-DB plus een verificatie-run. Dat is iets wat fine-tuning niet kan — een belangrijk argument voor RAG in gereguleerde sectoren.

Veelgestelde vragen over RAG-implementatie

Wanneer kies ik RAG en wanneer fine-tuning?
RAG voor feiten, fine-tuning voor stijl en taakgedrag. Als uw kennis verandert, gevoelig is voor versie-historie of bron-citaten vereist, is RAG de juiste keuze. Fine-tuning is bedoeld om een model classificatie te leren of een specifieke output-structuur consistent te produceren, niet om feiten in te bakken. In de praktijk combineren we vaak: een fine-tuned model voor formaat en toon, met RAG voor de inhoudelijke grounding.
Welke vector-database kiezen we?
Het hangt af van schaal, hosting-eisen en filter-complexiteit. Pinecone als u een managed service wilt en geen self-hosting. Qdrant of Weaviate als u self-host wilt en hybrid retrieval native ondersteund moet zijn. pgvector als uw metadata al in PostgreSQL leeft en u geen extra database wilt beheren. Milvus als u richting miljarden vectoren gaat. We benchmarken in de discovery-fase op uw eigen workload — keuze voor de stack bepaalt latency-budget en operationele kosten voor jaren.
Hoe voorkomen jullie hallucinations in productie?
Drie mechanismen samen. Eén: prompt-engineering die het model expliciet instrueert "alleen claims die in de context staan, anders zeg dat je het niet weet". Twee: RAGAS-faithfulness-scoring op elke deploy plus continue tracing in productie. Drie: citation-grounding die elke claim aan een bron koppelt — niet-citaten claims worden in de UI als waarschuwing gemarkeerd. Hallucination is niet 100% uit te bannen, maar wel meetbaar te krijgen tot een gerapporteerde rate die u accepteert.
Wat is het verschil tussen reranking en hybrid retrieval?
Hybrid retrieval combineert twee manieren om de top-K kandidaten op te halen: BM25 (lexicaal) en dense embeddings (semantisch). Reranking is een tweede pass over die top-K met een duurder, accurater model (cross-encoder) dat per kandidaat de relevantie tegen de query scoort. Het zijn complementaire stappen. Hybrid retrieval verbetert recall (mis je relevante chunks niet); reranking verbetert precisie (komen alleen de écht relevante chunks in de prompt).
Hoe meten jullie of het systeem werkt?
Met een golden set van 50-200 vraag-antwoord-paren die door uw domein-experts is gevalideerd, en de RAGAS-metrics faithfulness, answer relevancy, context precision en context recall. Online meten we daarnaast escalatie-rate, gebruikersfeedback (thumbs-up/down) en query-pattern-drift. Bij elke deploy draaien we de regressietests; als een metric onder een drempel zakt, blokkeert de deploy of gaat er een alert.
Werkt RAG ook op tabellen, PDF's met layouts en gescande documenten?
Ja, mits u multi-modal RAG gebruikt. Layout-aware parsers (Unstructured.io, LlamaParse, Azure Document Intelligence) extraheren tabellen als gestructureerde data en behouden hiërarchie. Voor afbeeldingen en diagrammen gebruiken we multi-modal embeddings (CLIP, voyage-multimodal). Gescande documenten gaan eerst door OCR (Azure, Tesseract, Textract) voordat ze in de pipeline komen. Tabel-Q&A vereist vaak een aparte retrieval-strategie waarbij de tabel als geheel wordt gehandhaafd plus een gestructureerd schema voor filtering.
Hoe houden we documenten in de vector-DB synchroon met de bron?
Twee patronen. Batch: nightly of hourly job die wijzigingen in de bron detecteert (last-modified, change-feed) en upsert in de vector-DB. Streaming: webhook of event-gedreven, waarbij elke wijziging in Confluence/SharePoint/SQL direct een ingestion-job triggert. Voor delete-propagatie loggen we doc-IDs met versie en timestamp. Een document intrekken is een delete plus een verificatie-query — belangrijk voor GDPR-rechten zoals het recht op vergetelheid.
Wat bepaalt de doorlooptijd van een RAG-implementatie?
Een baseline-RAG met hybrid retrieval, citation-grounding en eval-harness staat doorgaans in twee tot vier weken. Wat de totale doorlooptijd bepaalt is corpus-complexiteit (hoeveel formaten, hoeveel parsing-werk), integratie-eisen (hoeveel bronsystemen koppelen), governance (RBAC, audit, compliance-review) en de mate waarin u domein-experts beschikbaar heeft voor golden-set-validatie. We werken in iteratieve sprints, zodat u tussentijds resultaten ziet en kunt bijsturen — niet pas na maanden.

RAG-implementatie laten bouwen?

Bespreek uw use case met ons. We analyseren uw corpus, definiëren een eerste golden set en leveren een werkende baseline binnen enkele weken — meetbaar, met citaten, productie-rijp.

Plan een technische sessie

Edit Content