लाभ:
- संख्यात्मक रूपमा खण्ड आकार, ओभरल्याप र सिमान्टिक chunking ट्रेडअफहरू मूल्याङ्कन गर्नुहोस्
- विभिन्न कागजात प्रकारहरू (पीडीएफ, तालिका, कोड, च्याट लग) को लागि उपयुक्त chunking रणनीति छनोट गर्दै
- प्रत्येक भागमा मेटाडेटा थपेर पुनःप्राप्ति गुणस्तर र फिल्टरिङलाई बलियो बनाउनुहोस्
यो RAG मा सबैभन्दा बेवास्ता गरिएको तर सबैभन्दा निर्णायक चरण हो: तपाईंले कागजातलाई कसरी तोड्नु हुन्छ। यसलाई chunking भनिन्छ। यदि तपाईंले एउटै कागजात एउटै मोडेललाई दिनुभयो भने पनि, खराब चङ्किङको कारण पुन: प्राप्तिले गलत टुक्रा फर्काउँछ र मोडेलले कहिल्यै राम्रो जवाफ दिन सक्दैन। यस एकाइमा, हामी खण्डीकरण रणनीतिहरू, कागजात प्रकार अनुसार तिनीहरूलाई कसरी अनुकूलन गर्ने, र प्रत्येक टुक्रामा अर्थपूर्ण मेटाडेटा कसरी थप्ने भन्ने कुराहरू समावेश गर्छौं।
हामी किन टुक्रा पार्छौं?
तीनवटा कारण छन्। पहिलो, इम्बेडिङ मोडेलले पाठलाई निश्चित लम्बाइसम्मको अर्थपूर्ण भेक्टरमा रूपान्तरण गर्छ। यदि सम्पूर्ण 40-पृष्ठ अध्याय एकल भेक्टरमा क्र्याम गरिएको छ भने, अर्थ "धमिलो" हुन्छ। दोस्रो, हामी मोडेललाई सन्दर्भको रूपमा आवश्यक पर्ने अंश मात्र दिन चाहन्छौं। सम्पूर्ण कागजात हस्तान्तरण महँगो र विचलित छ। तेस्रो, पुन: प्राप्ति सटीक हुनको लागि, खोज एकाइ सानो र केन्द्रित हुनुपर्छ।
त्यसैले खण्ड पुन: प्राप्तिको सबैभन्दा सानो एकाइ हो। यो धेरै ठूलो वा धेरै सानो हुनु हुँदैन - ठीक छ।
खण्ड आकार र ओभरल्याप ब्यालेन्स
त्यहाँ दुई मुख्य सेटिङहरू छन्: खण्ड आकार (एक भागमा कति टोकनहरू/शब्दहरू हुनेछन्) र ओभरल्याप (छिमेकी भागहरू द्वारा साझा गरिएको भाग)।
धेरै सानो टुक्राहरू (जस्तै 100 टोकनहरू): केन्द्रित तर सन्दर्भबाट विच्छेदन। उसले "14 दिनको लागि" भन्यो, तर के 14 दिन बाँकी छ त्यो अघिल्लो वाक्यमा छ। धेरै ठूला टुक्राहरू (जस्तै 2000 टोकनहरू): सन्दर्भलाई सुरक्षित राख्छ तर धेरै थ्रेडहरू मिलाइएका छन्; इम्बेडिङ गडबड हुन्छ र अप्रासंगिक विषयहरू एकसाथ आउँछन्।
ओभरल्यापले सीमा समस्या समाधान गर्छ। यदि वाक्य दुई भागको सिमानामा ठ्याक्कै खस्छ भने, यसलाई ओभरल्याप नगरी दुई भागमा विभाजित हुन्छ र यसको अर्थ हराउँछ। 50-100 टोकनहरूको ओभरल्यापले सुनिश्चित गर्दछ कि सीमा भित्र पर्ने जानकारी कम्तिमा एक भागमा अक्षुण्ण रहन्छ।
टुक्रा आकार
फाइदा
बेफाइदा
उपयुक्त सामग्री
सानो (१००-२५० टोकन)
उच्च संवेदनशीलता, केन्द्रित
सन्दर्भ बिग्रन सक्छ
FAQ, छोटो लेख, परिभाषा
मध्यम (३००-६०० टोकन)
सन्तुलन; अधिकांश परिदृश्यहरू
-
प्रक्रियाहरू, नीति पाठहरू
ठूलो (८००-१५०० टोकन)
सन्दर्भ अखण्डता
धमिलो इम्बेडिङ
कथा, लामो व्याख्या
सुझाव: यदि तपाइँ कहाँ सुरु गर्ने थाहा छैन भने, 400-500 टोकन खण्ड र 50-80 टोकन ओभरल्याप संग सुरु गर्नुहोस्; त्यसपछि मापन र आफ्नो डेटा संग समायोजन। "दायाँ" आकार विश्वव्यापी होइन, यो सन्दर्भमा निर्भर गर्दछ।
चङ्किङ रणनीतिहरू
फिक्स्ड साइज: प्रत्येक N टोकनहरूमा पाठ ट्रिम गर्नुहोस्। यो सरल र छिटो छ, तर मध्य-वाक्य अवरोध गर्न सक्छ।
विभाजक-आधारित (पुनरावर्ती/विभाजक): अनुच्छेद र त्यसपछि वाक्य सीमा अनुसार विभाजन; यसले अर्थको अखण्डतालाई अझ राम्रोसँग जोगाउँछ। अधिकांश उत्पादन प्रणालीहरू यसबाट सुरु हुन्छन्।
सिमान्टिक चङ्किङ: यसले वाक्यहरूको इम्बेडिङहरू हेर्छ र तिनीहरूलाई विभाजित गर्दछ जहाँ विषय परिवर्तन हुन्छ। यो उच्चतम गुणस्तर तर सबैभन्दा महँगो विधि हो; ठूलो मात्रा संग, लेनदेन लागत बढ्छ।
संरचना-सचेत: कागजात संरचना जस्तै शीर्षकहरू, खण्डहरू, तालिकाहरू प्रयोग गर्दछ। उदाहरणका लागि, हेडिङद्वारा मार्कडाउन कागजातलाई विभाजन गर्दा प्रत्येक भागले आफ्नै शीर्षक बोक्ने कुरा सुनिश्चित गर्दछ।
कागजात प्रकार द्वारा अनुकूलन
सबै कागजात एउटै हुँदैनन्। रणनीति प्रकार अनुसार फरक हुन्छ:
- PDF/नीति पाठ: बुकमार्क-आधारित, मध्यम आकार। खाली पृष्ठ शीर्ष/तल दोहोरिने (हेडर/फुटर)।
- तालिकाहरू: सन्दर्भ बाहिर लाइन नलिनुहोस्; हेडर जानकारीको साथ प्रत्येक पङ्क्ति राख्नुहोस् ("वस्तु: X, मूल्य: Y, स्टक: Z")। कच्चा तालिकालाई सादा पाठमा रूपान्तरण गर्नु अक्सर आवश्यक हुन्छ।
- कोड: प्रकार्य/वर्ग सीमाहरू द्वारा विभाजित; बाटो बाहिर एक प्रकार्य कटौती नगर्नुहोस्।
- च्याट/टिकट रेकर्डिङ: सन्देश वा कुराकानी राउन्ड द्वारा विभाजित; कसले के भन्यो भन्ने ज्ञान राख्नुहोस्।
# कोष्ठक-आधारित chunking (वैचारिक) chunks = bol(पाठ, target_size=450, # टोकन ओभरल्याप=70, # टोकन कोष्ठक=["\n\n", "\n", "।", " "] # अनुच्छेद पहिलो, शब्द अन्तिम)
प्रत्येक ट्र्याकमा मेटाडेटा थप्नुहोस्
चङ्किङ मात्र "विभाजन" होइन; प्रत्येक टुक्रालाई समृद्ध बनाउनु हो। तपाईंले ट्र्याकमा संलग्न गर्नुहुने प्रत्येक ट्याग भविष्यको फिल्टरिङ र स्रोत उद्धृत गर्नको लागि सुनको मूल्यको हुन्छ।
# समृद्ध खण्ड (वैचारिक){ "पाठ": "वार्षिक भुक्तान बिदा 1-5 वर्षको सेवा सहित 14 दिनको हुन्छ...", "मेटाडेटा": { "स्रोत": "ik_el_kitabi_v7.pdf", "खण्ड": "५.२ वार्षिक बिदा", "पृष्ठ": २३, "मिति": "६-५ वर्ष", "२०० भाग" "गोपनीयता": "आन्तरिक" }}
अर्को शक्तिशाली प्रविधिले प्रासंगिक हेडर थपिरहेको छ: प्रत्येक टुक्राको सुरुमा अध्यायको शीर्षक लेख्ने। तसर्थ, "१४ दिनको लागि" जस्तो विच्छेदन गरिएको टुक्रा पनि "वार्षिक बिदा - १४ दिन" को रूपमा अझ राम्रो एम्बेडेड र थप अर्थपूर्ण छ।
कमजोर Chunking / बलियो chunking
कमजोर (अन्धो हार्डकट, मेटाडेटा छैन):
प्रत्येक 1000 वर्णहरूमा पाठ काट्नुहोस्। पाठ मात्र राख्नुहोस्। # नतिजा: तालिकाहरू बीचमा विभाजित छन्, "14 दिन" सन्दर्भ बिना रहन्छ, # यो कुन कागजातबाट आएको हो थाहा छैन, कुनै फिल्टर बनाउन सकिँदैन।
शक्तिशाली (संरचना-सचेत + हेडर + मेटाडेटा):
कागजातलाई शीर्षकहरूद्वारा विभाजित गर्नुहोस्; प्रत्येक भागमा खण्ड शीर्षक थप्नुहोस्; स्रोत, पृष्ठ, मिति र गोपनीयता मेटाडेटा संलग्न गर्नुहोस्; टेबलरोहरूलाई तिनीहरूको हेडरको साथ सादा पाठमा रूपान्तरण गर्नुहोस्। # परिणाम: केन्द्रित, प्रासंगिक, फिल्टर गर्न मिल्ने, स्रोत योग्य।
तीन मिनी केसहरू
केस 1 - चित्रकारी आपदा। एक वित्त टोलीले 200-पृष्ठ मूल्य सूचीलाई अन्धा कडा काट्ने गरी विभाजित गर्यो; तालिका पङ्क्तिहरू अनियमित रूपमा विभाजित थिए। "उत्पादन X को मूल्य के हो?" मोडेलले गलत लाइन पढ्यो र गलत मूल्य दियो (12 मध्ये 9 केसहरू गलत छन्)। जब मैले तालिका पङ्क्तिहरूलाई "उत्पादन: ... | मूल्य: ... | एकाइ: ..." ढाँचामा सादा पाठमा रूपान्तरण गरें, त्रुटि 12 मध्ये 0 मा घट्यो।
केस 2 - अत्यन्त ठूलो भाग। विकिमा, प्रत्येक पृष्ठ एक टुक्राबाट बनेको हुन्छ (कसैले 3,000 टोकनहरू भन्छन्)। एम्बेडिङ धमिलो छ किनभने त्यहाँ एक पृष्ठमा "बिदा", "ओभरटाइम" र "पेरोल" छ; बिदा प्रश्नको सन्दर्भमा काम गर्ने घण्टा खण्ड पनि खेलियो। जब पृष्ठहरूलाई शीर्षकद्वारा मध्यम आकारमा विभाजित गरियो, recall@5 64% बाट 91% मा बढ्यो।
केस 3 - ओभरल्याप बिना काटिएको वाक्य। कानूनी टोलीको लागि 250 टोकन निश्चित कटौती, कुनै ओभरल्याप छैन। एउटा महत्वपूर्ण परिभाषा दुई भागको सिमानामा पर्यो र दुई भागमा विभाजित भयो; न त एउटा वा अर्कोले पूर्ण जवाफ समावेश गर्दछ। जब 60 टोकन ओभरल्याप थपियो, उही परिभाषा एक टुक्रामा अक्षुण्ण रह्यो र सही जवाफ फर्काइयो।
सामान्य गल्तीहरू
- ब्लाइन्ड फिक्स्ड कट: बीचमा वाक्य र तालिकाहरू विभाजित गर्नुहोस्; अर्थ हराएको छ।
- शून्यमा ओभरल्याप छोड्दै: सीमामा पर्ने जानकारी विभाजित र हराइन्छ।
- मेटाडेटा थप्दै छैन: फिल्टरिङ र स्रोत प्रदर्शन असम्भव हुन्छ।
- तालिकाहरू कच्चा छोड्दै: मोडेलले तालिका संरचना समाधान गर्न सक्दैन; रेखाहरूलाई सादा पाठमा रूपान्तरण गर्नुहोस्।
- एउटै रणनीति लागू गर्दै: PDF, कोड र तालिका एउटै विधिद्वारा विभाजित हुँदैनन्; विधामा अनुकूलन गर्नुहोस्।
सावधानी: एक पटक Chunking सेट नगर्नुहोस् र यसलाई बिर्सनुहोस्। नयाँ कागजात प्रकारहरू आइपुग्दा पुनःप्राप्ति गुणस्तर पुन: मापन गर्नुहोस् (नयाँ प्रणालीबाट टिकटहरू, स्क्यान गरिएका PDF हरू)। खराब इनपुट डेटाको अर्थ खराब प्रतिक्रिया हो ("फोहोर भित्र, फोहोर बाहिर")।
संक्षेपमा
- खण्ड पुन: प्राप्तिको सबैभन्दा सानो एकाइ हो; न त धेरै ठूलो न धेरै सानो - यो सामग्री अनुसार सन्तुलित हुनुपर्छ।
- खण्ड आकारले फोकस-सन्दर्भ सन्तुलनलाई संकेत गर्दछ; ओभरल्यापले सीमा हानि व्यवस्थापन गर्छ।
- कोष्ठक-आधारित र संरचना-सचेत chunking धेरै जेनरेशन प्रणालीहरूको सुरूवात बिन्दु हो; सिमेन्टिक chunking राम्रो गुणस्तर तर महँगो छ।
- तालिका, स्क्रिप्ट, र च्याट जस्ता प्रकारहरूलाई आफ्नै रणनीति चाहिन्छ; तालिकाहरूलाई सादा पाठमा रूपान्तरण गर्नुहोस्।
- प्रत्येक ट्र्याकमा स्रोत/मिति/अध्याय/गोपनीयता मेटाडेटा र खण्ड शीर्षक थप्नुहोस्; यो फिल्टरिङ र उद्धरण को आधार हो।
आवेदन कार्य
तपाईंले छान्नुभएको कागजातको एउटा खण्डलाई तीन फरक तरिकामा तोड्नुहोस्: (1) 200 टोकनहरूको सानो टुक्रा, (2) 500 टोकनहरूको मध्यम टुक्राहरू (70 टोकन ओभरल्याप), (3) एकल ठूला टुक्राहरू। प्रत्येक रणनीतिको लागि समान 3 प्रश्नहरू सोध्नुहोस्, कुन टुक्रा ल्याउने भनेर म्यानुअल रूपमा चिन्ह लगाउनुहोस्, र कुन रणनीति त्यो कागजातको लागि राम्रो काम गर्छ भन्ने तर्क लेख्नुहोस्। त्यसपछि प्रत्येक ट्र्याकमा कम्तिमा चार मेटाडेटा क्षेत्रहरू र "अध्याय शीर्षक" थप्नुहोस्। यदि कागजातमा तालिका समावेश छ भने, तालिका पङ्क्तिलाई "फिल्ड: मान" ढाँचामा सादा पाठमा रूपान्तरण गर्नुहोस्।
चेकलिस्ट
- [ ] म भन्न सक्छु कि खण्ड पुन: प्राप्तिको सबैभन्दा सानो एकाइ हो र आकार फोकस-सन्दर्भ सन्तुलन हो।
- [ ] मलाई थाहा छ किन ओभरल्यापले बाउन्ड्री हानि रोक्छ।
- [ ] म कोष्ठक-आधारित, सिमान्टिक र संरचना-सचेत chunking बीच भेद गर्न सक्छु।
- [] म तालिका, कोड र च्याटको लागि रणनीति अनुकूलन गर्न सक्छु।
- [ ] मैले प्रत्येक ट्र्याकमा मेटाडाटा र अध्याय शीर्षक थपेर पुनःप्राप्तिलाई बलियो बनाउँछु।