નફો:
- ટોપ-કે પસંદગી અને સિમેન્ટીક અને કીવર્ડ શોધને જોડતી હાઇબ્રિડ શોધનો અમલ કરવો
- ફરીથી રેન્કિંગ સાથે પ્રથમ શોધની ચોકસાઈ વધારવી
- ક્વેરી ટ્રાન્સફોર્મેશન અને HyDE જેવી તકનીકો વડે મુશ્કેલ પ્રશ્નોને વધુ શોધવા યોગ્ય બનાવવું
તમે દસ્તાવેજોને સરસ રીતે કાપ્યા અને વેક્ટર ડેટાબેઝમાં મૂક્યા. હવે વાસ્તવિક કાર્ય: જ્યારે વપરાશકર્તા પ્રશ્ન પૂછે ત્યારે યોગ્ય ટુકડાઓ મેળવવું. તેને પુનઃપ્રાપ્તિ કહેવામાં આવે છે અને તે RAG ગુણવત્તાની કરોડરજ્જુ છે. શબ્દસમૂહ યાદ રાખો "પુનઃપ્રાપ્તિ ગુણવત્તા = RAG ગુણવત્તા"; આ એકમ બરાબર તે ગુણવત્તા સુધારવાની કળા છે. અમે ટોપ-કે સિલેક્શનથી લઈને હાઈબ્રિડ સર્ચ સુધી, રિ-રેન્કિંગથી લઈને ક્વેરી ટ્રાન્સફોર્મેશન સુધીની વ્યવહારુ તકનીકોને આવરી લઈશું.
ટોપ-કે: અમે કેટલા ટુકડા લાવશું?
સૌથી મૂળભૂત સેટિંગ: શોધમાંથી કેટલા ટુકડા (k) પરત કરવા. જો તમે ઓછું લાવો છો (k=1) તો સાચો ભાગ ગુમ થવાનું ઊંચું જોખમ છે; જો તમે વધારે પડતું ઉમેરો (k=20), તો તે મોડેલમાં અવાજ ઉમેરશે અને ટોકન ખર્ચ વધશે.
બે ખ્યાલો વચ્ચે તફાવત કરો. યાદ કરો: જે દરે સાચો ભાગ પુનઃપ્રાપ્ત કરવામાં આવ્યો છે. ચોકસાઇ: જે દરે જે પુનઃપ્રાપ્ત કરવામાં આવે છે તે સંબંધિત છે. k વધવાથી રિકોલ વધે છે પરંતુ ચોકસાઇ ઘટે છે. ધ્યેય બે સંતુલન છે.
ટોપ-કે
અસર
યોગ્ય પરિસ્થિતિ
1-3
ઉચ્ચ ચોકસાઇ, ચૂકી જવાનું જોખમ
સરળ, એક-જવાબ પ્રશ્નો
4-8
સંતુલન; મોટા ભાગના દૃશ્યો
સામાન્ય કોર્પોરેટ આરએજી
10-20
વધુ યાદ, અવાજ વધે છે
પુનઃ રેન્કિંગ સાથે (નીચે)
ટીપ: સામાન્ય અને શક્તિશાળી પેટર્ન: વિશાળ (k=20) મેળવો, પછી પુનઃ-રેન્કિંગ સાથે સાંકડો (ટોચ 4). આ રીતે તમે કંઈપણ ચૂકશો નહીં અને તમે મોડેલને સ્વચ્છ સંદર્ભ આપો છો.
હાઇબ્રિડ શોધ: બે શોધની શક્તિ
સિમેન્ટીક (વેક્ટર) શોધ અર્થ મેળવે છે પરંતુ વસ્તુઓ ચૂકી જાય છે: સંપૂર્ણ ઉત્પાદન કોડ ("XR-4471"), દુર્લભ સંક્ષેપ, યોગ્ય નામ, સંસ્કરણ નંબર. આ ચોક્કસ-મેળ કાર્યો માટે, જૂની-શાળાના કીવર્ડ સર્ચિંગ-ખાસ કરીને ક્લાસિક અલ્ગોરિધમ જેને BM25 કહેવાય છે-ખૂબ સારી છે.
હાઇબ્રિડ શોધ બેને જોડે છે: સિમેન્ટીક અને કીવર્ડ બંને શોધ પરિણામોને જોડીને કામ કરે છે. આમ, "વોરંટી અવધિ જેવા પ્રશ્નમાં
મર્જિંગ સામાન્ય રીતે RRF (રેસિપ્રોકલ રેન્ક ફ્યુઝન) સાથે કરવામાં આવે છે: બંને લિસ્ટમાં જે ટ્રેક વધુ હોય તે આગળ આવે છે.
# હાઇબ્રિડ પુનઃપ્રાપ્તિ (વિચારાત્મક)sem = વેક્ટર_શોધ(પ્રશ્ન, k=20) # meaningkey = bm25_search(પ્રશ્ન, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # બે ફ્યુઝ કરો, ટોપ 8
રિ-રેન્કિંગ: સેકન્ડ અને સ્માર્ટ પાસ
પ્રથમ કૉલ ઝડપી પરંતુ અસંસ્કારી હોઈ શકે છે. પુનઃ-ક્રમાંકન વધુ શક્તિશાળી મૉડલ (સામાન્ય રીતે ક્રોસ-એન્કોડર — એક મૉડલ કે જે પ્રશ્ન અને પેસેજને એકસાથે વાંચે છે અને સુસંગતતાનો સ્કોર કરે છે) સાથે પ્રથમ સર્ચ દ્વારા એક પછી એક ઉમેદવારોને પરત કરે છે અને સૌથી વધુ સંબંધિતને ટોચ પર લઈ જાય છે.
તર્ક આ છે: પ્રથમ શોધ રિકોલ માટે મોટી સંખ્યામાં ઉમેદવારોને સોંપે છે (20 ઉમેદવારો), ફરીથી રેન્કર ચોકસાઇ માટે શ્રેષ્ઠ 4 પસંદ કરે છે. આ બે-તબક્કાનો અભિગમ સિંગલ-સ્ટેજ શોધ કરતાં વધુ સચોટ છે. તે થોડો વિલંબ અને વધારાની પ્રક્રિયા ખર્ચ કરે છે; લાભ એ ગુણવત્તામાં નોંધપાત્ર વધારો છે.
# બે-તબક્કાની પુનઃપ્રાપ્તિ (વૈકલ્પિક) ઉમેદવારો = હાઇબ્રિડ_શોધ(પ્રશ્ન, k=20) # વ્યાપક, ક્વિકસ્કોર = reranker.score(પ્રશ્ન, ઉમેદવારો) # દરેક ઉમેદવાર સંદર્ભ માટે સુસંગતતા સ્કોર = રેટેડ રેન્ક()[:4] # ટોચના 4
ક્વેરીનું પરિવર્તન
કેટલીકવાર સમસ્યા શોધમાં નથી, પરંતુ પ્રશ્નમાં જ હોય છે. જો વપરાશકર્તા પૂછે કે "દૂરસ્થ કામદારો વિશે શું?" ', આ એકલા શોધી શકાતું નથી (તે સ્પષ્ટ નથી કે દૂરસ્થ કામદારો માટે શું છે). અહીં ક્વેરી ટ્રાન્સફોર્મેશન તકનીકો છે:
- ફરીથી લખો: પ્રશ્નને એકલ બનાવવા માટે વાર્તાલાપ ઇતિહાસનો ઉપયોગ કરો: "દૂરસ્થ કામદારો વાર્ષિક રજા માટે શું હકદાર છે?"
- મલ્ટિ-ક્વેરી: એક જ પ્રશ્નના 3 અલગ-અલગ અભિવ્યક્તિઓ બનાવો, તે બધા સાથે શોધો, પરિણામો ભેગા કરો. જુદા જુદા શબ્દો જુદા જુદા ટુકડાઓ શોધે છે.
- HyDE (હાયપોથેટીકલ ડોક્યુમેન્ટ એમ્બેડિંગ્સ): પ્રથમ મોડેલ માટે "સંભવિત જવાબ" છાપો, પછી એમ્બેડ કરો અને તે કાલ્પનિક જવાબ માટે શોધો. કાલ્પનિક જવાબ કેટલીકવાર વધુ સારી રીતે જોવા મળે છે કારણ કે તે વાસ્તવિક દસ્તાવેજની શબ્દોમાં નજીક છે.
# મલ્ટી-ક્વેરી (કન્સેપ્ચ્યુઅલ) વેરિઅન્ટ્સ = model.uret("આ પ્રશ્નને 3 અલગ અલગ રીતે વ્યક્ત કરો: " + question)tum_sonuc = [] ચલોમાં v માટે: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
નબળા પુનઃપ્રાપ્તિ / મજબૂત પુનઃપ્રાપ્તિ
નબળું (સિંગલ સ્ટેજ, માત્ર સિમેન્ટિક્સ, સતત k=3):
પરિણામ = વેક્ટર_શોધ(પ્રશ્ન, k=3)# સમસ્યા: ઉત્પાદન કોડ ચૂકી ગયો છે, મુશ્કેલ પ્રશ્નોમાં સાચો ભાગ 3 દાખલ કરી શકાતો નથી.
શક્તિશાળી (હાઇબ્રિડ + વાઇડક + રી-રેન્કિંગ + મલ્ટી-ક્વેરી જો જરૂરી હોય તો):
ઉમેદવારો = હાઇબ્રિડ_શોધ(ફરીથી લખો(પ્રશ્ન, ભૂતકાળ), k=20) સંદર્ભ = reranker.score(પ્રશ્ન, ઉમેદવારો).પ્રથમ(4)# ચોક્કસ મેચ અને અર્થ બંને કેપ્ચર કરવામાં આવ્યા છે; તે શ્રેષ્ઠ 4 મોડલ પર જાય છે.
ત્રણ મિની કેસ
કેસ 1 - ઉત્પાદન કોડ છટકી ગયો. સપોર્ટ ટીમ પર શુદ્ધ સિમેન્ટીક શોધ "RTX-9080 ડ્રાઇવર ભૂલ" પ્રશ્નમાં "RTX-9080" શબ્દશઃ શોધી શકી નથી; તે સમાન નામો સાથે અન્ય ઉત્પાદનો લાવતો હતો. જ્યારે હાઇબ્રિડ શોધ ઉમેરવામાં આવી, ત્યારે ચોક્કસ કોડ મેચિંગ થયું અને સાચા લેખો પરત કરવાનો દર 58% થી વધીને 92% થયો.
કેસ 2 — ફરીથી રેન્કિંગ તફાવત. એક પેરાલીગલ k=5 સાથે કામ કરી રહ્યો હતો પરંતુ યોગ્ય વસ્તુ મોટાભાગે 7-10 હોય છે. તે રેન્કમાં જ રહેતો હતો. જ્યારે k=20 + રી-રેન્કિંગ રજૂ કરવામાં આવ્યું હતું, ત્યારે સાચા લેખનો ટોપ 3માં દર 61% થી વધીને 94% થયો હતો; વિલંબમાં માત્ર 300ms નો વધારો થયો - એક સ્વીકાર્ય સમાધાન.
કેસ 3 - સંદર્ભ વિના ફોલો-અપ પ્રશ્ન. એચઆર સહાયકમાં, વપરાશકર્તા પૂછે છે "પાર્ટ-ટાઈમર વિશે શું?" જ્યારે મેં પૂછ્યું, ત્યારે સિસ્ટમ અપ્રસ્તુત ભાગો લાવી હતી. ક્વેરી ફરીથી લખીને (ભૂતકાળમાંથી "વાર્ષિક રજા" સંદર્ભને ખેંચીને અને "પાર્ટ-ટાઇમ કર્મચારીઓ વાર્ષિક રજા માટે હકદાર છે" ઉમેરીને), સાચા જવાબનો દર 40% થી વધીને 86% થયો.
સામાન્ય ભૂલો
- ફક્ત સિમેન્ટીક શોધ પર આધાર રાખવો: ઉત્પાદન કોડ, સંક્ષિપ્ત નામ, યોગ્ય નામ ચૂકી ગયા છે; હાઇબ્રિડ ઉમેરો.
- k ને ખૂબ નાનું રાખવું: સાચો ભાગ યાદીમાં પ્રવેશી શકતો નથી; તેને પહોળો બનાવો અને તેને ફરીથી ક્રમ સાથે સાંકડો.
- ફરીથી રેન્કિંગ વિશે ક્યારેય વિચારશો નહીં: પ્રથમ શોધ અસંસ્કારી છે; બીજો સ્માર્ટ પાસ ગુણવત્તામાં નોંધપાત્ર સુધારો કરે છે.
- અનુવર્તી પ્રશ્નોની શોધ આ પ્રમાણે છે: સંદર્ભ વિનાનો પ્રશ્ન અર્થહીન માટે શોધે છે; ફરીથી લખો.
- k (ફરીથી રેન્ક વિના) આંધળી રીતે વધી રહી છે: મોડેલ અવાજથી ભરેલું છે, પ્રતિભાવ વિકૃત છે અને ખર્ચ વધે છે.
સાવચેત રહો: દરેક તકનીક ખર્ચ અને વિલંબ ઉમેરે છે. મલ્ટિ-ક્વેરીનો અર્થ છે 3-ગણો શોધ, રિ-રેન્કિંગ એટલે વધારાના મોડલ કૉલ. સરળ વર્ણસંકર + વાજબી k સાથે પ્રારંભ કરો; જ્યાં ખરેખર જરૂર હોય ત્યાં ભારે તકનીકોને માપો અને ઉમેરો. માપ્યા વિના ઉમેરવું.
સારાંશમાં
- ટોપ-કે એ યાદ અને ચોકસાઇ વચ્ચેનું સંતુલન છે; સામાન્ય રીતે 4-8 એ સારી શરૂઆત છે.
- હાઇબ્રિડ શોધ કીવર્ડ (BM25) શોધ સાથે સિમેન્ટીક શોધને જોડે છે; ચોક્કસ મેચો પુનઃપ્રાપ્ત કરે છે.
- પુનઃ રેન્કિંગ એક મજબૂત મોડેલ સાથે વ્યાપક પ્રારંભિક શોધમાંથી ઉમેદવારોને ફરીથી સ્કોર કરે છે અને શ્રેષ્ઠની પસંદગી કરે છે.
- ક્વેરી ટ્રાન્સફોર્મેશન (પુનઃલેખન, મલ્ટી-ક્વેરી, HyDE) મુશ્કેલ અને સંદર્ભ-મુક્ત પ્રશ્નોને શોધવા યોગ્ય બનાવે છે.
- મજબૂત પેટર્ન: વ્યાપક આનયન → હાઇબ્રિડ સાથે મર્જ → પુનઃ-રેન્ક સાથે સાંકડી; પરંતુ દરેક ટેકનિકને તેને માપીને ઉમેરો.
એપ્લિકેશન કાર્ય
અગાઉના એકમોના ડેટા સાથે 6 મુશ્કેલ પ્રશ્નો તૈયાર કરો: ઓછામાં ઓછા 2 ચોક્કસ મેચો (ઉત્પાદન કોડ, સંક્ષેપ, તારીખ), 2 સિમેન્ટીક (વિવિધ શબ્દો સાથે સમાન વિષય), 2 સંદર્ભ વિના અનુવર્તી પ્રશ્નો. (1) પહેલા દરેક પ્રશ્નને શુદ્ધ સિમેન્ટીક શોધ તરીકે વિચારો અને મેન્યુઅલી માર્ક કરો કે કયા ભાગો આવશે. (2) વર્ણસંકર અને પુનઃ ક્રમાંક ઉમેરવા સાથે સમાન પ્રશ્નોનું પુનઃમૂલ્યાંકન કરો. (3) અનુવર્તી પ્રશ્નો સંદર્ભ વિના ફરીથી લખો. ટેબ્યુલર સ્વરૂપમાં નોંધ કરો કે કઈ તકનીક કયા પ્રશ્નના પ્રકારમાં તફાવત બનાવે છે.
ચેકલિસ્ટ
- [ ] હું જાણું છું કે top-k એ રિકોલ-ચોકસાઇ બેલેન્સ અને વાજબી પ્રારંભિક શ્રેણી છે.
- [ ] હું સમજાવી શકું છું કે શા માટે વર્ણસંકર શોધ ચોક્કસ મેળ પુનઃપ્રાપ્ત કરે છે.
- [ ] હું પુનઃ-ક્રમાંકનનો બે-પગલાંનો તર્ક લાગુ કરી શકું છું (વ્યાપક → સ્માર્ટ નેરો).
- [ ] હું સંદર્ભ વિના ફોલો-અપ પ્રશ્નોને ફરીથી લખવાની જરૂરિયાતને ઓળખું છું.
- [ ] હું પુષ્ટિ કરું છું કે મેં મેઝરિંગ દ્વારા ભારે તકનીકો ઉમેરી છે, માપન દ્વારા નહીં.