AI-assistent op een eigen tekstcorpus met RAG (Bijbel Assistent)

De uitdaging
Bij vrijwel elk AI-traject komt dezelfde technische vraag terug: hoe bouw je een AI-assistent op eigen data waarin onnauwkeurigheid meteen opvalt? Om die vraag te beantwoorden op een corpus waar fouten direct zichtbaar zijn, bouwden we Bijbel Assistent (bijbelassistent.nl) — een eigen CleverTech AI-product, geen klantopdracht: een Nederlandstalige AI-assistent voor Bijbelstudie.
Wie vraagt wat een vers in de grondtekst betekent, controleert het antwoord: in de tekst zelf, in de commentaren, in het woordenboek. Een taalmodel dat vloeiend klinkt maar een uitspraak aan het verkeerde hoofdstuk toeschrijft, valt hier binnen een minuut door de mand.
Dat maakt dit domein een strenge testomgeving voor precies het probleem dat een chatbot op bedrijfsdata ook heeft.
Vier dingen maakten dat lastig:
- Een generiek taalmodel citeert niet, het parafraseert. Een kaal model geeft een antwoord dat gemiddeld klopt en soms een passage aan de verkeerde plek toeschrijft. Voor dit corpus is "gemiddeld klopt" onbruikbaar: elk inhoudelijk antwoord moet terug te voeren zijn op een passage die de gebruiker kan openslaan.
- Vier vertalingen naast elkaar. Het corpus bevat de Statenvertaling, de Herziene Statenvertaling, de NBV21 en de Bijbel in Gewone Taal. Die verschillen in woordkeuze en zinsbouw, dus een antwoord dat niet expliciet maakt over welke vertaling het gaat, is per definitie halve informatie.
- De grondtaal hoort bij het antwoord. Strong-nummers voor Hebreeuwse en Griekse lemma's, kruisverwijzingen tussen teksten en klassieke commentaren zoals Matthew Henry zijn geen extraatjes maar de kern van serieuze studie. Ze moeten doorzoekbaar zijn en meelopen in het antwoord, niet als losse tab ernaast staan.
- Het is een publiek consumentenproduct, geen intern hulpmiddel. Accounts, abonnementen met iDEAL-betaling, privacyrechten en gebruik op een telefoon zonder verbinding zijn allemaal harde eisen — precies de laag die een prototype niet heeft en die bepaalt of iets daadwerkelijk in productie kan.
De aanpak en oplossing
We bouwden de assistent als een RAG-toepassing (retrieval-augmented generation): het taalmodel krijgt bij elke vraag eerst de relevante brontekst aangereikt en redeneert daarover, in plaats van uit eigen parametergeheugen te putten.
1. RAG in plaats van fine-tuning: waarom
Fine-tunen zou de kennis in de modelgewichten bakken — precies wat je hier niet wilt. Een fijngetuned model kan nog steeds niet zeggen waar iets staat, en elke corpuswijziging vraagt om opnieuw trainen.
Met RAG blijft het corpus de bron van waarheid: de assistent haalt passages op, geeft die mee als context en verwijst er in het antwoord naar. Bijwerken betekent dan documenten toevoegen, niet een model hertrainen.
Die afweging speelt bij vrijwel elke AI-assistent op bedrijfsdata; we hebben hem apart uitgewerkt in RAG vs. fine-tuning.
Ontwerpdoel van deze architectuur: elk inhoudelijk antwoord is te herleiden tot een aanwijsbare passage — een vers in een genoemde vertaling, een commentaarregel of een grondtaal-lemma. Dat is het gestelde ontwerpdoel en de reden om voor RAG te kiezen, geen extern gemeten nauwkeurigheidsscore.
2. De ophaallaag: PostgreSQL met pgvector
De vector-database is PostgreSQL met pgvector. Bewuste keuze: het corpus, de gebruikersdata en de embeddings staan zo in hetzelfde systeem, met dezelfde back-ups en dezelfde transacties.
Een aparte vector-store toevoegen levert bij deze omvang vooral extra infrastructuur op. Semantisch zoeken loopt daardoor over dezelfde database die ook bladwijzers, notities en abonnementen bijhoudt; Redis vangt caching en snelle sessie-toegang op.
3. Antwoorden met bronvermelding via de Claude API
Als redeneerlaag gebruiken we de Claude API van Anthropic. De opgehaalde passages gaan als context mee en het antwoord verwijst terug naar wat er is opgehaald — vertaling erbij, commentaar erbij.
Waar een generieke chatbot een vlot verhaal produceert, is de opdracht hier omgekeerd: liever een korter antwoord dat aanwijsbaar in de tekst staat dan een lang antwoord dat nergens naar terugleidt.
4. Van chat naar werkinstrument
Een chatvenster alleen is geen product. De assistent kent daarom:
- Prediker-modus voor exegese en preekvoorbereiding
- Woordstudie op Strong-nummers, met kruisverwijzingen tussen teksten
- Groepsstudie voor gezamenlijk gebruik, plus bladwijzers met eigen notities
- TTS-audio om teksten te laten voorlezen
- Een REST-API voor externe integraties
Een zusterproject op hetzelfde fundament genereert gepersonaliseerde Bijbelleesplannen.
5. De productielaag: abonnementen, privacy, mobiel
De frontend draait op Next.js en React, de backend op Fastify (Node), met JWT-authenticatie. Abonnementen lopen via Mollie met iDEAL — de Nederlandse betaalstandaard, niet een creditcard-only-oplossing.
Privacy is ingebouwd in plaats van eromheen gebouwd: gebruikers kunnen hun data exporteren en hun account laten verwijderen (GDPR). Naast de web-app is er een React Native-app en een PWA met offline-ondersteuning, zodat teksten ook zonder verbinding beschikbaar zijn.
De codebase wordt getest met Vitest.
6. Wat een AI-assistent op eigen data kost
De vraag die bij elk AI-agent- of chatbot-traject terugkomt is wat zoiets kost. Deze case laat vooral zien waar de kosten zitten, en dat is zelden bij het taalmodel.
Het zwaartepunt ligt vóór het chatvenster: het corpus opschonen en in bruikbare stukken knippen, embeddings genereren en actueel houden, en — het meest onderschat — evalueren of de assistent de juiste passage ophaalt. Daarna komen de gebruikelijke productiekosten: authenticatie, betalingen, privacyfuncties, monitoring.
Wie een chatbot wil implementeren op eigen documenten begroot doorgaans het modelgebruik en vergeet die drie voorbereidende stappen; daar loopt een traject vast, niet op de API-rekening.
Wat het opleverde
Vier Nederlandse Bijbelvertalingen (SV, HSV, NBV21, BGT) plus commentaren als doorzoekbaar RAG-corpus
- pgvector
- Semantisch zoeken over het corpus via PostgreSQL met pgvector als vector-database
- Claude
- Claude API als redeneerlaag; antwoorden verankerd in de opgehaalde bronpassages in plaats van in modelgeheugen
- Strong
- Grondtaal-ondersteuning met Strong-nummers (Hebreeuws/Grieks), kruisverwijzingen en commentaren zoals Matthew Henry
- 98/95%
- Testcoverage volgens de eigen README circa 98% statements frontend en 95% backend — een momentopname, geen doorlopend gemeten cijfer
- iDEAL
- Abonnementen via Mollie met iDEAL, met JWT-authenticatie op de Fastify-backend
- GDPR
- Data-export en accountverwijdering ingebouwd (GDPR) in plaats van achteraf toegevoegd
- PWA
- Naast de web-app een React Native-app en een PWA met offline-ondersteuning
Vergelijkbare cases
Business Center Altena / HVS Trading (Henk Verhoeven)Multi-tenant Huurdersportaal met IoT-energiemonitoring
IoT + AIgeautomatiseerd meterstanden aflezen
Business Center Altena (HVS Trading, Sleeuwijk)Meterstanden automatisch uitlezen met camera en AI-beeldherkenning
15-30minuten tussen aflezingen
Eigen product — CleverTech AIOnze eigen AI-business-assistent: AI diep in de bedrijfsvoering
341kregels TypeScript in dagelijks eigen gebruik
Klaar voor zulke resultaten?
Gratis AI-scan: binnen 48 uur een rapport met de AI-kansen met de hoogste ROI voor jouw bedrijf — concreet, geen verkooppraatje.

