युनिट 4 / 11

पुनर्प्राप्ती धोरणे: टॉप-के, हायब्रिड, री-रँकिंग

नफा:

  • टॉप-के निवड आणि सिमेंटिक आणि कीवर्ड शोध एकत्रित करणारा संकरित शोध लागू करणे
  • री-रँकिंगसह पहिल्या शोधाची अचूकता वाढवणे
  • क्वेरी ट्रान्सफॉर्मेशन आणि HyDE सारख्या तंत्रांसह कठीण प्रश्न अधिक शोधण्यायोग्य बनवणे

तुम्ही दस्तऐवज छान कापले आणि ते वेक्टर डेटाबेसमध्ये ठेवले. आता खरे काम: जेव्हा वापरकर्ता प्रश्न विचारतो तेव्हा योग्य तुकडे आणणे. याला पुनर्प्राप्ती म्हणतात आणि RAG गुणवत्तेचा कणा आहे. "पुनर्प्राप्ती गुणवत्ता = RAG गुणवत्ता" हा वाक्यांश लक्षात ठेवा; हा घटक नेमका तो दर्जा सुधारण्याची कला आहे. आम्ही टॉप-के निवडीपासून संकरित शोधापर्यंत, री-रँकिंगपासून क्वेरी ट्रान्सफॉर्मेशनपर्यंत व्यावहारिक तंत्रांचा समावेश करू.

Top-k: आम्ही किती तुकडे आणू?

सर्वात मूलभूत सेटिंग: शोधातून किती तुकडे (के) परत करायचे. तुम्ही कमी (k=1) आणल्यास योग्य तुकडा गहाळ होण्याचा धोका जास्त असतो; तुम्ही जास्त (k=20) जोडल्यास, ते मॉडेलमध्ये आवाज वाढवेल आणि टोकनची किंमत वाढेल.

दोन संकल्पनांमध्ये फरक करा. स्मरण करा: पुनर्प्राप्त केलेल्यांपैकी योग्य तुकडा ज्या दराने आहे. अचूकता: ज्या दराने जे पुनर्प्राप्त केले जाते ते संबंधित आहे. k वाढल्याने रिकॉल वाढते परंतु अचूकता कमी होते. दोघांमध्ये समतोल साधणे हे ध्येय आहे.

टॉप-के

प्रभाव

योग्य परिस्थिती

1-3

उच्च सुस्पष्टता, चुकण्याचा धोका

साधे, एक-उत्तर प्रश्न

4-8

शिल्लक; बहुतेक परिस्थिती

सामान्य कॉर्पोरेट RAG

10-20

जास्त रिकॉल, आवाज वाढतो

री-रँकिंगसह (खाली)

टीप: सामान्य आणि शक्तिशाली नमुना: रुंद मिळवा (k=20), नंतर पुन्हा-रँकिंगसह अरुंद (शीर्ष 4). अशा प्रकारे तुम्हाला काहीही चुकणार नाही आणि तुम्ही मॉडेलला स्वच्छ संदर्भ देता.

संकरित शोध: दोन शोधांची शक्ती

सिमेंटिक (वेक्टर) शोध अर्थ कॅप्चर करतो परंतु गोष्टी चुकवतो: पूर्ण उत्पादन कोड ("XR-4471"), दुर्मिळ संक्षेप, योग्य नाव, आवृत्ती क्रमांक. या अचूक जुळणी कार्यांसाठी, जुन्या-शाळेतील कीवर्ड शोधणे—विशेषतः BM25 नावाचे क्लासिक अल्गोरिदम—खूप चांगले आहे.

हायब्रीड शोध दोन एकत्र करतो: दोन्ही शब्दार्थ आणि कीवर्ड शोध कार्य करतात, परिणाम एकत्र करतात. अशा प्रकारे, "वारंटी कालावधी सारख्या प्रश्नात

विलीनीकरण सहसा RRF (रेसिप्रोकल रँक फ्यूजन) सह केले जाते: दोन्ही सूचींमध्ये जास्त असलेला ट्रॅक पुढे येतो.

# संकरित पुनर्प्राप्ती (वैचारिक)sem = vector_search(प्रश्न, k=20) # meaningkey = bm25_search(प्रश्न, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # फ्यूज द टू, टॉप 8

री-रँकिंग: द्वितीय आणि हुशार पास

पहिला कॉल जलद पण असभ्य असू शकतो. री-रँकिंग अधिक शक्तिशाली मॉडेल (सामान्यत: क्रॉस-एनकोडर — एक मॉडेल जे प्रश्न आणि उतारा एकत्र वाचते आणि प्रासंगिकता स्कोअर करते) पहिल्या शोधाद्वारे परत आलेल्या उमेदवारांना स्कोअर करते आणि सर्वात संबंधितांना शीर्षस्थानी हलवते.

तर्क असा आहे: पहिला शोध मोठ्या संख्येने रिकॉलसाठी उमेदवार नियुक्त करतो (20 उमेदवार), री-रँकर अचूकतेसाठी सर्वोत्तम 4 निवडतो. हा द्वि-चरण दृष्टीकोन सिंगल-स्टेज शोधापेक्षा अधिक अचूक आहे. काही विलंब आणि अतिरिक्त प्रक्रिया खर्च; नफा हा गुणवत्तेत लक्षणीय वाढ आहे.

# द्वि-चरण पुनर्प्राप्ती (वैचारिक) उमेदवार = संकर_शोध(प्रश्न, k=20) # विस्तृत, क्विकस्कोर = reranker.score(प्रश्न, उमेदवार) # प्रत्येक उमेदवार संदर्भासाठी प्रासंगिकता गुण = rated.rank()[:4] # शीर्ष 4

क्वेरीचे रूपांतर

कधीकधी समस्या शोधात नसते, परंतु प्रश्नातच असते. जर वापरकर्त्याने "दूरस्थ कामगारांचे काय?" ', हे एकट्याने शोधले जाऊ शकत नाही (दूरस्थ कामगारांसाठी काय आहे हे स्पष्ट नाही). येथे क्वेरी ट्रान्सफॉर्मेशन तंत्रे आहेत:

  • पुनर्लेखन: प्रश्न स्वतंत्र करण्यासाठी संभाषण इतिहास वापरा: "दूरस्थ कामगारांना वार्षिक रजेसाठी काय अधिकार आहेत?"
  • बहु-क्वेरी: एकाच प्रश्नाचे 3 भिन्न अभिव्यक्ती तयार करा, त्या सर्वांसह शोधा, परिणाम एकत्र करा. वेगवेगळ्या शब्दांना वेगवेगळे तुकडे सापडतात.
  • HyDE (काल्पनिक दस्तऐवज एम्बेडिंग): प्रथम मॉडेलसाठी "संभाव्य उत्तर" मुद्रित करा, नंतर एम्बेड करा आणि ते काल्पनिक उत्तर शोधा. काल्पनिक उत्तर कधीकधी चांगले आढळते कारण ते वास्तविक दस्तऐवजाच्या शब्दांच्या जवळ असते.

# मल्टी-क्वेरी (वैचारिक) प्रकार = model.uret("हा प्रश्न 3 वेगवेगळ्या प्रकारे व्यक्त करा: " + प्रश्न)tum_sonuc = []v साठी: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]

कमकुवत पुनर्प्राप्ती / मजबूत पुनर्प्राप्ती

कमकुवत (सिंगल स्टेज, फक्त शब्दार्थ, स्थिर k=3):

परिणाम = वेक्टर_शोध(प्रश्न, k=3)# समस्या: उत्पादन कोड चुकला आहे, कठीण प्रश्नांमध्ये योग्य भाग 3 प्रविष्ट करू शकत नाही.

शक्तिशाली (हायब्रिड + वाइडक + री-रँकिंग + मल्टी-क्वेरी आवश्यक असल्यास):

उमेदवार = hybrid_search(पुनर्लेखन(प्रश्न, भूतकाळ), 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) संदर्भाशिवाय पाठपुरावा प्रश्न पुन्हा लिहा. टॅब्युलर फॉर्ममध्ये लक्षात घ्या की कोणत्या तंत्राने कोणत्या प्रश्नाच्या प्रकारात फरक पडतो.

चेकलिस्ट

  • मला माहित आहे की टॉप-के हे रिकॉल-प्रिसिजन बॅलन्स आणि वाजवी सुरुवातीची श्रेणी आहे.
  • [ ] मी स्पष्ट करू शकतो की हायब्रिड शोध अचूक जुळण्या का पुनर्प्राप्त करतो.
  • [ ] मी री-रँकिंगचे द्वि-चरण तर्क लागू करू शकतो (ब्रॉड → स्मार्ट अरुंद).
  • [ ] मी संदर्भाशिवाय पाठपुरावा प्रश्न पुन्हा लिहिण्याची गरज ओळखतो.
  • [ ] मी पुष्टी करतो की मी मोजमाप करून जड तंत्र जोडले आहे, मोजमाप करून नाही.