నా RAG యాప్ ఎందుకు తప్పుడు సమాచారాన్ని (hallucinate) ఇచ్చింది మరియు నేను దానిని ఎలా సరిదిద్దాను
నేను ఒకసారి నా RAG సపోర్ట్ బాట్ను నా సహోద్యోగికి డెమో చూపించాను.
మా రీఫండ్ పాలసీ 30 రోజులు అని ఆ బాట్ ఆమెతో చెప్పింది.
మా అసలు పాలసీ 14 రోజులు.
ఆ బాట్ తనకు తెలియదని చెప్పలేదు. అది పూర్తి నమ్మకంతో ఒక తప్పుడు సమాధానాన్ని సృష్టించింది.
RAG అనేది హాలూసినేషన్స్ను (hallucinations) ఆపాలి. కానీ నా సెటప్ వాటిని కేవలం ఒక చోటు నుండి మరో చోటుకి మార్చింది అంతే.
నేను ఐదు దశలను అనుసరించడం ద్వారా దీనిని సరిదిద్దాను.
- మీ chunking వ్యూహాన్ని సరిదిద్దుకోండి
నేను గతంలో డాక్యుమెంట్లను క్యారెక్టర్ కౌంట్స్ (character counts) ఆధారంగా విడగొట్టేవాడిని. ఇది ఒక తప్పు.
ఒకే chunkలో షిప్పింగ్ మరియు రిటర్న్స్ వంటి వేర్వేరు అంశాలు కలిసిపోయేవి. మోడల్ వీటిని కలిపి తప్పుడు సమాధానాలను ఇచ్చేది.
పరిష్కారం: నేను semantic chunking కి మారాను. ఇప్పుడు నేను హెడ్డింగ్లు మరియు పారాగ్రాఫ్ల ఆధారంగా టెక్స్ట్ను విడగొడుతున్నాను.
- కేవలం similarity scores మీద మాత్రమే ఆధారపడటం ఆపండి
నా retriever cosine similarity ఆధారంగా టాప్ మూడు chunksలను తీసుకునేది.
సారూప్యత (Similar) అంటే సంబంధితమైనది (Relevant) అని కాదు. ఒక chunk ప్రశ్నతో పోలిక కలిగి ఉండవచ్చు కానీ అందులో సమాధానం ఉండకపోవచ్చు.
పరిష్కారం: నేను cross-encoder తో reranking దశను జోడించాను. దీనివల్ల సిస్టమ్కు నిజమైన డేటా లేనప్పుడు అది నాకు తెలియజేయడానికి సహాయపడింది.
- మోడల్కు తప్పు చేయడానికి అనుమతి ఇవ్వండి
నా పాత ప్రాంప్ట్ (prompt) కేవలం ఇది మాత్రమే చెప్పేది: ప్రశ్నను సమాధానం చేయడానికి context ను ఉపయోగించండి.
ఒకవేళ context లో సమాధానం లేకపోతే, మోడల్ ఊహలతో ఆ ఖాళీలను పూరించేది.
పరిష్కారం: నేను ఒక ప్రత్యక్ష సూచనను జోడించాను. ఒకవేళ సమాధానం context లో లేకపోతే, "నాకు తెలియదు" అని చెప్పండి. ఇది మాత్రమే చాలా హాలూసినేషన్స్ను ఆపివేసింది.
- retrieval threshold ని సెట్ చేయండి
కొన్నిసార్లు retrieval విఫలమైనప్పుడు మోడల్ సాధారణ జ్ఞానాన్ని (general knowledge) ఉపయోగించేది. ప్రాంప్ట్ పనిచేస్తుందని నేను ఆశించాను, కానీ ఆశించడం అనేది వ్యూహం కాదు.
పరిష్కారం: నేను ఒక score cutoff ని జోడించాను. ఒకవేళ retrieval score చాలా తక్కువగా ఉంటే, సిస్టమ్ ఒక fallback response ను ఇస్తుంది. Context లేకపోతే సమాధానం ఉండదు.
- విజయం కోసం కాదు, వైఫల్యం కోసం పరీక్షించండి
నేను కేవలం సులభమైన ప్రశ్నలను మాత్రమే పరీక్షించేవాడిని. అస్పష్టమైన ప్రశ్నలను (ambiguous queries) మరియు సమాచారం లేని సందర్భాలను నేను విస్మరించాను.
పరిష్కారం: నేను 'trap questions' తో కూడిన ఒక evaluation set ను రూపొందించాను. ఇవి సమాధానం లేని సందర్భాలు. ఈ పరీక్షలను క్రమం తప్పకుండా చేయడం వల్ల మీ సిస్టమ్ ఎక్కడ విఫలమవుతుందో మీకు ఖచ్చితంగా తెలుస్తుంది.
RAG హాలూసినేషన్స్ను పూర్తిగా తొలగించదు. అది వాటిని నియంత్రించదగినవిగా మారుస్తుంది.
నా బాట్కు ఇంకా ప్రతి విషయం తెలియదు. కానీ ఇప్పుడు, అది తనకు తెలియని విషయాలను ఒప్పుకుంటుంది. అది దానిని ఉపయోగించదగినదిగా చేస్తుంది.
Source: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10
Optional learning community: https://t.me/GyaanSetuAi