Agentic RAG: wanneer loont een agent de moeite?

De verwachtingen rond generatieve AI zijn hooggespannen, zeker voor question answering op een eigen knowledge base via Retrieval-Augmented Generation (RAG). RAG-systemen combineren het generatieve vermogen van LLM’s met het ophalen van relevante informatie uit eigen databronnen, waardoor het model antwoorden kan formuleren op basis van actuele en gecontroleerde inhoud.

In de praktijk blijkt de kwaliteit van zo’n systeem echter niet vanzelfsprekend. Bij een eerdere implementatie (ongeveer 2 jaar geleden ondertussen) waren de resultaten niet goed genoeg om de toepassing met vertrouwen in te zetten. We noemen deze implementatie hierna het initiële systeem. Intussen wint agentic RAG aan populariteit: een aanpak waarbij een AI-agent zelf redeneert over de zoekstrategie in plaats van één vaste zoekopdracht uit te voeren. Dat brengt ons bij de hoofdvraag van dit blogartikel: in welke mate verbeteren agentic RAG-technieken de outputkwaliteit in vergelijking met basic RAG?

Use case: de werkgeversinstructies van de RSZ

Als testcase gebruikten we de administratieve instructies voor werkgevers van de RSZ. Deze knowledge base bestaat uit meer dan 400 webpagina’s met vaak complexe, sterk gestructureerde informatie. Daarop bouwden we een vraag- en antwoordsysteem dat vragen van gebruikers beantwoordt op basis van deze instructies.

Vóór er sprake kan zijn van retrieval, moet de data eerst voorbereid worden (ingestion). We halen alle webpagina’s op, splitsen elke pagina op basis van haar structuur in secties, en vormen die om tot chunks die we indexeren als vector embeddings. Twee details bleken daarbij belangrijk: de pagina’s worden opgesplitst in chunks op basis van de structuur van de pagina, en aan elke chunk voegen we de breadcrumb (het navigatiepad van de pagina) toe als metadata. Die breadcrumb geeft zowel de retrieval als de generatie extra context, wat de kwaliteit merkbaar ten goede komt. De retrieval zelf is hybride: semantisch zoeken wordt gecombineerd met keyword search.

Ingestion pipeline: voorbereiding van de data

Van basic naar agentic RAG

Bij basic RAG verloopt alles in één rechte lijn: de vraag van de gebruiker gaat naar de retriever, die in één keer de meest relevante chunks ophaalt uit de knowledge base. Het taalmodel genereert vervolgens een antwoord op basis van die context. Het feit dat er slechts één enkele retrieval-stap is betekent dat er geen manier is om de retrieval bij te sturen als het resultaat niet toereikend is.

Basic RAG

Bij agentic RAG krijgt een AI-agent de retriever als tool ter beschikking en doorloopt hij een zogenaamde ReAct-loop: de agent redeneert over de vraag (reason), voert een zoekopdracht uit (act), bekijkt de resultaten (observe) en beslist dan of hij bijkomende, zoekopdrachten nodig heeft. De agent bepaalt dus zelf de zoekstrategie, en bepaalt bij de zoekopdrachten ook zelf de zoektermen. Om te vermijden dat hij eindeloos blijft zoeken, voorzien we een stop-criterium in de prompt en een maximum aantal iteraties.

Agentic RAG

Evaluatie met een business expert

Om beide systemen objectief te vergelijken stelden we een testset samen met representatieve vragen, telkens met een referentie-antwoord en referentie-URL, gevalideerd door een business expert. De scoring gebeurde eveneens in samenwerking met die expert, op twee dimensies:

  1. Correctheid: is het antwoord feitelijk correct en volledig? We scoren op een drieledige schaal: correct (2), deels correct (1) of fout (0).
  2. Bruikbaarheid: kan de gebruiker zonder extra hulp verder met het antwoord? Een bruikbaar antwoord is beknopt, duidelijk en sluitend.

Resultaten

Voor de volledigheid vergelijken we de nieuw geïmplementeerde basic RAG en agentic RAG systemen met de oude, initiële implementatie. Die bestaat ook uit een basic RAG systeem, maar verschilt van de nieuwe implementatie door een meer rudimentaire ingestion (de webpagina’s werden opgesplitst op basis van een vast aantal characters en niet op basis van de structuur van de pagina’s; er werden geen breadcrumbs toegevoegd als metadata) en het gebruik van een ouder taalmodel ten opzichte van het nieuwe basic RAG systeem.

De resultaten tonen een duidelijke vooruitgang tegenover de initiële implementatie. Waar het initiële systeem nog 10 foute antwoorden gaf op 47 vragen, leverden zowel basic RAG als agentic RAG geen enkel feitelijk fout antwoord meer op. Basic RAG beantwoordde 37 vragen correct en 10 deels correct; agentic RAG deed het nog iets beter met 41 correcte en 6 deels correcte antwoorden.

Vergelijking van de resultaten van de initiële versie, basic RAG en agentic RAG

Als we de deels correcte antwoorden analyseren, dan zien we dat de oorzaken uiteenvallen in drie categorieën. Bij vier vragen ontbreekt de informatie simpelweg in het corpus — daar kan geen enkele techniek iets aan verhelpen, enkel een aanpassing van het corpus zelf. Bij vier vragen slaagde basic RAG er niet in de relevante informatie op te halen. De agent maakt hier een verschil. Maar daar moeten we meteen aan toevoegen dat eenvoudigere technieken zoals re-ranking en query decompositie deze problemen ook hadden opgelost. Bij twee vragen ten slotte liep het mis in de generatie-stap, waar het taalmodel het antwoord formuleerde op een manier die voor verwarring kan zorgen bij de eindgebruiker. Dit was een probleem dat bij beide systemen even vaak voorkwam en aangepakt kan worden via de prompt.

Oorzaak fouten
(oranje hierboven)
Basic RAGAgentic RAGOplossing
Corpus: info ontbreekt in corpus44Corpus aanpassen
Retrieval: relevante info niet opgehaald40Re-ranking + query-decompositie
Generation: foute interpretatie22Prompt aanpassen

Op het vlak van bruikbaarheid scoorden beide systemen gelijkaardig: telkens vier antwoorden waren niet bruikbaar omdat ze te uitvoerig waren of geen sluitend antwoord gaven op de vraag. Ook dat is bij te sturen via de prompt. Belangrijk is ook het weigergedrag: wanneer de relevante informatie ontbreekt, antwoorden beide systemen correct met “Ik kan dit niet bevestigen op basis van de aangeleverde bronnen” in plaats van te hallucineren.

Wat hebben we geleerd?

Een eerste belangrijke vaststelling: de kwaliteit van de knowledge base is sterk bepalend voor de outputkwaliteit. Het fundament waarop alles rust is een goed gestructureerde knowledge base met zelfstandig leesbare secties, feitelijk zuivere inhoud, alle relevante informatie aanwezig, en voorwaarden die expliciet en lineair beschreven zijn.

Daarnaast speelt ook de retrieval een belangrijke rol bij de outputkwaliteit: als de relevante context aangeleverd wordt aan het taalmodel, is het antwoord (bijna) altijd correct.

Verder stellen we vast dat basic RAG al een hoog kwaliteitsniveau biedt. Op onze testset, die representatief is voor de meest voorkomende gebruikersvragen, biedt de agent weinig meerwaarde. De retrieval-fouten die basic RAG nog maakt, kunnen verholpen worden met eenvoudigere technieken zoals re-ranking en query-decompositie, zonder de overhead van een volledige agent-loop.

Waar kan een agent dan wél het verschil maken? Bij sequentiële multi-hop vragen: vragen waarbij het antwoord op een eerste deelvraag nodig is om de volgende deelvraag te kunnen stellen. Onze testset bevatte geen dergelijke vragen, maar voor use cases waar dit vraagtype frequent voorkomt, is de iteratieve zoekstrategie van een agent een reëel voordeel. Daar staat tegenover dat een agent hogere kosten met zich meebrengt (meer LLM-calls) en langere antwoordtijden.

Conclusie

Met een kwalitatieve knowledge base en een degelijke basic RAG-implementatie kom je al heel ver. Investeer daarom eerst in de knowledge base zelf, in een degelijke ingestion pipeline en in beproefde retrieval-technieken, en los resterende problemen op met eenvoudige middelen zoals re-ranking, query-decompositie of promptaanpassingen. Zet agentic RAG enkel in wanneer de meerkost en de langere antwoordtijd verantwoord zijn door vraagtypes die effectief multi-hop redenering vereisen, en pas wanneer eenvoudigere technieken tekortschieten. Zoals wel vaker in AI-projecten geldt ook hier: begin eenvoudig, meet objectief, en voeg complexiteit pas toe als de cijfers erom vragen.

_________________________

Dit is een ingezonden bijdrage van Bert Vanhalst. Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.


More posts