એકમ 1 / 11

RAG શું છે અને તે શા માટે જરૂરી છે?

નફો:

  • સમજાવીને કે RAG મોડેલના વજનમાં ફેરફાર કર્યા વિના સંદર્ભને ઇન્જેક્શન આપે છે અને 'ઓપન બુક એક્ઝામ' લોજિક સાથે કામ કરે છે
  • ખર્ચ, સમયબદ્ધતા અને ઉપયોગની સ્થિતિ અનુસાર ફાઇન-ટ્યુનિંગ અને લાંબા સંદર્ભ અભિગમ સાથે આરએજીની સરખામણી
  • અનુક્રમણિકા અને ક્વેરી તબક્કાઓનો સમાવેશ કરતી લાક્ષણિક RAG પાઇપલાઇનના પગલાઓની સૂચિ

ભાષા મોડલ (કૃત્રિમ બુદ્ધિ જે ટેક્સ્ટને સમજે છે અને તેનું ઉત્પાદન કરે છે; અમે તેને હવેથી ટૂંકમાં મોડલ કહીશું) ગમે તેટલું શક્તિશાળી હોય, તે તમારી કંપનીએ ગઈકાલે કરેલા કરાર, તમારું આંતરિક વિકિ (આંતરિક જ્ઞાન આધાર) પૃષ્ઠ અથવા આજે સવારે પ્રકાશિત થયેલ પ્રકાશન નોંધ જાણતું નથી. મોડલ તેને તાલીમ આપવામાં આવી હતી તે તારીખ સુધી સામાન્ય જ્ઞાન સુધી મર્યાદિત છે; આને "શિક્ષણ કટ-ઓફ ડેટ" કહેવામાં આવે છે. RAG (પુનઃપ્રાપ્તિ-સંવર્ધિત જનરેશન) બરાબર આ ગેપને ભરે છે: તે પ્રશ્ન સંબંધિત કંપનીના દસ્તાવેજો શોધે છે, તેને સંદર્ભ તરીકે મોડેલને આપે છે (એટલે ​​​​કે, જવાબ બનાવતી વખતે તે જે વધારાનો ટેક્સ્ટ વાંચશે) અને આ સંદર્ભના આધારે ઉત્પાદિત જવાબ ધરાવે છે.

આ એકમમાં, અમે સ્પષ્ટપણે જોઈશું કે RAG શું છે, જ્યારે તેને કયા વિકલ્પો પર પ્રાધાન્ય આપવામાં આવે છે, અને સામાન્ય RAG પાઇપલાઇનના પગલાં. બધા અનુગામી એકમો આ નકશાના ભાગોને એક પછી એક ઊંડા કરશે.

આરએજીનો મૂળભૂત વિચાર: ઓપન બુક પરીક્ષા

ચાલો RAG ને એક વાક્યમાં સમજાવીએ: "પ્રથમ સંબંધિત દસ્તાવેજ શોધો, પછી મોડેલને તે દસ્તાવેજ વાંચવા દો અને તે મુજબ જવાબ છાપો."

સૌથી ઉપયોગી સાદ્રશ્ય આ છે: આરએજી મોડેલને "બંધ પુસ્તક પરીક્ષા"માંથી "ઓપન બુક પરીક્ષા"માં ખસેડે છે. બંધ પુસ્તક પરીક્ષામાં, વિદ્યાર્થી માત્ર મેમરીમાંથી જવાબ આપે છે; તમને યાદ ન હોય તે બનાવવાનું જોખમ વધારે છે. ઓપન બુકની પરીક્ષામાં વિદ્યાર્થી તેની સામે મૂકેલા સ્ત્રોતને જોઈને જવાબ આપે છે. RAG માં, મોડેલ હવે તેની પોતાની મેમરીમાંથી જવાબ આપતું નથી, પરંતુ વર્તમાન અને ચોક્કસ ટેક્સ્ટમાંથી જે તમે તેને આપો છો.

નિર્ણાયક બિંદુ: RAG મોડેલના વજનમાં ફેરફાર કરતું નથી, એટલે કે, મોડેલે શીખ્યા હોય તેવા અબજો સંખ્યાત્મક પરિમાણો. તમે મોડેલને ફરીથી તાલીમ આપતા નથી. દરેક પ્રશ્ન માટે, તમે તે પ્રશ્નને સંબંધિત ટેક્સ્ટના ટુકડાને પ્રોમ્પ્ટમાં દાખલ કરો છો (મોડેલને મોકલેલ સૂચના ટેક્સ્ટ). તેથી જ્યારે દસ્તાવેજ અપડેટ કરવામાં આવે ત્યારે તમારે મોડેલને ફરીથી તાલીમ આપવાની જરૂર નથી; તમે ફક્ત શોધ ડેટાબેઝમાં સંબંધિત રેકોર્ડને તાજું કરો.

સંકેત: બે પ્રશ્નો RAG ની ગુણવત્તા નક્કી કરે છે: (1) શું તમને સાચો દસ્તાવેજ મળ્યો? (2) શું મોડેલે તેને યોગ્ય રીતે વાંચ્યું? પ્રથમ "પુનઃપ્રાપ્તિ ગુણવત્તા" છે, બીજી "જનરેશન ગુણવત્તા" છે. બે અલગથી માપવામાં આવે છે અને સુધારેલ છે.

RAG, ફાઇન-ટ્યુનિંગ અથવા લાંબા સંદર્ભ?

સંસ્થાકીય સમસ્યાનો ઉકેલ શોધતી વખતે ત્રણ રસ્તાઓ ઘણીવાર મૂંઝવણમાં હોય છે. ચાલો તેમના તફાવતોને સ્પષ્ટ કરીએ. ફાઇન-ટ્યુનિંગ એ તમારા ડેટા સાથે મોડેલના વજનને અપડેટ કરી રહ્યું છે અને તેને નવી વર્તણૂક/શૈલી શીખવી રહ્યું છે. લાંબા સંદર્ભનો અર્થ છે કોઈપણ પસંદગી વિના સીધા જ પ્રોમ્પ્ટમાં બધા દસ્તાવેજો ભરવા.

અભિગમ

શું કરે છે

તે ક્યારે યોગ્ય છે?

ખર્ચ / જોખમ

આરએજી

સંદર્ભ તરીકે સંબંધિત દસ્તાવેજને દાખલ કરે છે

વારંવાર બદલાતી, વ્યાપક, ચોક્કસ માહિતી

નીચું; અપડેટ કરવા માટે સરળ, સ્ત્રોત ટાંકી શકાય છે

ફાઇન-ટ્યુનિંગ

નવા ડેટા સાથે વજન અપડેટ કરે છે

સ્થિર શૈલી/ફોર્મેટ/ભાષા શિક્ષણ

ઉચ્ચ; દરેક અપડેટ સાથે ફરીથી તાલીમ જરૂરી છે

માત્ર લાંબા સંદર્ભ

પ્રોમ્પ્ટમાં બધા દસ્તાવેજો ભરે છે

નાનો, સ્થિર દસ્તાવેજ સેટ

ટોકન ખર્ચ અને "મધ્યમ ભાગ ગુમાવવાનું" જોખમ વધે છે

એક નિયમ તરીકે: ફાઇન-ટ્યુનિંગ મોડેલને કેવી રીતે વાત કરવી તે શીખવે છે; RAG મોડેલને શું જાણવું તે કહે છે. મોટાભાગના એન્ટરપ્રાઇઝ દૃશ્યોમાં, આરએજીને પહેલા અજમાવવામાં આવે છે કારણ કે તે સસ્તું, અપડેટ કરી શકાય તેવું છે અને જવાબનો સ્ત્રોત બતાવી શકે છે. લાંબા સંદર્ભ વાજબી છે જો દસ્તાવેજ સમૂહ ખરેખર નાનો અને નિશ્ચિત હોય (દા.ત. એક 20-પૃષ્ઠ માર્ગદર્શિકા); પરંતુ હજારો પૃષ્ઠો સાથે, તે ખર્ચાળ છે અને મોડેલ લાંબા ટેક્સ્ટની મધ્યમાં માહિતી ચૂકી શકે છે.

એક લાક્ષણિક RAG પાઇપલાઇન

RAG માં બે મુખ્ય તબક્કાઓનો સમાવેશ થાય છે: અનુક્રમણિકા (તૈયારી, એકવાર અથવા સમયાંતરે કરવામાં આવે છે) અને ક્વેરી (દરેક વપરાશકર્તા પ્રશ્ન પર ચાલે છે).

સ્ટેપ બાય સ્ટેપ ઈન્ડેક્સીંગ (ઓફલાઈન, વપરાશકર્તા રાહ જોયા વગર):

  1. એકત્રિત કરો: સ્રોતોમાંથી દસ્તાવેજો ખેંચો (પીડીએફ, વિકી, ટિકિટ સિસ્ટમ, ડેટાબેઝ, ઇમેઇલ).
  2. ચંકીંગ: લાંબા લખાણને નાના મેનેજ કરી શકાય તેવા ટુકડાઓમાં વિભાજીત કરો.
  3. એમ્બેડ કરો: દરેક ભાગને એમ્બેડિંગમાં કન્વર્ટ કરો (સંખ્યા વેક્ટર જે ટેક્સ્ટનો અર્થ ધરાવે છે).
  4. સાચવો: વેક્ટર ડેટાબેઝમાં ટેક્સ્ટ અને મેટાડેટા (સ્રોત, તારીખ, અધિકૃતતા માહિતી) સાથે વેક્ટર લખો.

સ્ટેપ-બાય-સ્ટેપ ક્વેરી (ઓનલાઈન, જ્યારે વપરાશકર્તા રાહ જોઈ રહ્યો હોય):

  1. વપરાશકર્તાના પ્રશ્નને એમ્બેડિંગમાં કન્વર્ટ કરો.
  2. વેક્ટર ડેટાબેઝમાંથી સૌથી સમાન ભાગો પુનઃપ્રાપ્ત કરો.
  3. આ ટુકડાઓ + પ્રશ્નને પ્રોમ્પ્ટ નમૂનામાં મૂકો.
  4. મોડેલમાંથી સંદર્ભિત જવાબ અને તેના સ્ત્રોતો મેળવો.

# પૂછપરછ તબક્કાની વૈચારિક રૂપરેખા (ભાષા પર નિર્ભર નથી) પ્રશ્ન = "વાર્ષિક રજાના કેટલા દિવસ?"question_vektor = embed(question)parts = vektor_db.search(question_vektor, top_k=4) # સૌથી સમાન ભાગો પ્રોમ્પ્ટ = f"""સંદર્ભનો ઉપયોગ કરીને પ્રશ્નનો જવાબ આપો, જો નીચે આપેલ સંદર્ભમાં કોઈ માહિતી નથી, તો કહો કે આ સંદર્ભમાં જવાબ નથી." ફિટિંગ.CONTEXT:{parts}પ્રશ્ન: {પ્રશ્ન}"""જવાબ = model.uret(પ્રોમ્પ્ટ) # દા.ત. મોડેલ: ક્લાઉડ-ઓપસ-4-8

આ પ્રવાહ દરેક તબક્કાનો નકશો છે, જેને આપણે અનુગામી એકમોમાં એક પછી એક અનપેક કરીશું.

નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ

સમાન RAG સંદર્ભ સાથે પણ, પ્રોમ્પ્ટની ગુણવત્તા જવાબમાં ફેરફાર કરે છે.

નબળા પ્રોમ્પ્ટ (મોડેલ ફિટિંગ માટે ખુલ્લું, સંસાધનોની જરૂર નથી):

આ માહિતીનો ઉપયોગ કરો અને વાર્ષિક રજા કહો: {parts}. પ્રશ્ન: {પ્રશ્ન}

શક્તિશાળી પ્રોમ્પ્ટ (ગ્રાઉન્ડિંગ + "મને ખબર નથી" પરવાનગી + સંસાધન વિનંતી):

નીચે આપેલા CONTEXT ના આધારે જ જવાબ આપો. જો સંદર્ભમાં કોઈ સ્પષ્ટ જવાબ ન હોય, તો "મને દસ્તાવેજીકરણમાં આ વિશે માહિતી મળી નથી" લખો; અનુમાન ન કરો. તમારા જવાબના અંતે તમે જેના પર આધાર રાખતા હોવ તેના ભાગનું [સ્ત્રોત: ફાઇલ_નામ] ટૅગ ઉમેરો. સંદર્ભ: {ટુકડા} પ્રશ્ન: {પ્રશ્ન}

ત્રણ મિની કેસ

કેસ 1 - HR મદદનીશ (માનવ સંસાધન). કંપની પાસે 340 પાનાની HR હેન્ડબુક હોય છે અને કર્મચારીઓ દરરોજ સરેરાશ 90 પ્રશ્નો પૂછે છે. ફાઇન-ટ્યુનિંગનો પ્રયાસ કરવામાં આવ્યો હતો, પરંતુ મેન્યુઅલ માસિક અપડેટ કરવામાં આવતું હોવાથી, દરેક વખતે ફરીથી તાલીમ જરૂરી હતી; ખર્ચ દર મહિને હજારો ડોલર સુધી પહોંચી ગયો. RAG પર સ્વિચ કર્યા પછી, અપડેટને "રી-ઇન્ડેક્સ ધ ડોક્યુમેન્ટ" સ્ટેપ (મિનિટ) સુધી ઘટાડવામાં આવ્યું અને મેન્યુઅલ માપનમાં સાચા જવાબનો દર 71% થી વધીને 93% થયો.

કેસ 2 - ગ્રાહક સપોર્ટ. સપોર્ટ ટીમ પાસે 12,000 રિઝોલ્યુડ ટિકિટ અને 800 મદદ લેખો છે. પ્રતિનિધિને મેન્યુઅલી જવાબ શોધવામાં સરેરાશ 4 મિનિટ લાગે છે. જ્યારે આરએજી સહાયક 5 સૌથી સુસંગત રેકોર્ડ્સ લાવ્યા અને ડ્રાફ્ટ પ્રતિસાદ રજૂ કર્યો, ત્યારે સમય ઘટાડીને 40 સેકન્ડ કરવામાં આવ્યો; પરંતુ ટીમે "ખોટો લેખ લાવીને અચોક્કસ દેખાતા" ના જોખમને સમજ્યું અને સ્રોતને ટાંકીને ફરજિયાત બનાવ્યું.

કેસ 3 - કાયદો. કોન્ટ્રાક્ટ કરતી ટીમે પૂછ્યું કે "કયા કોન્ટ્રાક્ટમાં ગોપનીયતા કલમ 5 વર્ષ ચાલે છે?" તે પ્રશ્ન પૂછે છે. લાંબા સંદર્ભ અજમાયશમાં, 60 કોન્ટ્રાક્ટ એક જ પ્રોમ્પ્ટમાં ભરવામાં આવ્યા હતા; મોડેલે વચ્ચેના બે કોન્ટ્રાક્ટને છોડી દીધા. જ્યારે RAG સાથે માત્ર સંબંધિત વસ્તુઓ રજૂ કરવામાં આવી હતી, ત્યારે ટોકન ખર્ચમાં 80% ઘટાડો થયો હતો અને ગુમ થયેલ અવગણીને ફરીથી સેટ કરવામાં આવી હતી.

RAG શા માટે જરૂરી છે?

  • વર્તમાનતા: તમે તાલીમની કટ-ઓફ તારીખ પછી માહિતીને ઍક્સેસ કરો છો.
  • વિશેષ માહિતી: તમારા આંતરિક દસ્તાવેજો કોઈપણ મોડેલની તાલીમમાં શામેલ નથી; ફક્ત તમે જ આપી શકો છો.
  • ચકાસણીક્ષમતા: તમે જવાબનો સ્ત્રોત ટાંકી શકો છો (સંદર્ભ આપો) - ઓડિટ અને વિશ્વાસ માટે જરૂરી.
  • આભાસ નિયંત્રણ: તે મોડેલ બનાવવાને બદલે તેની સામે મૂકવામાં આવેલા ટેક્સ્ટ પર આધાર રાખે છે.
  • કિંમત: ફાઇન-ટ્યુનિંગ કરતાં ઓપરેશનમાં મૂકવું તે ખૂબ સસ્તું અને ઝડપી છે.
સાવધાન: આરએજી એ જાદુ નથી. જો તમે ખોટો ભાગ લાવો છો, તો મોડેલ "આત્મવિશ્વાસ" જોઈને ખોટા જવાબ પર પહોંચે છે. "પુનઃપ્રાપ્તિ ગુણવત્તા = RAG ગુણવત્તા" શબ્દસમૂહને ધ્યાનમાં રાખો.

સામાન્ય ભૂલો

  • ફાઇન-ટ્યુનિંગ માટે RAG ભૂલ કરવી: RAG વજનમાં ફેરફાર કરતું નથી; તે ફક્ત સંદર્ભ ઉમેરે છે. આ બંનેને ગૂંચવવાથી ખોટા આર્કિટેક્ચરને પસંદ કરવામાં આવશે.
  • "મને ખબર નથી" ને મંજૂરી આપવી નહીં: જો પ્રોમ્પ્ટ મોડેલને ખાલી જગ્યા ભરવા માટે મુક્ત છોડે છે, તો તે બનાવશે.
  • સ્ત્રોતો ટાંકતા નથી: સ્ત્રોત વિનાનો જવાબ તપાસી શકાતો નથી; વપરાશકર્તા ભૂલની નોંધ લઈ શકતા નથી.
  • દરેક વસ્તુને એક પ્રોમ્પ્ટમાં ક્રેમિંગ: લાંબો સંદર્ભ સસ્તો લાગે છે પરંતુ ખર્ચાળ છે અને મધ્યમ માહિતી ચૂકી જાય છે.
  • પુનઃપ્રાપ્તિને માપ્યા વિના પેઢીમાં અટવાઇ જવું: જો જવાબ ખરાબ હોય, તો પહેલા પૂછો "શું સાચો ભાગ આવ્યો?" પૂછવું જોઈએ.

સારાંશમાં

  • RAG એ એક અભિગમ છે જે સંદર્ભ તરીકે મોડેલમાં પ્રશ્ન સાથે સંબંધિત દસ્તાવેજોને દાખલ કરે છે; વજનમાં ફેરફાર થતો નથી ("ઓપન બુક પરીક્ષા").
  • ફાઇન-ટ્યુનિંગ શૈલી/ફોર્મેટ શીખવે છે, આરએજી વર્તમાન અને ચોક્કસ માહિતી આપે છે; લાંબા સંદર્ભ નાના નિશ્ચિત સેટ માટે સારી રીતે કામ કરે છે. મોટા ભાગની પરિસ્થિતિઓમાં, RAG ને પ્રથમ અજમાવવામાં આવે છે.
  • પાઇપલાઇનમાં બે તબક્કાઓ છે: ઑફલાઇન ઇન્ડેક્સિંગ (ચંક + એમ્બેડિંગ + સેવ) અને ઑનલાઇન ક્વેરી (પુનઃપ્રાપ્તિ + પ્રોમ્પ્ટ + જનરેટ).
  • RAG સમયસરતા, ચોક્કસ માહિતી, ચકાસણીક્ષમતા, આભાસ નિયંત્રણ અને ઓછી કિંમત પૂરી પાડે છે.
  • સિસ્ટમની ગુણવત્તા સીધી પુનઃપ્રાપ્તિની ગુણવત્તા પર આધારિત છે: ખોટા ભાગનો અર્થ ખોટો જવાબ છે.

એપ્લિકેશન કાર્ય

તમારી પોતાની ટીમમાંથી માહિતીનો સાચો સ્ત્રોત પસંદ કરો (દા.ત. પ્રક્રિયા દસ્તાવેજ અથવા FAQ પૃષ્ઠ). (1) આ સ્ત્રોત વિશે 5 વાસ્તવિક પ્રશ્નો લખો. (2) નોંધ કરો કે દસ્તાવેજના કયા ભાગમાં દરેક પ્રશ્નનો સાચો જવાબ છે - આ તમારી "ગોલ્ડન જવાબ" સૂચિ બની જાય છે. (3) ઉપરના "મજબૂત પ્રોમ્પ્ટ" નમૂનાનો ઉપયોગ કરીને, સંબંધિત વિભાગને સંદર્ભ તરીકે મેન્યુઅલી પેસ્ટ કરો અને મોડેલ પૂછો. (4) મોડલ દ્વારા આપવામાં આવેલ જવાબને સોનેરી જવાબ સાથે સરખાવો અને સાચા/ખોટા તરીકે ચિહ્નિત કરો. આ મૂલ્યાંકનનું પ્રથમ મેન્યુઅલ સંસ્કરણ છે જેને તમે ભવિષ્યના એકમોમાં સ્વચાલિત કરશો.

ચેકલિસ્ટ

  • [ ] હું એક વાક્યમાં સમજાવી શકું છું કે RAG વજનમાં ફેરફાર કરતું નથી, તે ફક્ત સંદર્ભ ઉમેરે છે.
  • [ ] હું આરએજી, ફાઇન-ટ્યુનિંગ અને લાંબા સંદર્ભ અને ક્યારે યોગ્ય છે તે વચ્ચે તફાવત કરી શકું છું.
  • [ ] હું અનુક્રમણિકા (કલેક્ટ-શ્રેડ-એમ્બેડ-સેવ) અને ક્વેરી (એમ્બેડ-ફેચ-પ્રોમ્પ્ટ-જનરેટ) તબક્કાઓને ક્રમમાં ગણી શકું છું.
  • [ ] હું જાણું છું કે મેં પ્રોમ્પ્ટમાં "જો તે સંદર્ભમાં નથી, તો કહો કે મને ખબર નથી" અને "સ્રોત ટાંકો" સૂચનો શા માટે ઉમેર્યા છે.
  • [ ] હું મારા પોતાના કેસમાં "પુનઃપ્રાપ્તિ ગુણવત્તા = RAG ગુણવત્તા" ના સિદ્ધાંતને અનુકૂલિત કરી શકું છું.