लाभ:
- हाइब्रिड खोज कार्यान्वयन गर्दै जसले शीर्ष-के चयन र सिमान्टिक र किवर्ड खोजलाई संयोजन गर्दछ
- पुन: श्रेणीकरणको साथ पहिलो खोजको शुद्धता बढाउँदै
- क्वेरी रूपान्तरण र HyDE जस्ता प्रविधिहरूसँग कठिन प्रश्नहरूलाई थप खोजीयोग्य बनाउँदै
तपाईंले कागजातहरूलाई राम्ररी टुक्रा पारेर भेक्टर डाटाबेसमा राख्नुभयो। अब वास्तविक काम: प्रयोगकर्ताले प्रश्न सोध्दा सही टुक्राहरू ल्याउने। यसलाई पुन: प्राप्ति भनिन्छ र RAG गुणस्तरको मेरुदण्ड हो। "पुनप्राप्ति गुणस्तर = RAG गुणस्तर" वाक्यांश सम्झनुहोस्; यो एकाई वास्तवमा त्यो गुणस्तर सुधार गर्ने कला हो। हामी व्यावहारिक प्रविधिहरू शीर्ष-के चयनदेखि हाइब्रिड खोजसम्म, पुन: श्रेणीकरणदेखि क्वेरी रूपान्तरणसम्म समावेश गर्नेछौं।
Top-k: हामी कति टुक्रा ल्याउँछौं?
सबैभन्दा आधारभूत सेटिङ: खोजबाट कति टुक्राहरू (k) फर्काउन। यदि तपाईंले कम (k=1) ल्याउनुभयो भने सही टुक्रा हराउने उच्च जोखिम हुन्छ; यदि तपाईंले धेरै (k=20) थप्नुभयो भने, यसले मोडेलमा आवाज थप्नेछ र टोकन लागत बढ्नेछ।
दुई अवधारणाहरू बीच भेद गर्नुहोस्। सम्झनुहोस्: दर जसमा सहि टुक्रा पुन: प्राप्त भएका मध्ये छ। सटीक: के पुन: प्राप्त भएको दर सान्दर्भिक छ। k बढ्दा रिकॉल बढ्छ तर परिशुद्धता घट्छ। लक्ष्य दुई सन्तुलन हो।
शीर्ष-के
प्रभाव
उपयुक्त स्थिति
१-३
उच्च परिशुद्धता, मिस को जोखिम
सरल, एक-उत्तर प्रश्न
४-८
सन्तुलन; अधिकांश परिदृश्यहरू
सामान्य कर्पोरेट RAG
१०-२०
उच्च सम्झना, शोर बढ्छ
पुन: वर्गीकरण संग (तल)
सुझाव: सामान्य र शक्तिशाली ढाँचा: फ्याच चौडा (k=20), त्यसपछि पुन: श्रेणीकरण (शीर्ष 4) संग साँघुरो। यस तरिकाले तपाईले केहि पनि छुटाउनुहुने छैन र तपाईले मोडेललाई सफा सन्दर्भ दिनुहुन्छ।
हाइब्रिड खोज: दुई खोजहरूको शक्ति
सिमान्टिक (भेक्टर) खोजले अर्थ क्याप्चर गर्छ तर चीजहरू छुटेको छ: पूर्ण उत्पादन कोड ("XR-4471"), दुर्लभ संक्षिप्त नाम, उचित नाम, संस्करण नम्बर। यी सटीक-मिलान कार्यहरूको लागि, पुरानो-विद्यालय खोजशब्द खोजी - विशेष गरी क्लासिक एल्गोरिथ्म BM25 भनिन्छ - धेरै राम्रो छ।
हाइब्रिड खोजले दुईलाई जोड्दछ: दुवै अर्थ र कुञ्जी शब्द खोजहरूले परिणामहरू संयोजन गर्दै काम गर्दछ। यसैले, एक प्रश्नमा जस्तै "को वारेन्टी अवधि
मर्ज सामान्यतया RRF (Reciprocal Rank Fusion) को साथ गरिन्छ: दुबै सूचिहरूमा उच्च रहेको ट्र्याक अगाडि आउँछ।
# हाइब्रिड पुनःप्राप्ति (वैचारिक)sem = भेक्टर_खोज(प्रश्न, k=20) # meaningkey = bm25_search(प्रश्न, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # फ्युज द टु, शीर्ष ८
पुन: दर्जा: दोस्रो र स्मार्ट पास
पहिलो कल छिटो तर अशिष्ट हुन सक्छ। पुन: श्रेणीकरणले उम्मेदवारहरूलाई पहिलो खोजबाट फर्केका उम्मेदवारहरूलाई थप शक्तिशाली मोडेल (सामान्यतया क्रस-इन्कोडर - एउटा मोडेल जसले प्रश्न र अनुच्छेदलाई सँगै पढ्छ र सान्दर्भिकता स्कोर गर्छ) र सबैभन्दा सान्दर्भिकहरूलाई शीर्षमा लैजान्छ।
तर्क यो हो: पहिलो खोजले ठूलो संख्यामा उम्मेदवारहरूलाई सम्झाउने (२० उम्मेद्वारहरू) नियुक्त गर्दछ, पुन: र्याङ्करले परिशुद्धताका लागि उत्कृष्ट 4 चयन गर्दछ। यो दुई-चरण दृष्टिकोण एकल-चरण खोज भन्दा धेरै सही छ। यसले केहि ढिलाइ र अतिरिक्त प्रशोधन खर्च गर्दछ; लाभ गुणस्तर मा एक महत्वपूर्ण वृद्धि हो।
# दुई-चरण पुनःप्राप्ति (वैचारिक) उम्मेदवार = हाइब्रिड_खोज(प्रश्न, k=20) # व्यापक, द्रुत स्कोर = reranker.score(प्रश्न, उम्मेद्वारहरू) # प्रत्येक उम्मेद्वार सन्दर्भको लागि प्रासंगिक स्कोर = rated.rank()[:4] # शीर्ष 4
प्रश्नलाई रूपान्तरण गर्दै
कहिलेकाहीँ समस्या खोजमा होइन, प्रश्नमा नै हुन्छ। यदि प्रयोगकर्ताले "रिमोट कामदारहरूको बारेमा के हो?" ', यो एक्लै खोज्न सकिँदैन (यो स्पष्ट छैन कि टाढाका कामदारहरूको लागि के हो)। यहाँ क्वेरी रूपान्तरण प्रविधिहरू छन्:
- पुन: लेख्नुहोस्: प्रश्नलाई स्ट्यान्डअलोन बनाउनको लागि कुराकानीको इतिहास प्रयोग गर्नुहोस्: "दूरस्थ कामदारहरू वार्षिक बिदाको हकदार हुन्?"
- बहु-क्वेरी: एउटै प्रश्नको 3 फरक अभिव्यक्तिहरू उत्पन्न गर्नुहोस्, ती सबैसँग खोज्नुहोस्, परिणामहरू संयोजन गर्नुहोस्। विभिन्न शब्दहरूले विभिन्न टुक्राहरू फेला पार्छन्।
- HyDE (काल्पनिक कागजात इम्बेडिङहरू): पहिले मोडेलमा "सम्भावित जवाफ" छाप्नुहोस्, त्यसपछि इम्बेड गर्नुहोस् र त्यो काल्पनिक जवाफ खोज्नुहोस्। काल्पनिक जवाफ कहिलेकाहीं राम्रो पाइन्छ किनभने यो वास्तविक कागजातको शब्दमा नजिक छ।
# बहु-क्वेरी (वैचारिक) भेरियन्ट = model.uret("यस प्रश्नलाई ३ फरक तरिकामा व्यक्त गर्नुहोस्: " + प्रश्न)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 - पुन: वर्गीकरण भिन्नता। एक paralegal k = 5 सँग काम गरिरहेको थियो तर सही वस्तु धेरै जसो 7-10 हो। ऊ पङ्क्तिमा बसेको थियो। जब k=20 + पुन: श्रेणीकरण प्रस्तुत गरियो, सही लेख शीर्ष 3 मा रहेको दर 61% बाट 94% मा बढ्यो; विलम्बता केवल 300ms ले बढ्यो - एक स्वीकार्य सम्झौता।
केस 3 - सन्दर्भ बिना फलो-अप प्रश्न। मानव संसाधन सहायकमा, प्रयोगकर्ताले "पार्ट-टाइमरहरूको बारेमा के हो?" मैले सोध्दा, प्रणालीले अप्रासंगिक भागहरू ल्यायो। क्वेरी पुन: लेखेर (विगतको "वार्षिक बिदा" सन्दर्भ तान्दै र "अंशकालिक कर्मचारीहरू वार्षिक बिदाको हकदार छन्" थपेर), सही जवाफको दर 40% बाट 86% मा बढ्यो।
सामान्य गल्तीहरू
- सिमान्टिक खोजमा मात्र भर पर्दै: उत्पादन कोड, संक्षिप्त नाम, उचित नाम छुटेको छ; हाइब्रिड थप्नुहोस्।
- k लाई धेरै सानो राख्दै: सही टुक्राले सूचीमा प्रवेश गर्न सक्दैन; यसलाई चौडा बनाउनुहोस् र पुन: श्रेणीको साथ साँघुरो गर्नुहोस्।
- पुन: श्रेणीकरणको बारेमा कहिल्यै सोच्नुहोस्: पहिलो खोज अशिष्ट छ; दोस्रो स्मार्ट पासले गुणस्तरमा उल्लेखनीय सुधार गर्छ।
- फलो-अप प्रश्नहरूको लागि खोजी गर्दै: सन्दर्भ बिनाको प्रश्नले अर्थहीन खोज्छ; पुन: लेख्नुहोस्।
- अन्धो रूपमा बढ्दै k (पुन: श्रेणी बिना): मोडेल शोरले भरिएको छ, प्रतिक्रिया विकृत छ र लागत बढ्छ।
सावधान: प्रत्येक प्रविधिले लागत र ढिलाइ थप्छ। बहु-क्वेरी भनेको 3-गुणा खोज, पुन: श्रेणीकरण भनेको अतिरिक्त मोडेल कल हो। साधारण हाइब्रिड + उचित k पहिले सुरु गर्नुहोस्; मापन गर्नुहोस् र साँच्चै आवश्यक भएमा भारी प्रविधिहरू थप्नुहोस्। मापन बिना थप्दै।
संक्षेपमा
- Top-k सम्झना र सटीक बीचको सन्तुलन हो; सामान्यतया 4-8 राम्रो सुरुवात हो।
- हाइब्रिड खोजले शब्दार्थ खोजलाई किवर्ड (BM25) खोजसँग जोड्छ; सटीक मिलानहरू पुन: प्राप्ति गर्दछ।
- पुन: श्रेणीकरणले उम्मेदवारहरूलाई फराकिलो प्रारम्भिक खोजबाट एक बलियो मोडेलको साथ पुन: स्कोर बनाउँछ र उत्कृष्टहरू चयन गर्दछ।
- क्वेरी रूपान्तरण (पुनर्लेखन, बहु-क्वेरी, HyDE) कठिन र सन्दर्भ-रहित प्रश्नहरू खोज्न योग्य बनाउँछ।
- बलियो ढाँचा: फराकिलो फेच → हाइब्रिडसँग मर्ज → पुन: श्रेणीको साथ साँघुरो; तर यसलाई मापन गरेर प्रत्येक प्रविधि थप्नुहोस्।
आवेदन कार्य
अघिल्लो एकाइहरूको डेटाको साथ 6 कठिन प्रश्नहरू तयार गर्नुहोस्: कम्तिमा 2 ठ्याक्कै मिल्दो (उत्पादन कोड, संक्षिप्त नाम, मिति), 2 शब्दार्थ (विभिन्न शब्दहरूसँग एउटै विषय), 2 सन्दर्भ बिना अनुगमन प्रश्नहरू। (१) पहिले प्रत्येक प्रश्नलाई शुद्ध अर्थपूर्ण खोजको रूपमा सोच्नुहोस् र कुन भागहरू आउनेछन् भनेर म्यानुअल रूपमा चिन्ह लगाउनुहोस्। (२) हाइब्रिड र पुन: वर्गीकरण थप गरी समान प्रश्नहरूको पुन: मूल्याङ्कन गर्नुहोस्। (3) सन्दर्भ बिना अनुवर्ती प्रश्नहरू पुन: लेख्नुहोस्। ट्याबुलर फारममा नोट गर्नुहोस् कुन प्रविधिले कुन प्रश्न प्रकारमा फरक पार्छ।
चेकलिस्ट
- [ ] मलाई थाहा छ top-k सम्झना-परिशुद्धता ब्यालेन्स र एक उचित सुरूवात दायरा हो।
- [ ] म व्याख्या गर्न सक्छु किन हाइब्रिड खोजले सटीक मिलानहरू पुन: प्राप्त गर्दछ।
- [ ] म पुन: श्रेणीकरणको दुई-चरण तर्क लागू गर्न सक्छु (ब्रोड → स्मार्ट साँघुरो)।
- [ ] मैले सन्दर्भ बिना फलो-अप प्रश्नहरू पुन: लेख्ने आवश्यकतालाई बुझेको छु।
- [ ] म पुष्टि गर्छु कि मैले मापन गरेर भारी प्रविधिहरू थपेको छु, मापन गरेर होइन।