# Wat is RAG? Retrieval-Augmented Generation in begrijpelijke taal Grote taalmodellen zoals Gemini zijn getraind op een enorme hoeveelheid tekst, maar ze weten niets van jouw interne documenten en hun kennis stopt op een bepaald moment. Vraag je iets dat buiten die kennis valt, dan kan een model met overtuiging een fout antwoord geven. Dat heet een **hallucinatie**. **RAG**, voluit *Retrieval-Augmented Generation*, lost dit op door het model eerst de juiste bronnen te laten opzoeken en die als context mee te geven. ## De kern in drie stappen De naam zelf beschrijft de werkwijze: - **Retrieval (ophalen)**: bij een vraag zoekt het systeem eerst de meest relevante stukken tekst op in een verzameling documenten, bijvoorbeeld jouw handleidingen, beleidsstukken of supporttickets. - **Augmented (aangevuld)**: die gevonden stukken worden samen met de oorspronkelijke vraag in de prompt geplaatst, als extra context. - **Generation (genereren)**: het taalmodel formuleert een antwoord en baseert zich daarbij op de meegegeven context, niet alleen op zijn eigen geheugen. Het model krijgt dus letterlijk de relevante passages onder ogen voordat het antwoordt. Daardoor kan het verwijzen naar wat er echt in jouw documenten staat. ## Waarom RAG hallucinaties vermindert Zonder context moet een model puur uit zijn getrainde geheugen putten. Met RAG ligt het juiste antwoord al voor zijn neus, en hoeft het alleen nog netjes te worden samengevat. Dat heeft drie grote voordelen: - **Actualiteit**: je kunt nieuwe of gewijzigde documenten toevoegen zonder het model opnieuw te trainen. Het systeem zoekt simpelweg in de meest recente bronnen. - **Verifieerbaarheid**: omdat het antwoord uit aanwijsbare bronnen komt, kun je teruggeven welke documenten zijn gebruikt. Dit koppelen aan betrouwbare bronnen heet **grounding**. - **Afbakening**: het model blijft dichter bij jouw materiaal en dwaalt minder af naar algemene of verouderde aannames. :::info title="RAG in plaats van zelf trainen" RAG vervangt vaak het trainen van een eigen model. In plaats van een model duur bij te scholen op jouw data, laat je een bestaand model slim zoeken in jouw documenten. Dat is sneller, goedkoper en makkelijker actueel te houden. ::: ## Hoe het zoeken werkt: embeddings en vectoren De slimme stap zit in het ophalen. Klassiek zoeken werkt op exacte woorden, maar een vraag en het juiste antwoord gebruiken vaak andere bewoordingen. RAG gebruikt daarom **semantisch zoeken**: zoeken op betekenis in plaats van op letterlijke woorden. Dat werkt met **embeddings**. Een embedding is een numerieke weergave (een vector) van de betekenis van een stuk tekst. Teksten met een vergelijkbare betekenis krijgen vectoren die dicht bij elkaar liggen. Bij een vraag berekent het systeem de embedding van die vraag en zoekt het de documentstukken waarvan de vector er het dichtst bij ligt. Deze vectoren worden opgeslagen en doorzocht in een **vector-database**. :::tip title="Semantisch zoeken vindt ook andere bewoordingen" Goede embeddings vinden ook het antwoord als de vraag heel anders is geformuleerd dan de brontekst. Iemand die vraagt naar `thuiswerkvergoeding` vindt zo ook het beleidsstuk dat het over `onkostenregeling voor werken op afstand` heeft. ::: ## Documenten opdelen: chunking Je geeft een model geen complete handleiding van honderd pagina's mee; dat is te veel en te onnauwkeurig. Daarom worden bronnen vooraf opgeknipt in kleinere stukken, **chunks** genaamd, bijvoorbeeld een paar alinea's per stuk. Van elk chunk wordt een embedding gemaakt en opgeslagen. Bij een vraag haalt het systeem alleen de paar meest relevante chunks op. De grootte van die chunks is een afweging: te klein en de context valt uit elkaar, te groot en je krijgt ruis mee. Dit fijnafstellen is een belangrijk onderdeel van een goed werkende RAG-opzet. ## Een RAG-vraag van begin tot eind Het helpt om één concrete vraag door de hele keten te volgen. Stel, een medewerker vraagt aan de interne chatbot: "Hoeveel vakantiedagen bouw ik op bij een contract van 32 uur?" :::howto title="Zo verloopt één RAG-antwoord" 1. De vraag wordt omgezet in een **embedding**, een vector die de betekenis vastlegt. 2. Het systeem zoekt in de **vector-database** naar de chunks die qua betekenis het dichtst bij de vraag liggen, bijvoorbeeld passages uit het personeelshandboek over verlofopbouw. 3. De paar best passende chunks worden samen met de oorspronkelijke vraag in de **prompt** gezet. 4. Het taalmodel formuleert een antwoord en baseert zich op die meegegeven passages. 5. Bij het antwoord toont het systeem de **bron**, zodat de medewerker kan terugklikken naar het handboek. ::: Doordat het model de juiste alinea letterlijk voor zich heeft, geeft het een antwoord dat klopt met het beleid, in plaats van een algemeen praatje over vakantiedagen. ## Wanneer is RAG de juiste keuze? RAG is bij uitstek geschikt als je een AI antwoorden wilt laten geven op basis van een afgebakende, eigen verzameling kennis: - een interne kennisbank of helpdesk voor medewerkers; - een chatbot die put uit jouw productdocumentatie; - onderzoek doen in een grote set rapporten of contracten. In het Google-ecosysteem kun je RAG bouwen met diensten als Vertex AI Search en de Vertex AI RAG Engine, die het ophalen, embeddings maken en het grounden van antwoorden voor je regelen. Daardoor hoef je de onderliggende infrastructuur niet zelf in elkaar te zetten. :::warn title="RAG haalt hallucinaties niet helemaal weg" RAG verkleint hallucinaties sterk, maar sluit ze niet volledig uit. Het model kan nog steeds een verkeerde passage kiezen of de context verkeerd samenvatten. Controleer belangrijke uitkomsten altijd, en toon waar mogelijk de bron bij het antwoord, zodat een lezer kan terugklikken. ::: Kort gezegd: RAG combineert het taalgevoel van een AI-model met de feitenkennis uit jouw eigen documenten. Je krijgt antwoorden die actueel, afgebakend en navolgbaar zijn, zonder dat je zelf een model hoeft te trainen. :::faq ### Wat betekent RAG precies? RAG staat voor Retrieval-Augmented Generation. Het is een aanpak waarbij een AI-model eerst relevante stukken tekst ophaalt uit jouw bronnen en die meegeeft als context, en pas daarna een antwoord genereert. ### Wat is het verschil tussen RAG en een model bijtrainen? Bij bijtrainen (finetunen) pas je het model zelf aan op jouw data, wat tijd en geld kost en lastig actueel te houden is. Bij RAG blijft het model ongewijzigd en zoekt het bij elke vraag live in jouw documenten. Nieuwe informatie toevoegen is dan een kwestie van een document bijwerken. ### Wat zijn embeddings en een vector-database? Een embedding is een numerieke weergave van de betekenis van een stuk tekst. Teksten met een vergelijkbare betekenis krijgen vectoren die dicht bij elkaar liggen. Een vector-database slaat die vectoren op en kan er razendsnel de dichtstbijzijnde in vinden, wat zoeken op betekenis mogelijk maakt. ### Waarom worden documenten opgeknipt in chunks? Een heel document meegeven is te veel en te onnauwkeurig. Door bronnen op te knippen in kleinere stukken kan het systeem precies de paar relevante passages ophalen. De juiste chunk-grootte is een afweging tussen te weinig context en te veel ruis. ### Voorkomt RAG hallucinaties helemaal? Nee. RAG vermindert hallucinaties flink doordat het model zich op echte bronnen baseert, maar het kan nog steeds een verkeerde passage kiezen of context verkeerd samenvatten. Controleer belangrijke antwoorden en toon de gebruikte bron. ### Kan ik RAG gebruiken met Google Workspace en Gemini? Ja. Je kunt RAG opzetten op eigen bronnen met diensten als Vertex AI Search en de Vertex AI RAG Engine, en de antwoorden door een Gemini-model laten formuleren. Zo kun je een chatbot bouwen die put uit je eigen handleidingen of beleidsstukken. :::