Wil je een AI die antwoordt op basis van jóuw documenten, en niet op basis van wat hij toevallig geleerd heeft? Dan bouw je een RAG-app — al kun je de simpelste variant tegenwoordig zonder code opzetten in ChatGPT. In deze gids zetten we een hybride variant op: betekenis-zoeken én trefwoord-zoeken gecombineerd, met Claude die het antwoord schrijft. Vijf stappen, één werkende opzet.
Stap 1 — Knip je documenten in stukken
Een taalmodel werkt niet met hele PDF’s, maar met fragmenten — dat volgt direct uit hoe transformers context verwerken (zie onze uitleg over CNN’s, RNN’s en transformers). Splits je documenten in stukken van bijvoorbeeld 300 tot 500 woorden, met een kleine overlap zodat een zin niet halverwege wordt afgekapt. Bewaar bij elk stuk de bron (bestandsnaam, paginanummer), zodat je later kunt laten zien waar een antwoord vandaan komt.
Stap 2 — Zet twee zoekmachines naast elkaar
Hier zit de “hybride” in. Je bouwt twee indexen over dezelfde fragmenten:
- FAISS voor semantisch zoeken. Je zet elk fragment om in een vector (een embedding) en FAISS vindt razendsnel de fragmenten die qua betekenis het dichtst bij de vraag liggen. Handig als iemand “wat kost het abonnement?” vraagt terwijl je document spreekt over “tarieven”.
- BM25 voor trefwoord-zoeken. Dit is de klassieke methode die exacte woorden, productcodes en eigennamen oppikt — precies waar semantisch zoeken weleens langsheen schiet.
⚡ Gevorderden: Combineer de twee ranglijsten met een eenvoudige score-fusie zoals Reciprocal Rank Fusion. Je hoeft de scores van FAISS en BM25 dan niet op dezelfde schaal te krijgen; je telt alleen de posities op. Dat voorkomt dat één zoekmethode de uitkomst domineert.
Stap 3 — Voeg de resultaten samen
Beide zoekmachines leveren een lijstje fragmenten. Je voegt ze samen, haalt dubbele eruit en houdt de beste vijf tot acht over. Dit is de context die straks naar Claude gaat. Hou het beknopt: meer fragmenten betekent meer tokens, hogere kosten en niet automatisch een beter antwoord.
Stap 4 — Laat LangGraph de flow regelen
Met LangGraph giet je de stappen in een overzichtelijke graaf: een knoop die ophaalt, een knoop die samenvoegt en een knoop die het antwoord genereert. Het voordeel is dat je losse stappen kunt aanpassen of opnieuw kunt laten draaien zonder je hele script om te gooien. Begin simpel — drie knopen achter elkaar — en breid pas uit als je het nodig hebt.
Stap 5 — Laat Claude het antwoord schrijven
De laatste stap: je stuurt de vraag plus de gevonden fragmenten naar Claude met een korte instructie (“beantwoord alleen op basis van de meegeleverde fragmenten, noem de bron, en zeg het als het antwoord er niet in staat”). Gebruik hiervoor Claude Sonnet 4.6 — het API-model heet claude-sonnet-4-6 en kost ongeveer $3 per miljoen invoer-tokens en $15 per miljoen uitvoer-tokens (Bron: Anthropic). Door de instructie “alleen op basis van de fragmenten” beperk je verzinsels en blijven de antwoorden controleerbaar.
Wil je daarna dieper de privacy- en regelgevingskant in? Lees op hetlaatsteainieuws.nl onze duiding over klantgegevens en AVG bij AI-tools.
Checklist: ben je klaar?
- Documenten geknipt in fragmenten van 300–500 woorden, mét bronvermelding per stuk
- FAISS-index gebouwd over de embeddings
- BM25-index gebouwd over dezelfde fragmenten
- Resultaten samengevoegd, ontdubbeld en beperkt tot de beste 5–8
- LangGraph-flow met aparte knopen voor ophalen, samenvoegen en antwoorden
- Claude (
claude-sonnet-4-6) krijgt de instructie “alleen op basis van de fragmenten” - Getest op een kleine set vragen waarvan je het juiste antwoord kent
