AI-serie interviewvragen 11: Hoe RAG optimaliseren?
RAG optimaliseren is geen kwestie van één enkele aanpassing, maar een volledige ketenoptimalisatie. Hieronder geef ik systematische strategieën vanuit vier dimensies: data-indexatie, retrieval, generatie en evaluatie, samen met praktijkervaring die je in een sollicitatiegesprek kunt noemen.
1. Optimalisatie van data-indexatie (verbeteren van de kwaliteit van de "kennisbank")
Dit wordt het vaakst over het hoofd gezien, maar levert de snelste resultaten op.
| Optimalisatiepunt | Probleem | Aanpak | Effectiviteitsindicator |
|---|---|---|---|
| Document parsing | Tabellen en stroomdiagrammen in PDF's worden genegeerd, of tekst is vervormd en de volgorde is verkeerd. | Gebruik een betere parsingbibliotheek (bijv. unstructured, pypdf met layoutbehoud); extraheer tabellen met pandas en zet ze om naar Markdown. |
Recall +5~15% |
| Grootte van tekstfragmenten | Als chunk te klein is, gaat context verloren (bijv. "zijn omzetgroei dit jaar" — "zijn" verwijzing verdwijnt); te groot leidt tot ruis. | Experimenteer met verschillende chunkgroottes (256/512/768 tokens), overlap instellen op 10~20%; voor lange documenten, splitsen op semantische grenzen (paragraaf/kop) in plaats van vaste lengte. | Hitrate / getrouwheid |
| Metadata toevoegen | Relevante alinea's worden gevonden maar kunnen niet worden herleid tot bron of tijd, of moeten per domein worden gefilterd. | Voeg metadata toe aan elke chunk: source (bestandsnaam/URL), timestamp, page_num, doc_type. Gebruik filters bij retrieval (bijv. doc_type == 'legal'). |
Filterprecisie |
| Keuze van embeddingmodel | Algemene embeddings presteren slecht in verticale domeinen (medisch, code, juridisch). | Gebruik domein-finetuned modellen (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct); of finetune je eigen embeddingmodel (met triplet loss). | Retrieval MRR@10 +10~20% |
2. Optimalisatie van retrieval (het "bladeren" nauwkeuriger maken)
Retrieval bepaalt de kwaliteit van de "referentiemateriaal" die aan de LLM wordt gevoed.
| Optimalisatiepunt | Probleem | Aanpak | Effect |
|---|---|---|---|
| Hybride retrieval | Vector retrieval kan exacte termen niet matchen (bijv. productmodel ABC-123), keyword retrieval begrijpt synoniemen niet. |
Gebruik tegelijkertijd vector retrieval (semantisch) en BM25 (keywords), weeg samen (bijv. 0.7vector + 0.3BM25) of fuseer via reranking. | Recall +10~25% |
| Herrangschikking (Rerank) | De eerste resultaten van vector retrieval zijn niet altijd het relevantst; het 10e resultaat is vaak beter. | Gebruik een cross-encoder model (bijv. BGE‑reranker-v2, Cohere Rerank) om de kandidaatset (bijv. top 20) opnieuw te scoren, neem top-K. |
Hitrate significant verbeterd (vooral top-1) |
| Query-herschrijving | Gebruikersvragen zijn vaag of in meerdere beurten ("Wat is de prijs?"). | Laat een LLM de oorspronkelijke vraag herschrijven naar een geschiktere vorm (bijv. "Wat is de prijs van iPhone 15?"); of vul aan met gespreksgeschiedenis. | Recall +5~15% |
| HyDE | Gebruikersvragen zijn te kort of abstract (bijv. "Vertel me over fotosynthese"), directe retrieval werkt slecht. | Laat LLM eerst een hypothetisch antwoord genereren, gebruik dat antwoord om documenten te zoeken. | Geschikt voor open domeinen, niet voor feitelijke precieze vragen |
| Aanpassing Top-K | Te kleine K kan cruciale informatie missen; te grote K verhoogt tokenverbruik en ruis. | Experimenteer met K=3/5/10, balans tussen recall en antwoordgetrouwheid. | Efficiëntie vs. effectiviteit trade-off |
3. Optimalisatie van generatie (zorg dat de LLM de referentiematerialen goed gebruikt)
Zelfs met goede retrieval zijn slechte prompts of modellen nutteloos.
| Optimalisatiepunt | Probleem | Aanpak | Effect |
|---|---|---|---|
| Prompt engineering | LLM negeert retrieval-inhoud of verzint dingen. | Geef duidelijke instructies: "Beantwoord uitsluitend op basis van de volgende referentie. Als de informatie ontoereikend of niet relevant is, antwoord dan 'Geen voldoende informatie'." Voeg few-shot voorbeelden toe die laten zien hoe je bronnen citeert. | Getrouwheid +20~40% |
| Contextcompressie | Opgehaalde inhoud is te lang (boven modelcontext) of grotendeels ruis. | Gebruik LLMLingua of Selective Context om de meest relevante zinnen te comprimeren voordat ze naar de LLM worden gestuurd. |
Verminderd risico op informatieverlies |
| LLM-modelupgrade | Een klein model (7B) kan geen complexe redenering uitvoeren of lange context onthouden. | Vervang door sterker model (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). | Redeneernauwkeurigheid aanzienlijk verbeterd |
| Streaming en citaten | Gebruikers kunnen de betrouwbaarheid van antwoorden niet verifiëren. | Laat LLM [citation:1] uitvoeren, corresponderend met het nummer van het opgehaalde document. Voeg aan de backend de originele link toe. |
Gebruikersvertrouwen + debugbaarheid |
| Weigering afstemmen | Model verzint wanneer het niet moet antwoorden, of zegt onterecht dat het niet weet. | Stel een drempel voor gelijkenis in: als de cosinusovereenkomst van de top-1 chunk met de vraag lager is dan 0.7, instrueer de LLM "Informatie niet relevant". | Verlaagt hallucinatiegraad |
4. Evaluatie en iteratie (weten waar te optimaliseren)
Zonder meting geen optimalisatie.
| Optimalisatiepunt | Aanpak | Indicator |
|---|---|---|
| Opzetten van evaluatieset | Bereid 100~300 echte gebruikersvragen voor + standaardantwoorden + correcte document-ID's. | Dek verschillende moeilijkheden en intenties. |
| Geautomatiseerde evaluatie | Gebruik RAGAS (Faithfulness, Answer Relevance, Context Recall) of TruLens. | Drie kernindicatoren: getrouwheid, antwoordrelevantie, context recall. |
| Handmatige evaluatie | Test elke week 20 slechte cases, analyseer fouttypes (retrievalfout / generatiefout / ontbrekende kennis). | Prioritering van verbeteringen. |
| A/B-test | Splits in productieomgeving om verschillende retrievalstrategieën te testen (bijv. BM25 vs. hybride retrieval). | Online indicatoren: gebruikerstevredenheid, percentage geen antwoord. |
5. "Praktijkervaring" om te noemen in sollicitatiegesprekken (pluspunt)
"In mijn RAG-project was de baseline hitrate slechts 67%. Ik heb drie dingen gedaan:
1. Chunken veranderd van vaste 1024 naar dynamische semantische splitsing (op basis van kop en paragraaf), hitrate verhoogd naar 74%;
2. Hybride retrieval toegevoegd (vector + BM25) en een kleine rerank model, hitrate gestegen naar 83%;
3. Prompt geoptimaliseerd en verplicht 'Geen relevante informatie gevonden' hallucinatiegraad verlaagd van 22% naar onder 5%.Daarnaast hebben we een continue evaluatiepijplijn opgezet, voor elke wijziging werd de RAGAS-score op 200 vragen getest om regressie te voorkomen."
Laatste samenvatting: een complete RAG-optimalisatie roadmap
Datalaag ─→ Documentopschoning, chunkoptimalisatie, metadata-verbetering, domein-embedding
Retrievallayer ─→ Hybride retrieval, reranking, query herschrijving, HyDE, Top-K afstemming
Generatielayer ─→ Prompt-versterking, instructies, compressie, citatie, weigeringsdrempel
Evaluatielayer ─→ Evaluatieset, RAGAS, handmatige analyse, A/B-experiment
评论
暂无已展示的评论。
发表评论(匿名)