Stacklane heet nu Vantion LabsLees meer

Alle artikelen
RAG

9 min leestijd

Wat is RAG? Uitleg met praktijkvoorbeelden.

Wat RAG is in gewone woorden: met retrieval-augmented generation beantwoordt een taalmodel vragen uit je eigen documenten en noemt het de bron. Hoe het werkt, vier voorbeelden, de vergelijking met fine-tuning en lange context, en wat er misgaat.

Geschreven door Ishak KahrimanovicOprichter, Vantion Labs

Wat is RAG?

Retrieval-augmented generation (RAG) is een manier om AI te laten antwoorden uit je eigen documenten. Stelt iemand een vraag, dan zoekt het systeem eerst in je documenten naar de passages met het antwoord. Die passages gaan naar een taalmodel. Het model schrijft het antwoord en noemt bij elk deel waar het vandaan komt.

Een taalmodel is het soort AI achter chatassistenten: software die is getraind op grote hoeveelheden tekst, leest wat je het geeft en een antwoord schrijft. Het weet niets van je interne procedures, contracten of handleidingen. RAG geeft het model de relevante pagina's op het moment dat er een vraag binnenkomt.

Hoe werkt RAG?

RAG werkt in twee fasen. Eerst bereidt het systeem je documenten voor, één keer en opnieuw zodra documenten veranderen. Het leest ze, knipt ze op in passages en slaat elke passage doorzoekbaar op. Daarna zoekt het bij elke vraag de meest relevante passages, geeft die met instructies aan het taalmodel en geeft een antwoord met bronnen terug.

De documenten voorbereiden

  • Inlezen. Connectors halen documenten op uit schijven, intranetten of een documentmanagementsysteem en halen de tekst eruit. Gescande pagina's hebben eerst OCR (tekstherkenning) nodig.
  • Opknippen. Het systeem knipt elk document in passages van een paar alinea's, het liefst langs de kopjes, zodat elke passage over één onderwerp gaat.
  • Embedden. Van elke passage maakt het systeem een embedding. Die komt in een zoekindex, samen met de bron, de datum en wie de passage mag lezen.

Een embedding is een lijst getallen die weergeeft wat een passage betekent. Passages over hetzelfde onderwerp liggen daardoor dicht bij elkaar, ook als ze andere woorden gebruiken. De meeste systemen houden ook een index op trefwoorden bij, omdat zoeken op betekenis exacte termen zoals een clausulenummer kan missen.

Eén vraag, van begin tot antwoord

  1. 01Een medewerker vraagt: "Mag ik vakantiedagen die ik niet heb opgenomen meenemen naar volgend jaar?"
  2. 02Het systeem controleert welke documenten die medewerker mag lezen.
  3. 03Het zoekt in de index op betekenis en op trefwoord, alleen in die documenten, en houdt de beste paar passages over, zoals het deel over verlof in het HR-beleid.
  4. 04Het stuurt het model de vraag, die passages en instructies: antwoord alleen uit deze passages, noem elke passage die je gebruikt en zeg het als het antwoord er niet in staat.
  5. 05Het model schrijft het antwoord. Het systeem controleert of elke bronverwijzing naar een opgehaalde passage wijst en toont dan het antwoord met links naar de bronnen.

Rechten pas je toe in de zoekstap zelf: elke passage krijgt de toegangsrechten van het brondocument mee. Komt een afgeschermde passage eenmaal bij het model, dan kan het model die herhalen, wat de instructies ook zeggen.

Voorbeelden van RAG in de dagelijkse praktijk

RAG past overal waar mensen tijd kwijt zijn aan opzoeken in documenten die veranderen, en een antwoord nodig hebben dat ze met de bron kunnen controleren. De drie voorbeelden hieronder zijn ter illustratie en beschrijven typische gevallen. Bij elk staat welke documenten erbij horen en wat een mens nog controleert.

Vragen van medewerkers over beleid en procedures

Een zorgorganisatie heeft bijvoorbeeld HR-beleid en werkinstructies op een intranet staan, sommige in meerdere versies. Een RAG-assistent beantwoordt vragen zoals "Met welk formulier meld ik een incident?" alleen uit de actuele procedures, met een link naar de pagina. Procedures voor leidinggevenden kunnen alleen leidinggevenden ophalen. Vragen waar de documenten geen antwoord op geven, krijgen een duidelijk "niet gevonden", en HR ziet welke vragen steeds terugkomen.

Antwoorden voor support uit productdocumentatie

Een typisch geval: handleidingen, release notes en artikelen over bekende problemen staan verspreid over een helpcentrum en een interne wiki. In de helpdesk haalt RAG de passages op voor het product en de versie van de klant en stelt een antwoord met links op. De supportmedewerker controleert het, past het aan en verstuurt het. Het filter op versie doet ertoe: de handleiding van een oudere release geeft antwoorden waarvan de klant weet dat ze niet kloppen.

Contracten en dossiers, met bronvermelding

Een inkoopteam vraagt bijvoorbeeld: "Wat hebben we met deze leverancier afgesproken over te late levering?" Het antwoord staat in een contract, misschien aangepast door een addendum. RAG geeft het antwoord met de exacte clausule en pagina, zodat de inkoper de bron leest voordat hij erop vertrouwt. Hetzelfde werkt voor dossiers bij een verzekeraar of een gemeente.

Vragen over alle documenten tegelijk, zoals "geef alle contracten met een clausule over prijsindexatie", passen slecht bij RAG, omdat RAG alleen de paar passages leest die het ophaalt. Haal voor zulke vragen eerst de clausules uit de documenten in een tabel en doorzoek die tabel.

Retrieval binnen een proces

Docket, ons referentieproject, controleert leveranciersfacturen aan de hand van een geschreven inkoopbeleid. Het haalt per factuur de beleidsclausules op die gelden, neemt een besluit en noemt bij elk automatisch besluit de clausule die erachter zit. Facturen die niet door de controle komen, gaan naar een medewerker, met de reden er al bij.

Wanneer je RAG, fine-tuning of lange context gebruikt

Gebruik RAG als antwoorden uit veel of veranderende documenten moeten komen, gebruikers de bron moeten kunnen controleren of verschillende mensen verschillende documenten mogen zien. Zet documenten direct in de prompt (lange context) als de set klein is en weinig verandert. Fine-tuning traint een model verder op voorbeelden. Dat bepaalt meer hoe het model schrijft dan wat het weet.

AspectRAGLange contextFine-tuning
Wat het doetStuurt het model alleen de passages die bij elke vraag passenStuurt bij elke vraag hele documenten meeVerandert met extra training hoe het model reageert
DocumentensetMeer dan een model in één keer kan lezenKlein genoeg voor één promptGeen; feiten die het model oppikt, zijn niet te herleiden
Als documenten veranderenDe gewijzigde documenten opnieuw indexerenDe nieuwe versie meesturenHet model opnieuw trainen
BronvermeldingIngebouwdMogelijk, als je het model vraagt te citerenNiet beschikbaar
Toegang per gebruikerGefilterd in de zoekstapJe kiest per gebruiker de documentenNiet beschikbaar
Lopende kosten groeien metDe passages die per vraag meegaanDe volledige lengte van de documenten, elke keerHet hosten en opnieuw trainen van het model
Past bijBeleid, contracten, kennisbanken, productdocumentatieEén handboek of één contractEen vast outputformaat, een huisstijl of een smalle taak met een hoog volume

Je kunt de aanpakken combineren, en ons artikel over RAG vs fine-tuning gaat dieper in op die keuze. Gaan de vragen over data in een systeem, zoals de status van een order of voorraadniveaus, dan werkt een query op dat systeem beter dan alle drie.

Wat er misgaat met RAG, en hoe je het opmerkt

De meeste fouten in RAG ontstaan voordat het model iets schrijft. De retrieval mist de passage met het antwoord, of geeft een verouderde versie terug, een slecht uitgelezen tabel of een passage die de gebruiker niet mag zien. Het model antwoordt dan uit wat het kreeg, of verzint een antwoord als er niets bruikbaars terugkwam.

De retrieval mist de juiste passage

Zoeken op betekenis geeft passages over het juiste onderwerp die de gevraagde productcode nergens noemen. Of een regel en de uitzondering erop zijn in twee passages geknipt, en alleen de regel kwam terug. Knippen langs de kopjes, zoeken op trefwoord toevoegen en naburige passages meenemen helpen hierbij.

Verouderde en dubbele documenten

Dezelfde procedure staat in drie mappen: de versie van vorig jaar, de actuele versie en een concept. De retrieval vindt alle drie, en het model citeert de oude of mengt ze. Indexeer alleen goedgekeurde, actuele versies, en verwijder passages zodra een document wordt vervangen.

Tabellen en scans slecht uitgelezen

Een eenvoudige tekstextractor maakt van een prijstabel losse getallen, en dan weet niemand meer welke prijs bij welk product hoort. Een gescande pdf zonder tekstherkenning levert helemaal geen tekst op, en het document valt ongemerkt uit elk antwoord. Controleer na het uitlezen een steekproef van elk documenttype.

Rechten die lekken

Rechten lekken als ze één keer naar de index zijn gekopieerd en daarna nooit zijn gesynchroniseerd. Iemand die uit een map is verwijderd, krijgt dan nog steeds antwoorden uit die map. Ze lekken ook als je erop vertrouwt dat de prompt inhoud verbergt. Filter in de zoekstap, synchroniseer rechten vanuit de bronsystemen en test met een account dat niets mag zien.

Het model verzint toch een antwoord

Vindt de retrieval niets relevants, dan kan het model toch antwoorden vanuit zijn algemene training, zonder bron of met een bron die iets anders zegt. Geef het de instructie te melden wanneer de passages het antwoord niet bevatten, controleer bronverwijzingen in code en toon "niet gevonden" als een antwoord geen geldige bron heeft.

Meet het met een testset

Verzamel echte vragen van toekomstige gebruikers, elk met de passage die het antwoord geeft, plus vragen die de documenten niet kunnen beantwoorden. Beoordeel retrieval en antwoorden apart: staat de juiste passage in de bovenste resultaten, en is het antwoord juist en onderbouwd door wat het citeert? Draai de set opnieuw na elke wijziging. Onze gids over de kwaliteit van RAG-retrieval evalueren laat zien hoe.

Beginnen: een kant-en-klare tool of laten bouwen

Begin met een kant-en-klare tool om met je documenten te chatten als één afdeling vragen stelt over één bron die iedereen mag lezen, en mensen de antwoorden controleren. Laat RAG bouwen als antwoorden uit meerdere systemen komen, rechten per gebruiker verschillen, bronvermelding een audit moet doorstaan, data in de EU moet blijven of antwoorden in je eigen software thuishoren.

Wanneer een kant-en-klare tool genoeg is

Met veel kantoorpakketten en AI-assistenten kun je bestanden uploaden of een schijf koppelen en er vragen over stellen. Dat is genoeg in deze situaties:

  • De documenten staan op één plek en veranderen zelden.
  • Iedereen die de tool gebruikt, mag alle documenten lezen.
  • Mensen controleren de bron voordat ze op een antwoord handelen.
  • De plek waar de aanbieder de bestanden opslaat en verwerkt, past bij je regels voor data.

Wanneer je het laat bouwen

  • Antwoorden komen uit meerdere bronnen, en elke bron heeft een eigen connector en synchronisatie nodig.
  • Toegang verschilt per persoon of team, en de zoekstap moet de rechten in elk bronsysteem volgen.
  • Bronvermelding moet controleerbaar zijn: maanden later kun je laten zien welke passage, uit welke versie, een antwoord onderbouwde.
  • Documenten en vragen moeten in de EU blijven, via een modelaanbieder met hosting in de EU of via je eigen cloudaccount.
  • Antwoorden horen thuis in de systemen die mensen al gebruiken, zoals een ticket of een dossier.

Onze gids over een RAG-systeem bouwen waar mensen op kunnen vertrouwen behandelt de bouw laag voor laag. Onze RAG-starterkit, open source op GitHub, is de structuur waarmee we projecten voor vragen over documenten beginnen. Wil je het laten bouwen en beheren, lees dan hoe we RAG-systemen bouwen die antwoorden uit je documenten, met bronvermelding en rechten.

Vragen over RAG

Is RAG hetzelfde als een chatbot?

Nee. Een chatbot is een interface waarin mensen vragen typen en antwoorden krijgen. RAG is een methode om antwoorden op je documenten te baseren. Het kan achter een chatvenster zitten, achter een zoekvak, in een conceptantwoord in een helpdesk of in een stap van een geautomatiseerd proces. Een chatbot zonder RAG antwoordt vanuit de algemene training van het model.

Voorkomt RAG dat AI dingen verzint?

RAG maakt verzonnen antwoorden minder waarschijnlijk, en ze komen nog steeds voor. Het model antwoordt uit passages die jij aanlevert en noemt ze, zodat een lezer de bron kan controleren. Het model kan een passage nog steeds verkeerd lezen, twee bronnen verkeerd combineren of een gat vullen als de retrieval niets relevants vindt.

Bouw daarom controles rond het model: een controle van bronverwijzingen in code, een antwoord "niet gevonden" en een testset. Bij beslissingen die ertoe doen, leest een mens de genoemde bron.

Kunnen onze documenten in de EU blijven?

Ja. In de RAG-systemen die wij bouwen, kunnen de documenten, de zoekindex en de logs in EU-regio's draaien. Het model draait via een aanbieder met hosting in de EU of in je eigen cloudaccount. Gebruik je een kant-en-klare tool, controleer dit dan voordat je iets uploadt.

Wat is het verschil tussen RAG en zoeken?

Zoeken geeft documenten of passages terug, en de lezer vindt daarin het antwoord. RAG zoekt eerst en laat daarna een taalmodel een antwoord schrijven uit de beste passages, met bronvermelding. Hebben mensen het hele document nodig, zoals een sjabloon of een formulier, dan is goed zoeken genoeg.

Alle artikelen

Bespreek één proces met de oprichter