Wat is RAG? Retrieval-Augmented Generation simpel uitgelegd
RAG (retrieval-augmented generation) is een manier om een AI-model vragen te laten beantwoorden met je eigen informatie. Wanneer iemand een vraag stelt, zoekt je app eerst in je documenten naar de meest relevante passages en geeft die passages daarna samen met de vraag aan het model. Het model schrijft zijn antwoord op basis van die tekst, in plaats van alleen te vertrouwen op wat het toevallig tijdens de training heeft geleerd.
Waarom RAG ertoe doet bij het bouwen met AI
Een groot taalmodel weet veel over de wereld in het algemeen, maar niets over jouw bedrijf: je prijzen, je beleid, je productdocumentatie, de supporttickets van vorige week. Het heeft ook een trainingsgrens, dus het weet niets over recente zaken. Als je het toch vraagt, kan het een zelfverzekerd, plausibel en fout antwoord geven.
Je hebt drie brede opties om dat op te lossen:
| Aanpak | Wat het doet | Geschikt voor |
|---|---|---|
| Alles in de prompt plakken | Stuur al je documenten bij elke vraag mee | Kleine hoeveelheden tekst — een paar pagina's |
| RAG | Zoek in je documenten, stuur alleen de relevante delen mee | Grotere of veranderende verzamelingen: helpcentra, handleidingen, notities |
| Fine-tuning | Het model verder trainen op voorbeelden | Toon, formaat en steeds terugkerende taken — niet voor feiten die veranderen |
Moderne modellen accepteren lange prompts, dus voor een korte FAQ is de eerste optie vaak prima. RAG verdient zijn plek wanneer je meer tekst hebt dan je elke keer wilt meesturen — omdat elk woord dat je verstuurt geld en tijd kost (zie hoe LLM-API's kosten berekenen).
Als je een functie "chat met onze docs" bouwt, een supportassistent of een interne kennistool, bouw je bijna zeker een vorm van RAG.
Een analogie uit het dagelijks leven
Stel je een open-boekententamen voor. Een student die uit het hoofd moet antwoorden, kan iets verkeerd onthouden of gokken. Een student die eerst de juiste pagina's mag opzoeken, ze mag lezen en dan pas antwoorden, is veel betrouwbaarder — zolang hij de juiste pagina's vindt.
- De student is het taalmodel.
- Het handboek zijn je documenten.
- De juiste pagina's opzoeken is retrieval.
- Het antwoord schrijven op basis van die pagina's is generatie.
RAG is de open-boekenversie. En net als bij het tentamen hangt de kwaliteit van het antwoord sterk af van de vraag of de juiste pagina's zijn gevonden.
Hoe RAG werkt, stap voor stap
Een typische RAG-opzet heeft twee fasen.
Je documenten voorbereiden (vooraf gedaan):
- Verzamel het brondmateriaal — helpartikelen, pdf's, beleid, productdata.
- Splits het in chunks: verdeel lange documenten in kleinere stukken, vaak een paar alinea's per stuk, zodat de zoekopdracht alleen het relevante deel kan teruggeven.
- Maak embeddings van elke chunk: stuur die naar een embedding-model, dat de tekst omzet in een embedding — een lange lijst getallen die de betekenis vastlegt. Teksten over vergelijkbare onderwerpen krijgen vergelijkbare getallen.
- Sla op de chunks en hun embeddings in een database die op gelijkenis kan zoeken (vaak een vectordatabase of vectorindex genoemd).
Een vraag beantwoorden (elke keer gedaan):
- Maak een embedding van de vraag met hetzelfde embedding-model.
- Haal de chunks op waarvan de embeddings het dichtst bij die van de vraag liggen — bijvoorbeeld de top vijf.
- Bouw de prompt: instructies, de opgehaalde chunks en de vraag.
- Genereer: het taalmodel schrijft een antwoord op basis van die chunks, idealiter met vermelding van welke het heeft gebruikt.
Zoeken op betekenis is wat dit laat werken: een vraag over "mijn geld terugkrijgen" kan een chunk met de titel "Retourbeleid" vinden, ook al delen ze geen woorden.
Een uitgewerkt voorbeeld: de helpassistent van een sportschool
Stel dat een sportschool 40 helpartikelen heeft en een chatassistent op de website wil. Een lid vraagt: "Kan ik mijn lidmaatschap pauzeren als ik op reis ben?"
De app maakt een embedding van de vraag en haalt de drie dichtstbijzijnde chunks op. Een ervan luidt:
Lidmaatschap bevriezen: Leden met een maandabonnement kunnen
hun lidmaatschap tot 2 maanden per jaar bevriezen. Vraag dit aan
bij de balie of in de app, uiterlijk 7 dagen voordat de
bevriezing ingaat.
De prompt die naar het model gaat, ziet er dan ongeveer zo uit:
Je bent de helpassistent van Northside Gym.
Beantwoord alleen op basis van de bronnen hieronder. Als het
antwoord er niet in staat, zeg dan dat je het niet weet en
adviseer contact op te nemen met de balie.
Vermeld welke bron je hebt gebruikt.
[Bron 1: Lidmaatschap bevriezen] Leden met een maandabonnement kunnen...
[Bron 2: Je lidmaatschap opzeggen] ...
[Bron 3: Gastpasjes] ...
Vraag: Kan ik mijn lidmaatschap pauzeren als ik op reis ben?
En het model antwoordt: "Ja — met een maandabonnement kun je je lidmaatschap tot twee maanden per jaar bevriezen. Vraag dit aan bij de balie of in de app, uiterlijk 7 dagen van tevoren (bron: Lidmaatschap bevriezen)."
De sportschool heeft nooit iets opnieuw getraind. Als het bevriezingsbeleid verandert, werkt het de artikelen bij, de app maakt een nieuwe embedding van die chunk, en het volgende antwoord weerspiegelt de wijziging.
Belangrijke termen
| Term | Betekenis |
|---|---|
| LLM | Large language model — de AI die het antwoord schrijft. Zie wat een LLM is. |
| Embedding | Een lijst getallen die de betekenis van een stuk tekst weergeven. |
| Embedding-model | Een model dat embeddings maakt. Meestal los van, en veel goedkoper dan, het chatmodel. |
| Chunk | Een stuk van een document, zo groot dat het op zichzelf kan worden opgehaald. |
| Vectordatabase / vectorzoeken | Opslag die items met vergelijkbare embeddings vindt. Sommige gewone databases bieden dit ook — Postgres bijvoorbeeld via de extensie pgvector. |
| Top-k | Hoeveel chunks per vraag worden opgehaald. |
| Hybride zoeken | Zoeken op betekenis combineren met gewoon trefwoordzoeken, wat helpt bij exacte termen zoals productcodes. |
| Contextvenster | De maximale hoeveelheid tekst die een model in één verzoek kan verwerken. |
| Verankering / bronvermelding | Het antwoord koppelen aan specifieke opgehaalde bronnen en die tonen. |
Veelvoorkomende misverstanden
- "RAG traint het model op mijn gegevens." Dat doet het niet. Het model verandert niet; het leest alleen extra tekst op het moment van de vraag.
- "RAG betekent geen hallucinaties meer." Het betekent minder. Als de zoekopdracht de juiste chunk mist, of als het antwoord niet in je documenten staat, kan het model nog steeds gokken. Laat het zeggen "ik weet het niet" en test met vragen waarvan je het antwoord kent.
- "Ik heb een speciale vectordatabase nodig." Vaak niet. Bij bescheiden hoeveelheden data kan een vectorextensie op de database die je al hebt, of zelfs gewoon trefwoordzoeken, voldoende zijn.
- "Grotere chunks zijn beter." Te groot en je stuurt veel irrelevante tekst mee (meer kosten, meer verwarring); te klein en een chunk verliest de context die hem betekenisvol maakte. Verwacht bij te stellen.
- "Gewoon alles uploaden." Verouderde, dubbele of tegenstrijdige documenten leveren tegenstrijdige antwoorden op. Het brondmateriaal opschonen is vaak de grootste verbetering die je kunt maken.
- "Iedereen kan elk document zien." Alleen als je het zo bouwt. Als sommige documenten privé zijn voor bepaalde gebruikers, moet de zoekopdracht zelf filteren op wie de vraag stelt — anders kan de assistent de gegevens van de ene klant aan een andere klant citeren.
Wat het kost
Een RAG-functie heeft meestal drie lopende kosten: het maken van embeddings van je documenten (klein, en meestal eenmalig), het maken van embeddings van elke vraag (heel klein), en de aanroep van het taalmodel (de belangrijkste kost, die groeit met het aantal chunks dat je meestuurt). Daarbij komt opslag in je database. Je AI-provider rekent dit door aan je eigen account, dus stel daar een uitgavenlimiet in.
Wat je aan je AI-builder kunt vragen
- "Controleer voordat we RAG bouwen: is onze content klein genoeg om gewoon in de prompt op te nemen?"
- "Splits de helpartikelen in chunks van een paar alinea's, bewaar de titel en de bronlink van elke chunk, en sla de embeddings op in onze database."
- "Gebruik hybride zoeken — op betekenis plus trefwoorden — zodat productcodes nog steeds matchen."
- "Vertel het model alleen te antwoorden op basis van de opgehaalde bronnen, te zeggen wanneer het iets niet weet, en de bronnen onder elk antwoord te tonen."
- "Doorzoek alleen documenten die de ingelogde gebruiker mag zien."
- "Maak automatisch een nieuwe embedding van een document wanneer het wordt bewerkt."
- "Bewaar de AI-providersleutel op de server in een geheim, nooit in de browser."
- "Log elke vraag, de opgehaalde chunks en het antwoord, zodat ik slechte antwoorden kan nakijken."
RAG in Mythex
Mythex bevat geen kant-en-klaar kennisbank- of RAG-product. Wat het wel doet, is de code ervoor schrijven binnen je app: jij brengt je documenten en je eigen AI-providersleutel mee, opgeslagen als een projectgeheim, en de agent bouwt de ophaal- en chatonderdelen, met de Postgres-database van het project voor opslag. Providergebruik wordt gefactureerd aan je provideraccount, niet in Mythex-credits. De docs raden aan te beginnen met één eenvoudige AI-functie en RAG toe te voegen zodra die werkt — zie een AI-app bouwen, en onze gidsen over een AI-chatbotapp bouwen en AI-functies toevoegen.
Veelgestelde vragen
Wat is RAG in simpele woorden?
RAG (retrieval-augmented generation) is een manier om een AI-model te laten antwoorden met je eigen informatie. Voordat het model antwoordt, zoekt je app in je documenten naar de passages die het best bij de vraag passen en voegt die toe aan de prompt. Het antwoord is dus gebaseerd op die tekst, en niet alleen op wat het model tijdens de training heeft geleerd.
Traint RAG de AI op mijn gegevens?
Nee. RAG verandert het model helemaal niet. Het zoekt relevante tekst op op het moment dat er een vraag wordt gesteld en geeft die samen met de vraag aan het model door. Als je een document bijwerkt, kan het volgende antwoord meteen de nieuwe versie gebruiken.
Is RAG hetzelfde als fine-tuning?
Nee. Fine-tuning verandert het gedrag van een model door het verder te trainen op voorbeelden. Dat is trager en beter voor stijl of formaat. RAG geeft het model feiten om op het moment van de vraag te lezen, en dat is beter voor kennis die verandert of exact geciteerd moet worden.
Voorkomt RAG AI-hallucinaties?
Het vermindert ze, maar elimineert ze niet. Als de zoekopdracht de verkeerde passages vindt, of als het antwoord niet in je documenten staat, kan het model nog steeds gokken. Goede RAG-apps vertellen het model dat het moet zeggen wanneer het iets niet weet, en tonen de bronnen die ze hebben gebruikt.