Bouw retrieval-augmented generation-systemen die echt werken in productie. Van architectuurbeslissingen tot evaluatieframeworks, deze gids behandelt alles wat u nodig hebt om betrouwbare RAG-systemen op te leveren.
Retrieval-Augmented Generation (RAG) is een architectuurpatroon dat grote taalmodellen versterkt door ze relevante context uit externe kennisbronnen te bieden. In plaats van uitsluitend te vertrouwen op de trainingsdata van het model, haalt RAG relevante documenten op tijdens de inferentie en gebruikt die om de antwoorden van het model te onderbouwen.
Deze aanpak lost verschillende fundamentele beperkingen van LLM's op:
RAG-systemen zijn echter slechts zo goed als hun implementatie. Slechte opsplitsing, ontoereikende retrieval of slecht afgestemde prompts kunnen leiden tot systemen die net zoveel hallucineren als gewone LLM's — maar met vals vertrouwen. Deze gids behandelt de patronen die werken.
Een RAG-systeem voor productie bestaat uit zes kerncomponenten, elk met hun eigen optimalisatieoverwegingen. Inzicht in deze componenten is essentieel voor het bouwen van schaalbare systemen.
Brondocumenten van diverse formaten laden en voorbewerken
Documenten opsplitsen in semantisch betekenisvolle fragmenten
Tekstfragmenten omzetten in dichte vectorrepresentaties
Embeddings opslaan en indexeren voor efficiënte retrieval
Relevante fragmenten vinden voor een gegeven query
Antwoorden genereren met de opgehaalde context
Scheid voor productiesystemen uw innamepipeline van uw querypipeline. Inname kan asynchroon draaien (batchverwerking, wachtrijen), terwijl query's een synchrone uitvoering met lage latentie nodig hebben. Deze scheiding maakt onafhankelijke schaling mogelijk.
Opsplitsing is bij RAG vaak de doorslaggevende beslissing. Slechte opsplitsing leidt tot irrelevante retrievals en onvolledige context. De juiste strategie hangt af van uw documenttypes en querypatronen.
| Strategie | Beste voor | Afwegingen | Complexiteit |
|---|---|---|---|
| Vaste grootte | Eenvoudige documenten, consistente structuur | Kan semantische eenheden doorbreken | Low |
| Zin-gebaseerd | Inhoud in natuurlijke taal | Variabele fragmentgroottes | Medium |
| Semantisch | Complexe documenten, uiteenlopende onderwerpen | Hogere rekenkosten | High |
| Hiërarchisch | Lange documenten, retrieval op meerdere niveaus | Complexe implementatie | High |
Embeddings zetten tekst om in numerieke vectoren die de semantische betekenis vastleggen. De keuze van het juiste embedding-model en de juiste vectordatabase heeft invloed op de retrievalkwaliteit, latentie en kosten.
| Model | Dimensies | Prestaties | Kosten | Opmerkingen |
|---|---|---|---|---|
| OpenAI text-embedding-3-large | 3072 | Uitstekend | $$ | Beste algehele kwaliteit, ondersteunt dimensiereductie |
| Cohere embed-v3 | 1024 | Zeer goed | $$ | Meertalig, compressieopties |
| Voyage AI | 1024 | Uitstekend | $$$ | Domeinspecifieke modellen beschikbaar |
| BGE-large | 1024 | Goed | Free | Open source, zelf-gehoste optie |
| Mistral Embed | 1024 | Zeer goed | $ | Europese aanbieder, AVG-vriendelijk |
Snelle start, beheerde infrastructuur
Hybride zoeken, GraphQL-API
Prestaties, fijnmazig filteren
Ontwikkeling, prototyping
Bestaande Postgres-infrastructuur
Basale semantische zoekopdrachten zijn slechts het uitgangspunt. Productiesystemen gebruiken meerdere retrieval-strategieën om de relevantie te maximaliseren.
Combineer dichte vectorzoekopdrachten met dunne trefwoordzoekopdrachten (BM25). Dit vangt zowel semantische treffers als exacte trefwoordtreffers op die vectorzoekopdrachten mogelijk missen.
Gebruik een cross-encoder-model om de initiële retrieval-resultaten opnieuw te rangschikken. Duurder, maar verbetert de relevantie van top-k-resultaten aanzienlijk.
Gebruik een LLM om meerdere queryvarianten te genereren of complexe query's op te splitsen in subquery's. Haal voor elke op en voeg de resultaten samen.
Filter vooraf op metadata (datum, bron, categorie) vóór de vectorzoekopdracht. Essentieel voor grote documentcollecties en multi-tenant-systemen.
De generatiefase synthetiseert de opgehaalde context tot een coherent antwoord. Prompt-engineering en contextopmaak zijn cruciaal voor de kwaliteit.
Zelfs met contextvensters van 128k+ is meer context niet altijd beter. Studies tonen aan dat LLM's moeite hebben met informatie in het "midden" van lange contexten. Beperk de opgehaalde context tot 3-5 zeer relevante fragmenten en gebruik reranking om kwaliteit boven kwantiteit te stellen.
U kunt niet verbeteren wat u niet meet. RAG-systemen in productie hebben continue evaluatie over meerdere dimensies nodig.
| Metriek | Beschrijving | Doel | Hoe te meten |
|---|---|---|---|
| Retrieval-precisie | % van de opgehaalde fragmenten die relevant zijn | > 80% | Handmatig labelen van retrieval-resultaten |
| Retrieval-recall | % van de relevante fragmenten die worden opgehaald | > 90% | Vergelijking met ground-truth-dataset |
| Antwoordrelevantie | Hoe goed het antwoord de query adresseert | > 85% | LLM-als-rechter of menselijke evaluatie |
| Getrouwheid | Antwoord is onderbouwd in de opgehaalde context | > 95% | Extractie en verificatie van beweringen |
| Latentie (P95) | End-to-end responstijd | < 3s | Prestatiemonitoring |
Open-source framework voor RAG-evaluatie met metrieken voor getrouwheid, relevantie en context-recall.
Observability in productie met tracing, evaluaties en promptversiebeheer.
De overstap van prototype naar productie vereist het aanpakken van betrouwbaarheid, beveiliging en operationele aspecten.
Voorbij het basale RAG adresseren deze patronen specifieke toepassingen en verleggen ze de grenzen van wat mogelijk is.
Gebruik een agentlus om retrieval iteratief te verfijnen. De agent kan beslissen wanneer te zoeken, waarnaar te zoeken en wanneer hij genoeg context heeft om te antwoorden.
Beste voor complexe vragen met meerdere stappenBouw een kennisgraaf uit documenten en doorloop relaties tijdens de retrieval. Maakt multi-hop-redenering en entiteitsgerichte query's mogelijk.
Beste voor gestructureerde domeinen met relatiesTrain of prompt het model om te beslissen wanneer retrieval nodig is, de retrieval-relevantie te beoordelen en gegenereerde antwoorden zelf te bekritiseren.
Vermindert onnodige retrievalsBeoordeel de retrievalkwaliteit en val terug op webzoekopdrachten of andere bronnen wanneer interne kennis onvoldoende of onbetrouwbaar is.
Verbetert de dekking voor randgevallen