RAG-patronen
RAG-patronen (Engels: RAG Patterns) — een verzameling architecturale en methodologische benaderingen voor het bouwen van Retrieval-Augmented Generation (RAG)-systemen. Deze patronen zijn bedoeld om fundamentele problemen van grote taalmodellen (LLM) op te lossen, zoals hallucinaties, verouderde kennis en gebrek aan domeinspecificiteit, door LLM's te integreren met externe, dynamisch toegankelijke gegevensbronnen[1]. De evolutie van RAG heeft een weg afgelegd van eenvoudige lineaire pipelines naar complexe modulaire en agentgebaseerde systemen[2].
Belangrijkste RAG-patronen
Met de ontwikkeling van de technologie zijn er talloze RAG-patronen ontstaan, elk gericht op specifieke uitdagingen met eigen afwegingen tussen kwaliteit, snelheid en kosten.
- Classic RAG (Klassiek RAG) — de basisaanpak waarbij de gebruikersvraag wordt gevectoriseerd om relevante fragmenten (chunks) te zoeken in een vectordatabase; de gevonden chunks worden samen met de vraag aan het LLM aangeboden voor het genereren van een antwoord[1].
- Multi‑Query RAG (Meervoudige zoekopdrachten) — het LLM genereert meerdere herformuleerde/gepreciseerde varianten van de oorspronkelijke zoekopdracht; de zoekopdracht wordt uitgevoerd over alle varianten en de resultaten worden samengevoegd, wat de volledigheid (recall) verhoogt[3].
- HyDE (Hypothetical Document Expansion) — bedoeld om de «semantische kloof» tussen een korte zoekopdracht en lange documenten te overbruggen. Het LLM genereert eerst een «hypothetisch» antwoorddocument, waarna de embedding daarvan wordt gebruikt voor de zoekopdracht, wat vaak de kwaliteit van het ophalen verbetert[4].
- Hybrid Retrieval (Hybride zoeken) — een combinatie van semantisch (vectorgebaseerd) en lexicaal (BM25) zoeken. Hybride schema's zijn de standaard geworden voor productiesystemen: vectorzoeken dekt semantische overeenkomsten, terwijl BM25 exacte termen/ID's/acroniemen vindt; de resultaten worden samengevoegd via fusion[5][6][7].
- Re‑ranking (Herrangschikking) — een tweefasig proces: een snelle retriever levert een set kandidaten op (bijvoorbeeld top‑100), waarna een cross-encoder (of een andere reranker) de relevantie herberekent en de beste selecteert (bijvoorbeeld top‑5) voor het LLM[8][9].
- Query Routing (Routering van zoekopdrachten) — in systemen met meerdere heterogene gegevensbronnen (verschillende indexen/databases/API's) wordt de zoekopdracht via een router (LLM-selector of classifier) naar de beste bron geleid; bevat fallback-strategieën[10].
- Agentic/Web RAG (Agentgebaseerde RAG) — het LLM fungeert als agent: het decomponeert complexe vragen, plant iteraties en gebruikt tools (vectorzoeken, webzoeken) met terugkoppeling. Een typische implementatie is het ReAct-paradigma[11]; voor webgerichte verzameling en verplichte bronvermelding zie WebGPT[12].
Verwante en opkomende paradigma's
- GraphRAG (Grafische RAG) — maakt gebruik van een kennisgraaf als bron en mechanisme voor contextselectie; zoeken verloopt via de structuur van relaties tussen entiteiten en via tekst, wat de interpreteerbaarheid en kwaliteit bij multi‑hop vragen verhoogt[13][14].
- MM‑RAG (Multimodale RAG) — werkt met tekst en visuele bronnen (scans/schema's/tabellen). Voorbeeld: VisRAG demonstreert VLM-georiënteerd ophalen en genereren op multimodale documenten[15].
- Packaging & Context Handling (Contextinpakking) — manieren om gevonden chunks in de prompt te integreren: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].
Vergelijkingstabel van patronen
| Patroon | Wanneer toepassen | Invloed op kwaliteit | Kosten / Latentie | Risico's en beperkingen |
|---|---|---|---|---|
| Classic RAG | PoC en eenvoudige Q&A op een homogene kennisbasis | Basisniveau; sterk afhankelijk van embeddings[1] | Laag | Gevoeligheid voor formulering; risico op irrelevante context |
| Hybrid Retrieval | In de meeste productiescenario's; veel codes/acroniemen/ID's | Verhoogt volledigheid; dekt exacte termen[5][6][7] | Laag/Gemiddeld | Afstemming van fusion-gewichten; twee indexen |
| Re‑ranking | Kritisch wanneer hoge precisie belangrijk is | Significante verbetering van precision op top‑k[8][9] | Gemiddeld/Hoog | Extra latentie/kosten |
| Multi‑Query | Korte/meervoudige zoekopdrachten | Verhoogt recall[3] | Gemiddeld | Overbodige/ruizige herformuleringen |
| HyDE | Korte/ambigue zoekopdrachten met grote «semantische kloof» | Verbetert kwaliteit van ophalen zero‑shot[4] | Gemiddeld | Afhankelijk van de kwaliteit van de «hypothetische» tekst |
| Query Routing | Meerdere bronnen (documentbasis, SQL, API, web) | Verhoogt relevantie via de juiste bron[10] | Gemiddeld | Routeringsfout = mislukte zoekopdracht |
| Agentic/Web RAG | Complexe, onderzoeksmatige, meerstapsige zoekopdrachten | Lost taken op buiten de lineaire pipeline[11][12] | Hoog | Complexiteit, risico op lussen; guardrails vereist |
Praktische implementatie en architectuur
Implementatiefasen
- Proof of Concept (PoC): Begin met Classic RAG op een beperkte maar representatieve dataset om de kwaliteit van embeddings en het basisophalen te valideren[1].
- Minimum Viable Product (MVP): Implementeer Hybrid Retrieval en Re‑ranking als de beste verhouding tussen inspanning en effect[5][8].
- Productie: Voeg querytransformaties toe (HyDE, Multi‑Query) en indien nodig Query Routing; stel observability in (logging van ophalen/herrangschikking/antwoorden) en A/B-testen[3][10].
Belangrijkste componenten
- Chunking: Een van de meest kritische kwaliteitsfactoren. Naïeve vaste groottes verbreken vaak semantische eenheden. Structuurgeoriënteerde (op opmaak gebaseerde) of recursieve splitters worden aanbevolen (alinea → zin → woord)[17][18].
- Embeddings en metadata: Sla bij elke chunk document_id, pagina/sectie, titel en datums op; dit is noodzakelijk voor filtering en correcte bronvermelding.
- Hybride ophalen en herrangschikking: Gebruik BM25+vector met fusion (of RRF), gevolgd door een cross-encoder voor herrangschikking op een kleine pool van kandidaten[5][6][8].
- Contextinpakking: Kies Map‑Reduce, Refine of Tree‑of‑Chunks voor lange corpora[16][18].
Veelvoorkomende fouten (antipatronen)
- Alleen vectorzoeken zonder BM25 → mislukkingen bij codes/ID's/acroniemen[5][7].
- Te grote/kleine chunks → verlies van context of «verdunning» van de embedding[17].
- Geen herrangschikking in productie → het LLM ontvangt ruizige context[8].
- Geen observability en brontracing → het is onmogelijk om de oorzaken van fouten te analyseren (zie evaluatie van RAG).
Kwaliteitsevaluatie en metrieken
Evaluatie wordt uitgevoerd op het niveau van ophalen (offline) en end‑to‑end (generatie).
Metrieken van de retriever
- Hit Rate, Recall@k, MRR — dekking en positie van relevante documenten.
- Context Precision & Recall — in hoeverre de opgehaalde context vrij is van «ruis» en alles dekt wat nodig is (geïmplementeerd in RAGAS)[19].
Metrieken van de generator (end‑to‑end)
- Faithfulness / Groundedness — de mate waarin het antwoord overeenkomt met de aangeboden context.
- Answer Relevancy (Relevantie van het antwoord) — de mate waarin het antwoord overeenkomt met de oorspronkelijke vraag.
Voor de automatisering van metrieken worden open‑source frameworks gebruikt: RAGAS, TruLens (RAG triad: context relevance, groundedness, answer relevance), DeepEval[20][21].
Zie ook
- Retrieval-Augmented Generation (RAG)
- Vectordatabases
- Embedding
- AI-agent
- GraphRAG
- MM-RAG
- Evaluatie en benchmarks van LLM
Literatuur
- Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
- Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
- Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels (HyDE). ACL 2023. ACL Anthology; arXiv:2212.10496.
- Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
- Weaviate Docs. Hybrid search (BM25+Vector). [1].
- Qdrant Docs. Hybrid Queries. [2].
- Milvus Docs. Full‑Text Search / Hybrid Search. [3] / [4].
- LangChain Docs. MultiQueryRetriever. [5].
- Cohere Docs. Rerank — best practices. [6].
- LlamaIndex Docs. Routing (query routers/selectors). [7].
- Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR. arXiv:2210.03629.
- Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
- Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. (2024). [8].
- Microsoft Research. Project GraphRAG. (2024). [9].
- Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594.
- Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
- Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). [10].
- TruLens Docs. RAG Triad. [11].
- DeepEval (GitHub). The LLM Evaluation Framework. [12].
- LangChain Docs. RecursiveCharacterTextSplitter. [13].
- LlamaIndex Docs. HierarchicalNodeParser; Response Synthesis (Tree/Refine). [14]; [15].
Noten
- ↑ 1.0 1.1 1.2 1.3 Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
- ↑ Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
- ↑ 3.0 3.1 3.2 LangChain Docs. MultiQueryRetriever. https://python.langchain.com/docs/how_to/MultiQueryRetriever/
- ↑ 4.0 4.1 Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels. ACL 2023. arXiv:2212.10496; ACL Anthology: 2023.acl‑long.99.
- ↑ 5.0 5.1 5.2 5.3 5.4 Weaviate Docs. Hybrid search (BM25+Vector). https://docs.weaviate.io/weaviate/concepts/search/hybrid-search
- ↑ 6.0 6.1 6.2 Qdrant Docs. Hybrid Queries. https://qdrant.tech/documentation/concepts/hybrid-queries/
- ↑ 7.0 7.1 7.2 Milvus Docs. Full‑Text Search и Hybrid Search. https://milvus.io/docs/full-text-search.md; https://milvus.io/docs/hybrid_search_with_milvus.md
- ↑ 8.0 8.1 8.2 8.3 8.4 Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
- ↑ 9.0 9.1 Cohere Docs. Rerank — best practices. https://docs.cohere.com/docs/reranking-best-practices
- ↑ 10.0 10.1 10.2 LlamaIndex Docs. Routing (query routers/selectors). https://docs.llamaindex.ai/en/stable/module_guides/querying/router/
- ↑ 11.0 11.1 Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023. arXiv:2210.03629.
- ↑ 12.0 12.1 Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
- ↑ Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. 2024. https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
- ↑ Microsoft Research. Project GraphRAG. https://www.microsoft.com/en-us/research/project/graphrag/
- ↑ Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594; OpenReview: zG459X3Xge.
- ↑ 16.0 16.1 Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
- ↑ 17.0 17.1 LangChain Docs. RecursiveCharacterTextSplitter. https://python.langchain.com/docs/how_to/recursive_text_splitter/
- ↑ 18.0 18.1 LlamaIndex Docs. HierarchicalNodeParser и Tree Summarization. https://docs.llamaindex.ai/en/stable/api/llama_index.core.node_parser.HierarchicalNodeParser.html; https://docs.llamaindex.ai/en/stable/examples/low_level/response_synthesis/
- ↑ Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). https://aclanthology.org/2024.eacl-demo.16/
- ↑ TruLens Docs. RAG Triad. https://www.trulens.org/getting_started/core_concepts/rag_triad/
- ↑ DeepEval (GitHub). https://github.com/confident-ai/deepeval