RAG (retrieval-augmented generation) laat een AI-assistent eerst iets opzoeken voordat hij antwoordt. Het systeem doorzoekt je eigen documenten, zoals productbladen of een helpcentrum, en schrijft het antwoord op basis van de passages die het vond. Een chatbot in een webshop noemt dan je echte retourbeleid in plaats van een algemene gok. Verandert het beleid, dan pas je het document aan en blijft het AI-model zelf hetzelfde.
Waar komt de term vandaan?
De naam komt uit een paper uit 2020 van Lewis e.a. van Facebook AI Research, UCL en NYU. Zij koppelden een taalmodel aan een doorzoekbare index van Wikipedia, en het gecombineerde model schreef specifiekere, gevarieerdere en feitelijk juistere tekst dan een vergelijkbaar model zonder zoekstap. Het overzichtsartikel van Gao e.a. (2023) gebruikt de term voor elk groot taalmodel dat bij het antwoorden externe bronnen raadpleegt.
Hoe werkt het?
Gao e.a. beschrijven de basisversie in drie stappen:
- Indexeren: documenten worden in stukken (chunks) geknipt, een embeddingmodel zet elk stuk om in een embedding (een reeks getallen die de betekenis vastlegt), en die vectoren gaan in een vectordatabase.
- Ophalen: de vraag wordt met hetzelfde model omgezet in een vector, en de database geeft de stukken terug die qua betekenis het dichtst bij liggen, een vorm van semantisch zoeken.
- Genereren: de vraag en de opgehaalde stukken gaan samen in de prompt, en het model schrijft daaruit zijn antwoord.
Frameworks als LlamaIndex en LangChain bundelen deze stappen. Wat het overzichtsartikel "advanced RAG" noemt, voegt werk toe voor en na het ophalen: de zoekvraag herschrijven, zoeken op trefwoorden en op betekenis combineren, en de gevonden stukken opnieuw rangschikken (reranking), zodat de relevantste bij het model aankomen.
Waarom train je de kennis niet in het model?
Bij fine-tuning verander je het model zelf met extra training. Bij RAG blijft de kennis in de documenten. Lewis e.a. lieten het verschil zien door hun model een oudere Wikipedia-index te geven, uit 2016 in plaats van 2018. Gevraagd naar 82 wereldleiders die tussen die jaren waren gewisseld, noemde het model met de index van 2018 in 68% van de gevallen de leider van 2018, en met de index van 2016 in 4%. Er werd niets opnieuw getraind.
Voor feiten die veranderen, zoals prijzen of leveringsvoorwaarden, is dat de praktische winst: je past een document aan in plaats van een model te trainen. De kosten verschuiven. Gewijzigde documenten moeten opnieuw worden geïndexeerd, en elke vraag neemt de opgehaalde passages mee als extra tokens.
Waar gaat het mis?
RAG vermindert hallucinaties maar voorkomt ze niet. In een menselijke beoordeling door Lewis e.a. op Jeopardy-vragen vonden beoordelaars RAG in 42,7% van 452 vergelijkingen feitelijk juister dan het model zonder zoekstap, en in 7,1% minder juist. Gao e.a. noemen de zwakke plekken die blijven: het ophalen kan de passage met het antwoord missen of irrelevante stukken opleveren, en het model kan nog steeds dingen schrijven die niet in de opgehaalde tekst staan. Het antwoord is bovendien zo goed als de documenten. Een verouderde pdf in de index levert een verouderd antwoord op.
Voorbeeld
Stel: een webshop zet een chatbot op zijn helppagina. Een klant vraagt: "Kan ik een artikel uit de uitverkoop retourneren?" Het systeem doorzoekt het helpcentrum, vindt het artikel over retourneren en de voorwaarden voor de uitverkoop, en geeft beide passages met de vraag aan het model. Het model antwoordt op basis van die passages en linkt ernaar. Verandert de retourtermijn, dan past de webshop het helpartikel aan, indexeert het opnieuw, en geeft de chatbot het nieuwe antwoord. Had de zoekstap alleen het algemene retourartikel gevonden, dan had het model de uitzondering voor uitverkoopartikelen gemist.
Bronnen
- Lewis et al.: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020)arXiv
- Gao et al.: Retrieval-Augmented Generation for Large Language Models, a survey (2023)arXiv
- LlamaIndex: Introduction to RAGWeb
- LangChain: Retrieval Augmented Generation (RAG) with Deep AgentsWeb
- Wikipedia: Retrieval-augmented generationWeb
