𝗪𝗵𝘆 𝗠𝘆 𝗥𝗔𝗚 𝗔𝗽𝗽 𝗛𝗮𝗹𝗹𝘂𝗰𝗶𝗻𝗮𝘁𝗲𝗱 𝗔𝗻𝗱 𝗛𝗼𝘄 𝗜 𝗙𝗶𝘅𝗲𝗱 𝗜𝘁
நான் ஒருமுறை எனது RAG சப்போர்ட் பாட்டை (support bot) ஒரு சக ஊழியருக்குக் காண்பித்தேன்.
அந்த பாட் எங்களது ரீஃபண்ட் கொள்கை (refund policy) 30 நாட்கள் என்று அவரிடம் கூறியது.
எங்களது உண்மையான கொள்கை 14 நாட்கள் மட்டுமே.
அந்த பாட் தனக்குத் தெரியாது என்று கூறவில்லை. அது மிகுந்த நம்பிக்கையுடன் ஒரு பதிலைச் சுயமாக உருவாக்கியது.
RAG தவறான தகவல்களை உருவாக்குவதைத் (hallucinations) தடுக்க வேண்டும். ஆனால் எனது அமைப்பில் அவை தவிர்க்கப்படாமல் வேறு வடிவத்திற்கு மாறின.
ஐந்து படிகளைப் பின்பற்றுவதன் மூலம் நான் இதைச் சரி செய்தேன்.
- உங்கள் chunking உத்தியைச் சரிசெய்யுங்கள்
நான் முன்பு ஆவணங்களை எழுத்துக்களின் எண்ணிக்கையின் அடிப்படையில் பிரித்தேன். இது ஒரு தவறான அணுகுமுறை.
ஒரு chunk பெரும்பாலும் ஷிப்பிங் (shipping) மற்றும் ரிட்டர்ன்ஸ் (returns) போன்ற வெவ்வேறு தலைப்புகளைக் கலந்து வைத்திருந்தது. இதனால் மாடல் இவற்றைத் தவறான பதில்களாக மாற்றியது.
தீர்வு: நான் semantic chunking முறைக்கு மாறினேன். இப்போது நான் தலைப்புகள் மற்றும் பத்திகளின் அடிப்படையில் உரையைப் பிரிக்கிறேன்.
- similarity scores-களை மட்டும் நம்புவதை நிறுத்துங்கள்
எனது retriever, cosine similarity அடிப்படையில் முதல் மூன்று chunks-களை எடுத்தது.
'ஒரே மாதிரியாக இருப்பது' (similar) என்பது 'தொடர்புடையதாக இருப்பது' (relevant) என்பதற்குச் சமமல்ல. ஒரு chunk கேள்வியுடன் தொடர்புடையது போலத் தோன்றலாம், ஆனால் அதில் பதில் இருக்காது.
தீர்வு: நான் ஒரு cross-encoder மூலம் reranking படிநிலையைச் சேர்த்தேன். இதன் மூலம் அமைப்பிடம் உண்மையான தரவு இல்லாதபோது அதை என்னால் கண்டறிய முடிந்தது.
- மாடலுக்குத் தவறு செய்ய அனுமதி கொடுங்கள்
எனது பழைய prompt வெறும் இதைக் கூறியதுதான்: Use the context to answer the question.
சூழலில் (context) பதில் இல்லாதபோது, மாடல் தனது யூகங்களைக் கொண்டு அந்த இடைவெளியை நிரப்பியது.
தீர்வு: நான் ஒரு நேரடி அறிவுறுத்தலைச் சேர்த்தேன். If the answer is not in the context, say you do not know. இது மட்டுமே பெரும்பாலான hallucinations-களைத் தடுத்தது.
- ஒரு retrieval threshold-ஐ நிர்ணயியுங்கள்
சில நேரங்களில் retrieval தோல்வியடையும் போது, மாடல் பொதுவான அறிவைப் பயன்படுத்தியது. prompt வேலை செய்யும் என்று நான் நம்பினேன், ஆனால் நம்பிக்கை என்பது ஒரு உத்தி அல்ல.
தீர்வு: நான் ஒரு score cutoff-ஐச் சேர்த்தேன். If the retrieval score is too low, the system returns a fallback response. சூழல் (context) இல்லை என்றால் பதில் இல்லை என்று அர்த்தம்.
- வெற்றிக்காக அல்லாமல், தோல்விக்காகச் சோதனை செய்யுங்கள்
நான் எளிமையான கேள்விகளை மட்டுமே சோதனை செய்தேன். தெளிவற்ற வினவல்கள் (ambiguous queries) மற்றும் விடுபட்ட தகவல்களை நான் புறக்கணித்தேன்.
தீர்வு: நான் 'trap questions' எனப்படும் சில சிக்கலான கேள்விகளைக் கொண்ட ஒரு evaluation set-ஐ உருவாக்கினேன். இவை பதில்கள் இல்லாத சூழல்களைக் குறிக்கும். இந்தச் சோதனைகளைத் தொடர்ந்து செய்வதன் மூலம் உங்கள் சிஸ்டம் எங்கே முறிந்து போகிறது என்பதைத் துல்லியமாகத் தெரிந்துகொள்ளலாம்.
RAG என்பது hallucinations-களை முற்றிலுமாக நீக்கிவிடாது. அது அவற்றைக்கட்டுப்படுத்தக்கூடியதாக மாற்றுகிறது.
எனது பாட்டிற்கு இன்னும் எல்லா விவரங்களும் தெரியாது. ஆனால் இப்போது, அது தனக்குத் தெரியாது என்பதை ஒப்புக்கொள்கிறது. அதுவே அதைப் பயனுள்ளதாக்குகிறது.
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