તમારો RAG પાઇપલાઇન સ્ટાન્ડર્ડ લોડ ટેસ્ટમાં ખૂબ જ સફળ રહે છે. p95 લેટન્સી (latency) સારી લાગે છે. એરર રેટ્સ (error rates) લગભગ શૂન્ય છે. છતાં વપરાશકર્તાઓ એવા જવાબોની જાણ કરે છે જે પ્રશ્નથી બચતા હોય, અસ્તિત્વમાં ન હોય તેવા દસ્તાવેજોનો ઉલ્લેખ કરતા હોય, અથવા છ મહિના પહેલા અપલોડ કરેલા વ્હાઇટ પેપરના અપ્રસ્તુત ફકરાઓ શોધી લાવતા હોય. ડેશબોર્ડ કહે છે કે બધું બરાબર છે. પણ અનુભવ કહે છે કે તે તૂટી ગયું છે.

આ તફાવત એટલા માટે છે કારણ કે પરંપરાગત પરફોર્મન્સ ટેસ્ટિંગ 'રિકવેસ્ટ-રિસ્પોન્સ' સિસ્ટમ્સ માટે બનાવવામાં આવ્યું હતું, 'વિચારતી' સિસ્ટમ્સ માટે નહીં. જ્યારે તમે એક REST એન્ડપોઇન્ટ પર એકસાથે હજાર રિકવેસ્ટ મોકલો છો, ત્યારે તમને ખબર પડે છે કે તમારા સર્વર્સ ટકી રહે છે કે નહીં. પરંતુ તમારું રિટ્રીવલ લેયર (retrieval layer) સાચા ચંક્સ (chunks) મેળવે છે કે નહીં, તમારું પ્રોમ્પ્ટ ટેમ્પલેટ (prompt template) સંદર્ભ (context) જાળવી રાખે છે કે નહીં, અથવા જ્યારે વેક્ટર સ્ટોર (vector store) ખાલી હોય ત્યારે મોડેલ કાલ્પનિક સ્ત્રોતો બનાવે છે કે નહીં, તે વિશે તમને કંઈ જ જાણવા મળતું નથી. સ્ટાન્ડર્ડ લોડ ટેસ્ટિંગ ઝડપ માપે છે. RAG એપ્લિકેશન્સ માટે તમારે સમજણ (understanding) માપવાની જરૂર છે.

સ્ટેટસ કોડ 200 થી આગળ

એક સામાન્ય API લોડ ટેસ્ટ ત્રણ વસ્તુઓ તપાસે છે: ઉપલબ્ધતા (availability), લેટન્સી (latency), અને થ્રુપુટ (throughput). તે પૂછે છે કે સર્વરે જવાબ આપ્યો કે નહીં, તેમાં કેટલો સમય લાગ્યો, અને તે કેટલા એકસાથે વપરાશકર્તાઓ (concurrent users)નું ભારણ સહન કરી શક્યું. RAG એપ્લિકેશન માટે, આ આંકડા પૂર્વશરતો છે, અંતિમ તારણો નથી. ઝડપી ખોટો જવાબ હજુ પણ ખોટો જ છે, અને મોટા પાયે મળતા ખોટા જવાબો ધીમા જવાબો કરતા વધુ મોંઘા પડે છે.

RAG દરેક રિકવેસ્ટમાં બે અલગ તબક્કા ઉમેરે છે. પ્રથમ, સિસ્ટમ વપરાશકર્તાના પ્રશ્નને એમ્બેડિંગ (embedding) માં ફેરવે છે, વેક્ટર સ્ટોરને ક્વેરી કરે છે, અને સંદર્ભ ચંક્સ (context chunks) નો સમૂહ પાછો મેળવે છે. બીજું, તે આ ચંક્સને પ્રોમ્પ્ટમાં નાખે છે, બધું જ લેંગ્વેજ મોડેલને મોકલે છે, અને કમ્પ્લીશન (completion) સ્ટ્રીમ કરે છે. પરંપરાગત ટેસ્ટ ઘણીવાર આ બંનેને એક જ "રિસ્પોન્સ ટાઇમ" મેટ્રિકમાં ભેગા કરી દે છે. તેઓ રિટ્રીવલ એન્જિન અને જનરેટરને એક જ 'બ્લેક બોક્સ' તરીકે જુએ છે.

તમારે તે બોક્સ ખોલવાની જરૂર છે. જો તમારું વેક્ટર ડેટાબેઝ લોડ હેઠળ ધીમું પડે છે, તો રિટ્રીવલ લેટન્સી વધી જાય છે. LLM કદાચ હજુ પણ ઝડપથી જવાબ આપે, પરંતુ તે ઉતાવળમાં મેળવેલા નકામા સંદર્ભ (garbage context) ના આધારે જવાબ આપી રહ્યું હોય છે. બીજી બાજુ, વેક્ટર સર્ચ ઝડપી રહે છે જ્યારે LLM ક્યુ (queue) ભરાઈ જાય છે, જેનાથી 'time-to-first-token' વધે છે અને વપરાશકર્તાઓ બ્લિંકિંગ કર્સર સામે જોતા રહી જાય છે. એક સિંગલ એન્ડ-ટુ-એન્ડ ટાઈમર આ બંને નિષ્ફળતાઓને છુપાવી દે છે.

માત્ર ડેટાબેઝ નહીં, રિટ્રીવલનું ટેસ્ટિંગ કરો

મોટાભાગની ટીમો ઝડપી વેક્ટર સર્ચ બેન્ચમાર્ક (benchmark) ચલાવે છે અને રિટ્રીવલ લેયરનું ટેસ્ટિંગ થઈ ગયું એમ માને છે. તે બેન્ચમાર્ક સામાન્ય રીતે માપે છે કે ડેટાબેઝ પસંદ કરેલા ક્વેરી માટે કેટલા ઝડપથી 'નિયરેસ્ટ નેબર' (nearest neighbors) પરત કરે છે. તે ભાગ્યે જ માપે છે કે તે પડોશીઓ (neighbors) માં ખરેખર જવાબ છે કે નહીં.

રિટ્રીવલની ગુણવત્તા લોડ સાથે સૂક્ષ્મ રીતે બદલાય છે. કન્કરન્ટ પ્રેશર (concurrent pressure) હેઠળ, એપ્રોક્સિમેટ નિયરેસ્ટ નેબર ઇન્ડેક્સિસ (approximate nearest neighbor indexes) અલગ રીતે વર્તી શકે છે. ચંકિંગ વ્યૂહરચનાઓ (chunking strategies) જે નોટબુકમાં પરફેક્ટ લાગતી હતી, તે ત્યારે સંદર્ભની સીમાઓ ઓળંગી જાય છે જ્યારે દસ હજાર દસ્તાવેજો એક જ એમ્બેડિંગ સ્પેસ માટે સ્પર્ધા કરે છે. શાંત વાતાવરણમાં આદર્શ ફકરો આપતી ક્વેરી, જ્યારે ઇન્ડેક્સ ફરીથી બની રહ્યો હોય અથવા રિકવેસ્ટના દબાણ હેઠળ મેટાડેટા ફિલ્ટરિંગ નીકળી જાય ત્યારે ખોટી માર્કેટિંગ સ્લાઇડ બતાવી શકે છે.

આને યોગ્ય રીતે ટેસ્ટ કરવા માટે, તમારે 'ગ્રાઉન્ડ-ટ્રુથ ડેટાસેટ' (ground-truth dataset) ની જરૂર છે. એવા પ્રશ્નો તૈયાર કરો જેમાં તમને પહેલેથી જ ખબર હોય કે કયા સ્ત્રોત દસ્તાવેજો દેખાવા જોઈએ. તે પ્રશ્નોને વિવિધ કન્કરન્સી લેવલ પર ચલાવો અને તપાસો કે અપેક્ષિત ચંક્સ top-k પરિણામોમાં આવે છે કે નહીં. માત્ર ક્વેરી ડ્યુરેશન નહીં, પણ 'હિટ રેટ' (hit rate) ને ટ્રેક કરો. જો તમારા ટોપ-ફાઈવ ચંક્સ મુખ્ય સ્ત્રોતને સંપૂર્ણપણે ચૂકી જાય, તો તમારું રિટ્રીવલ પાઇપલાઇન LLM જાગે તે પહેલાં જ નિષ્ફળ ગયું છે.

તમારે એજ કેસોનું પણ સ્ટ્રેસ-ટેસ્ટિંગ (stress-test) કરવું જોઈએ. એવા ક્વેરી સબમિટ કરો જેનો કોર્પસ (corpus) માં કોઈ જવાબ ન હોય. એવા અસ્પષ્ટ પ્રશ્નો સબમિટ કરો જે અનેક ડોમેન્સ સાથે જોડાયેલા હોઈ શકે. એવા લાંબા પ્રશ્નો સબમિટ કરો જે તમારા એમ્બેડિંગ મોડેલની ટોકન લિમિટ કરતા વધી જાય અને ચુપચાપ ટૂંકા (truncated) થઈ જાય. રિટ્રીવલ લેયર શું પરત આપે છે તે જુઓ. દરેક કિસ્સામાં, કેટલા મિલિસેકન્ડ વીત્યા તેના કરતા નિષ્ફળતાનું સ્વરૂપ (failure mode) વધુ મહત્વનું છે.

જ્યારે મોડેલ શાંતિથી અટકી જાય છે

એકવાર ચંક્સ LLM સુધી પહોંચી જાય પછી, સ્ટાન્ડર્ડ લોડ ટેસ્ટિંગ જૂઠું બોલવાનું ચાલુ રાખે છે