CI/CD માં રગ્રેસન્સ (regressions) પકડવા માટે હું RAG evals કેવી રીતે સેટઅપ કરું છું
એક PR આવે છે. RAG eval એક મિનિટમાં ચાલે છે. તે ગ્રીન ચેક બતાવે છે. તમે કોડ મર્જ કરો છો.
બાર કલાક પછી, સપોર્ટ ટિકિટો આવે છે.
રીટ્રીવરે (retriever) ચોક્કસ ક્વેરી પ્રકાર માટે તેના top-1 chunk માં ફેરફાર કર્યો. તમારો 30-ઉદાહરણોનો ડેટાસેટ ક્યારેય તે કેસને આવરી લેતો નથી. તમારો ટેસ્ટ સ્યુટ ગ્રીન રહ્યો કારણ કે તે ખોટી વસ્તુઓ તપાસી રહ્યો હતો.
મોટાભાગના RAG gates માત્ર smoke tests છે. તેઓ નાના ડેટાસેટ્સ અને નિશ્ચિત floors નો ઉપયોગ કરે છે. જો સરેરાશ (mean) ચોક્કસ સંખ્યાથી ઉપર હોય, તો તેઓ પાસ થઈ જાય છે. આ નિષ્ફળ જાય છે કારણ કે ડેટાસેટ્સ પ્રતિનિધિત્વ કરતા નથી અને થ્રેશોલ્ડ (thresholds) નોઈઝ (noise) ને ધ્યાનમાં લેતા નથી.
એક સારા gate ને ત્રણ વસ્તુઓની જરૂર છે: ઝડપ, ઓછી કિંમત અને આંકડાકીય મહત્વ (statistical significance). તમને સામાન્ય રીતે ફક્ત બે જ મળે છે.
અહીં વિશ્વસનીય RAG gate માટે મારો ફ્રેમવર્ક છે.
થ્રી-ટાયર સ્ટ્રક્ચર (The Three-Tier Structure)
- દરેક Push (The PR Gate)
- NLI faithfulness અને claim support જેવા સસ્તા ક્લાસિફાયર્સનો ઉપયોગ કરો.
- Citation validity અને latency માટે deterministic ચેક્સનો ઉપયોગ કરો.
- ત્રણ મિનિટથી ઓછા સમયમાં 100 થી 200 ઉદાહરણો ચલાવો.
- આ મર્જને બ્લોક કરે છે.
- નાઈટલી Main (The Full Sweep)
- તમારા versioned ડેટાસેટ સામે સંપૂર્ણ LLM-judge stack ચલાવો.
- આમાં 15 થી 30 મિનિટ લાગે છે.
- આ કેનારી (canary) માટેના આગામી પ્રમોશનને બ્લોક કરે છે.
- Canary (Production Monitoring)
- લાઈવ ટ્રાફિકના 5 થી 10 ટકા પર સમાન રૂબ્રિક્સ (rubrics) ચલાવો.
- rolling-mean drift માટે એલાર્મ સેટ કરો.
5 મુખ્ય રૂબ્રિક્સ (The 5 Core Rubrics)
સિસ્ટમ બરાબર ક્યાં તૂટે છે તે શોધવા માટે, તમારા રૂબ્રિક્સને લેયર મુજબ વિભાજિત કરો:
- Context Relevance: જો આ ઘટે છે પરંતુ Groundedness ઊંચી રહે છે, તો રીટ્રીવર (retriever) માં રગ્રેસન થયું છે.
- Groundedness: જો આ ઘટે છે પરંતુ Context Relevance ઊંચી રહે છે, તો જનરેટર (generator) માં રગ્રેસન થયું છે.
- Answer Relevance
- Citation Validity
- Retrieval Recall
નોંધ: retrieval recall સ્કોર કરવા માટે તમારે ground-truth doc IDs (expected_chunks) નો ઉપયોગ કરવો જ પડશે. આ વગર, તમે retrieval બગ્સ શોધી શકશો નહીં.
સ્ટેટિસ્ટિકલ ગેટ (The Statistical Gate)
ફક્ત એક નિશ્ચિત સંખ્યા પર જ ગેટ ન કરો. એક નિશ્ચિત floor ધીમા ડ્રિફ્ટ (slow drift) ને ચૂકી જાય છે. બે થ્રેશોલ્ડ (thresholds) નો ઉપયોગ કરો:
- સ્પષ્ટ બ્રેક્સ માટે એક એબ્સોલ્યુટ floor (દા.ત., Groundedness ≥ 0.85).
- 7-દિવસીય rolling baseline સામે એક ડેલ્ટા ગેટ (delta gate).
Welch's t-test જેવી સ્ટેટિસ્ટિકલ ટેસ્ટનો ઉપયોગ કરો. PR ને ત્યારે જ ફેલ કરો જો ઘટાડો આંકડાકીય રીતે નોંધપાત્ર (statistically significant) હોય અને મહત્વનો હોય તેટલો મોટો હોય. આ ડેવલપર્સને ખોટા એલાર્મ (false alarms) ને કારણે ગેટને અવગણતા અટકાવે છે.
સૌથી મહત્વનો નિયમ (The Most Important Rule)
તમારી બેઝલાઇન એક રોલિંગ પ્રોડક્શન વિન્ડો હોવી જોઈએ, કોઈ સ્થિર સંખ્યા નહીં.
જ્યારે પ્રોડક્શન ડેટા બદલાય, ત્યારે તમારો ડેટાસેટ પણ બદલાવો જોઈએ. નિષ્ફળ જતા પ્રોડક્શન ટ્રેસીસ લો, તેને ક્લસ્ટર કરો, અને તેને તમારા ઇવેલ સેટમાં સામેલ કરો. આ તમારા ગેટને એક લર્નિંગ સિસ્ટમમાં ફેરવી દેશે.
સ્ત્રોત: https://dev.to/kartik-nvjk/how-i-set-up-rag-evals-in-cicd-so-they-actually-catch-regressions-46hb
વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi