Over de auteur: Almar van der Stappen is product owner bij Vattenfall en actief binnen de DDMA Commissie Conversational AI.
Large Language Models zijn goed in ontzettend veel dingen, maar daar ligt ook hun grootste valkuil. De modellen zijn generalistisch en hebben een breed scala aan kennis, maar zijn lastig in te zetten voor organisaties. Ze zijn namelijk niet even bekend met zaken die specifiek zijn aan de context of kennis binnen een organisatie. Afhankelijk van het gebruikte model zijn ze ook niet altijd even actueel, ze bieden namelijk alleen informatie tot op het moment van trainen. Hier komt de techniek van RAG om de hoek kijken. In dit artikel leggen we uit hoe RAG precies werkt, inclusief beperkingen en potentie voor de toekomst.
Wat is RAG?
RAG staat voor Retrieval-Augmented Generation. Het combineert de kracht van taalmodellen met informatie-ophaalsystemen. Dit betekent dat wanneer een vraag wordt gesteld, het systeem eerst relevante informatie opzoekt uit een externe databron en vervolgens gebruikt het taalmodel deze informatie om een nauwkeurig en specifiek antwoord te genereren.
Taalmodellen versus zoekmachines
Voor gerichte vragen is een antwoord dat is gegenereerd met een taalmodel vaak een praktischere manier om een antwoord te krijgen dan door te zoeken via een traditionele zoekmachine. In de basis vergelijkt een zoekmachine alleen welke bron het meest overeenkomt met jouw zoekterm. Dat werkt goed voor een deel van de zoekvragen waarbij je een bron zoekt om meer over een onderwerp te weten te komen, maar minder goed als je zoekt met een specifieke vraag waar je een gericht antwoord op wilt. Het taalmodel doorzoekt zijn interne kennisbank en presenteert vervolgens alleen informatie die relevant is voor de exacte zoekvraag.
Voorbeeld:
Stel je bent op zoek naar een abonnement voor je nieuwe smartphone. Je vraagt je af welk pakket voor jou voordelig is. Met de zoekopdracht ‘welk abonnement past het beste bij x minuten bellen, niet sms’en en veel internetten?’ kom je via een zoekmachine waarschijnlijk op een pagina met een prijzenlijst die verschillende opties vergelijkt. Het is dan aan jou om dit te interpreteren en een keuze te maken. Een gegenereerd antwoord gebruikt de informatie uit de pagina zelf en vertelt je op basis van die inhoud direct: ‘De beste abonnementen voor jouw situatie zijn als volgt ….’
Deze manier van vraag en antwoord geven lijkt meer op een gesprek zoals we dat gewend zijn. Terwijl nieuwe technologieën vaak lastiger zijn in gebruik, bieden de taalmodellen juist een herkenbare ervaring, eentje die makkelijk aan te leren is. Naast dat de reactie relevanter is dan een standaard zoekresultaat, geeft de vorm van een gesprek de gebruiker ook de kans om opvolgende vragen te stellen. In plaats van opnieuw te beginnen met zoeken kan de gebruiker vragen om diepgaande informatie of een misverstand aanduiden. Zo kan de gebruiker van het eerdere voorbeeld opvolgen met: ‘scheelt het veel als ik daar ook nog sms’en aan toevoeg?’.
Specifieke kennis inzetten
Het gebruik van taalmodellen voor het beantwoorden van gerichte vragen, zorgt dus voor een sneller en persoonlijker antwoord voor de gebruiker. Toch staat er nog een obstakel in de weg voor het commercieel gebruik hiervan. Zoals eerder genoemd is een taalmodel op een brede set van informatie getraind. Het weet veel van algemene zaken, maar kan niet zomaar ingezet worden om bijvoorbeeld een klant te helpen met een hulpvraag. In het voorbeeld hierboven zou de mobiele provider niet zomaar een model in kunnen zetten om de klant te helpen met het vinden van de juiste deal. Dat model zal namelijk niet over de informatie beschikken van de abonnementopties bij deze specifieke organisatie. Wil je dat wel, dan komt het gebruik van Retrieval Augmented Generation (RAG) om de hoek kijken. Om mensen te kunnen helpen binnen een specifiek domein kan RAG er namelijk voor zorgen dat we een taalmodel hanteren dat een expert is binnen een gegeven context, zoals die van jouw organisatie.
Waar een algemeen taalmodel zich richt op het tappen uit een brede kennisbank, kunnen we met behulp van RAG de informatie ophalen uit een kennisbank die we zelf aanleveren. Zo zou de eerder genoemde provider bijvoorbeeld een document met de prijslijst aan de kennisbank van het model kunnen voeren, die die informatie vervolgens aan een klant kan weergeven. Gebruik je hier een LLM voor, dan betekent de verandering in de trainingsdata dat je opnieuw moet trainen. De kennisbank staat los van de trainingsset. Dit geeft je flexibiliteit en is minder kosten-intensief.
Het gebruik van RAG op deze manier zorgt ervoor dat je meer controle hebt over de gepresenteerde antwoorden. Zo kunnen bronnen makkelijker met elkaar op inhoud worden vergeleken en zal je niet zo snel tegenstrijdige informatie produceren. Omdat antwoorden worden gegenereerd op basis van bronnen uit een kennisbank kunnen we ook de bron(nen) vermelden op basis waarvan de tekst is gegenereerd. Dit geeft gebruikers de kans om de tekst te fact-checken en zo nog verder de kwaliteit te waarborgen.
Limitaties
Werken met RAG brengt naast voordelen nog wel enkele limitaties met zich mee. Het belangrijkste is om te weten dat om een kennisbank te kunnen voeden met goede informatie een organisatie de interne kennis wel op orde moet hebben. Dat betekent dat er nog steeds werk zit in het goed organiseren van de kennis data die leeft binnen de organisatie.
Dit is dubbel belangrijk, omdat je bedachtzaam moet zijn rondom wat je toevoegt aan een kennisbank voor je model. Het model is namelijk niet kieskeurig in welke informatie wordt gebruikt, en zal net zo graag informatie halen uit een bestand dat jaren oud is, of waarvan de titel het woord ‘confidential’ of ‘deprecated’ bevat. Ook artikelen die elkaar opvolgen of stappen die chronologisch uitgevoerd moeten worden zullen allemaal in een vacuüm worden gepresenteerd.
Een ander probleem met generatie van tekst is dat een taalmodel kan hallucineren. (lees hier meer over in ons artikel over LLM’s.) Dan presenteert het model op een geloofwaardige wijze informatie die onjuist is. Net als bij andere bronnen op het internet is er kans dat de informatie die het model voorspelt feitelijk niet juist blijkt. Op andere plek werken we daar omheen door bijvoorbeeld gebruikte bronnen te noteren. Ook dit is voor het model ontzettend lastig en deze kan alleen een voorspelling doen over de bronnen waarop het antwoord is gegenereerd.
Veiligheid
Het op orde hebben van je data voor een taalmodel is niet alleen belangrijk voor het produceren van het beste antwoord. Wanneer je een model traint op interne data is het ook belangrijk dat al die data daadwerkelijk extern gedeeld mag worden. Zo is het van belang dat persoonsgegevens geanonimiseerd worden om juist om te gaan met data policies en -regulaties zoals GDPR. Dit is een van de redenen dat we RAG veel intern gebruikt zien worden. Niet alleen is het onschadelijk voor de organisatie wanneer medewerkers eens een incorrect antwoord krijgen, de kennisbank kan interne informatie bevatten zonder dat deze herschreven hoeft te worden om publiekelijk gedeeld te worden.
Tot slot
Hoewel je niet zomaar met RAG aan de slag kunt, en het wat voorbereiding vereist binnen een organisatie voordat het geïmplementeerd kan worden, blijft het een van de meest praktische manieren om Large Language Models in te zetten. RAG geeft de context aan taalmodellen, die dringend nodig zijn om ze te gebruiken in de praktijk. Het biedt een structurele manier om een gerichte databron te ondervragen en zo de kennis van het systeem door de tijd te beheren. Ook terwijl er nog veel ontwikkelingen spelen, lijken veel bedrijven niet bang om met RAG te experimenteren. We zien dat deze technologie onder de motorkap bij veel bedrijven al in de startblokken staat, en ook als consument gaan we er de komende jaren veel vaker mee in aanraking komen.