Gevorderd • Les 19
Retrieval-Augmented Generation (RAG) in de praktijk
RAG is de meest gebruikte architectuur om taalmodellen te voorzien van actuele of domeinspecifieke kennis zonder het model opnieuw te trainen. Je koppelt een zoeksysteem aan een LLM en het model genereert antwoorden op basis van opgehaalde documenten.
De basis-RAG-pipeline
Een RAG-pipeline bestaat uit drie stappen. Indexering: documenten worden opgesplitst in chunks, omgezet naar embeddings en opgeslagen in een vector database. Retrieval: bij een vraag wordt de vraag ook naar een embedding omgezet en de meest vergelijkbare chunks worden opgehaald. Generatie: de opgehaalde chunks worden samen met de vraag naar het LLM gestuurd dat een antwoord genereert.
Chunk-strategie
De grootte en manier van opsplitsen van documenten (chunking) heeft grote invloed op RAG-kwaliteit. Te kleine chunks missen context; te grote chunks bevatten ruis. Populaire methoden zijn fixed-size chunking, sentence-based chunking en recursive chunking. Experimenteer met overlap tussen chunks om context-verlies bij grenzen te verminderen.
Re-ranking en geavanceerd ophalen
Na het ophalen van de top-k chunks kun je een re-ranker inzetten om de relevantie opnieuw te beoordelen. Tools als Cohere Rerank of cross-encoders zijn effectiever dan pure cosine similarity. Hybride zoeken combineert vector search met traditioneel keyword search (BM25) voor betere recall.
Evalueren van RAG
Evalueer RAG op retrieval-kwaliteit (haalt het de juiste chunks op?) en op generatie-kwaliteit (is het antwoord correct en gebaseerd op de opgehaalde context?). Frameworks als RAGAS bieden gestandaardiseerde metrics. Veelvoorkomende problemen zijn hallucinations ondanks context, en antwoorden die de opgehaalde chunks negeren.