மேம்பட்ட RAG நுட்பங்கள் சிறந்தவை அல்ல. அவை சில நேரங்களில் மட்டுமே சிறந்தவை.
மேம்பட்ட RAG நுட்பங்கள் என்பவை இலவசமான மேம்படுத்தல்கள் (upgrades) அல்ல. அவை சில சமரசங்களை (trade-offs) உள்ளடக்கிய கருவிகள்.
அவற்றைச் சோதிப்பதற்காக ஒரு RAG pipeline-இல் ஐந்து retrieval நுட்பங்களைச் சேர்த்தேன். அதில் மிகவும் முக்கியமான முடிவு, தோல்வியடைந்த நுட்பத்தைப் பற்றியதாக இருந்தது.
HyDE retrieval-ஐ மேம்படுத்தும் என்று நான் எதிர்பார்த்தேன். ஆனால், சில வினவல்களுக்கு (queries) அது எதிர்மறையான விளைவையே ஏற்படுத்தியது. Recall 0.80-லிருந்து 0.17 ஆகக் குறைந்தது. அந்த நுட்பம் உதவத் தவறியது மட்டுமல்லாமல், தவறான தரவுகளைத் தேடல் முடிவுகளுக்குள் தீவிரமாக இழுத்து வந்தது.
நான் சோதித்த ஒவ்வொரு மேம்பட்ட நுட்பமும் இவ்வாறு செயல்படுகிறது:
- Hybrid search (BM25 + dense): துல்லியமான சொற்களுக்குச் சிறந்தது. உங்கள் வினவல் குறிப்பிட்ட அளவுருக்களை (parameters) சார்ந்து இருக்கும்போது இதைப் பயன்படுத்தவும்.
- HyDE: ஆவணங்களின் சொல்லகராதியுடன் (vocabulary) பொருந்தாத சாதாரணக் கேள்விகளுக்குச் சிறந்தது. வினவல் ஏற்கனவே ஆவணத் தொகுப்புடன் (corpus) நன்றாகப் பொருந்தும்போது இது தோல்வியடைகிறது.
- Reranking: சரியான தரவுத் துண்டு (chunk) முடிவுகளில் இருந்தாலும், அது பட்டியலின் மிகக் கீழே இருக்கும்போது இது சிறந்தது.
- Contextual retrieval: சூழல் (context) இல்லாத குறுகிய தரவுத் துண்டுகளுக்குச் சிறந்தது. ஒவ்வொரு துண்டுக்கும் நீங்கள் ஒரு LLM-ஐப் பயன்படுத்த வேண்டியிருப்பதால், இது கூடுதல் செலவை ஏற்படுத்துகிறது.
Anthropic ஆவணங்களைப் பயன்படுத்தி இந்த pipeline-ஐ உருவாக்கினேன். நான் Postgres உடன் pgvector மற்றும் an HNSW index ஆகியவற்றைப் பயன்படுத்தினேன். ஒரு backend engineer போல நான் இதை அணுகினேன். ஒரு நுட்பம் 'state of the art' ஆக இருக்கிறதா என்று நான் கேட்கவில்லை; அது அதன் சிக்கலான தன்மைக்குத் தகுதியானதா என்றுதான் கேட்டேன்.
நீங்கள் சேர்க்கும் ஒவ்வொரு அங்கத்தையும் நீங்கள் இயக்க வேண்டும், பிழைகளைத் திருத்த வேண்டும் (debug) மற்றும் அதற்காகக் கட்டணம் செலுத்த வேண்டும்.
சிக்கலான கருவிகளைச் சேர்ப்பதற்கு முன், சாதாரண dense retrieval மூலம் ஒரு அடிப்படை அளவீட்டை (baseline) எடுத்தேன்.
முடிவுகள் இரண்டு வெவ்வேறு அளவீடுகளைக் காட்டின:
- Faithfulness: 0.96
- Context precision: 0.60
இந்தத் தரவு எனது அணுகுமுறையையே மாற்றியது. பெரும்பாலான நுட்பங்கள் retrieval-ஐ இலக்காகக் கொண்டவை. எனது retrieval தான் தோல்வியடைந்த பகுதியாக இருந்தது. Faithfulness குறைவாக இருந்திருந்தால், நான் prompts-களைச் சரிசெய்திருப்பேன். Retrieval குறைவாக இருந்ததால், நான் தேடலைச் (search) சரிசெய்ய வேண்டியிருந்தது.
மதிப்பீட்டுக் கருவிகள் (evaluation tools) பற்றியும் நான் ஒரு பாடத்தைக் கற்றுக்கொண்டேன். நான் Ragas-ஐப் பயன்படுத்த முயன்றேன், ஆனால் அது மிகவும் மெதுவாக இருந்தது. தோல்வியடைந்த அழைப்புகளை (calls) மீண்டும் மீண்டும் முயற்சிப்பதன் மூலம் பல மணிநேரங்களை எடுத்துக்கொண்டது. அதற்குப் பதிலாக நானே ஒரு async harness-ஐ உருவாக்கினேன். 11 மணிநேரத்திற்குப் பதிலாக வெறும் 221 வினாடிகளில் அதே அளவீடுகளை இயக்கினேன்.
இதிலிருந்து நாம் கற்றுக்கொள்ள வேண்டியது எளிமையானது:
நுட்பங்களை குருட்டுத்தனமாகப் பயன்படுத்தாதீர்கள். சரியான கேள்விக்குச் சரியான முறையைத் தேர்ந்தெடுக்க ஒரு query router-ஐப் பயன்படுத்துங்கள். முதலில் உங்கள் தரவை அளவிடுங்கள். பின்னர் உங்கள் குறிப்பிட்ட தோல்வி முறையைத் தீர்க்கும் கருவியைத் தேர்ந்தெடுங்கள்.
மாதிரி (model) புதியது. பொறியியல் ஒழுக்கம் (engineering discipline) புதியது அல்ல.
Source: https://dev.to/yogesh23012001/advanced-rag-techniques-arent-better-theyre-better-sometimes-4m2o
