𝗪𝗵𝘆 𝗠𝘆 𝗥𝗔𝗚 𝗔𝗽𝗽 𝗞𝗲𝗽𝘁 𝗛𝗮𝗹𝗹𝘂𝗰𝗶𝗻𝗮𝘁𝗶𝗻𝗴 𝗔𝗻𝗱 𝗛𝗼𝘄 𝗜 𝗙𝗶𝘅𝗲𝗱 𝗜𝘁
Een paar maanden geleden gaf ik een demo van mijn RAG-supportbot. Hij vertelde een collega dat ons restitutiebeleid 30 dagen was. Ons werkelijke beleid is 14 dagen. De bot aarzelde niet. Hij zei niet dat hij het niet zeker wist. Hij verzon een antwoord met volkomen zelfvertrouwen.
RAG zou hallucinaties moeten verminderen. Mijn opstelling verschoof ze alleen maar. Ik heb vijf lessen geleerd tijdens het debuggen van dit systeem.
Stop met het gebruik van vaste tekenlimieten voor chunks Ik gebruikte chunks van 1000 tekens met een kleine overlap. Dit veroorzaakte problemen. Eén chunk mengde vaak verzendregels met retourregels. Het model combineerde deze verschillende secties tot één fout antwoord. Oplossing: Ik ben overgestapt op semantic chunking. Ik splits de data op basis van koppen en paragrafen. Hierdoor blijft gerelateerde informatie bij elkaar.
Gelijkenis betekent geen relevantie Mijn retriever haalde de top 3 chunks op basis van cosine similarity. Een chunk kan op een vraag lijken zonder het antwoord te bevatten. Het model gaat ervan uit dat alles in de context waar is. Oplossing: Ik heb een reranking-stap toegevoegd met behulp van een cross-encoder. Ik ben ook begonnen met het loggen van retrieval scores. Dit laat zien wanneer het systeem geen echt antwoord heeft.
Vertel het model dat het oké is om te falen Mijn oorspronkelijke prompt was simpel: Gebruik de context om de vraag te beantwoorden. Het gaf het model geen instructies voor het geval de context ontbrak. Het model vulde de gaten op met gissingen. Oplossing: Ik heb een specifieke instructie toegevoegd. Als het antwoord niet in de context staat, zeg dan dat je het niet weet. Hallucinaties namen onmiddellijk af.
Dwing een retrieval-drempel af Het model gebruikte nog steeds algemene kennis wanneer de retrieval mislukte. Ik hoopte dat de prompt zou werken, maar hopen is geen strategie. Oplossing: Ik heb een harde score-drempel ingesteld. Als de hoogste retrieval score te laag is, stopt het systeem. Het geeft een fallback-bericht terug in plaats van het model te laten gissen.
Test op fouten, niet alleen op succes Ik testte alleen eenvoudige vragen waarvan ik wist dat de documenten ze besloegen. Ik negeerde ambigue vragen en ontbrekende informatie. Hallucinaties gedijen in die gaten. Oplossing: Ik heb een evaluatieset van strikvragen gemaakt. Dit zijn gevallen waarin het juiste antwoord niet in het systeem staat. Ik voer deze tests uit elke keer dat ik een wijziging aanbreng.
RAG stopt hallucinaties niet volledig. Het maakt ze beheersbaar. Mijn bot weet nog steeds niet alles. Maar nu zegt hij het als hij het niet zeker weet. Dat maakt de tool bruikbaar.
Bron: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10