लाभ:
- संख्यात्मक रूप से चंक आकार, ओवरलैप और सिमेंटिक चंकिंग ट्रेडऑफ़ का मूल्यांकन करें
- विभिन्न दस्तावेज़ प्रकारों (पीडीएफ, टेबल, कोड, चैट लॉग) के लिए उपयुक्त चंकिंग रणनीति चुनना
- प्रत्येक खंड में मेटाडेटा जोड़कर पुनर्प्राप्ति गुणवत्ता और फ़िल्टरिंग को मजबूत करें
यह RAG में सबसे अधिक अनदेखा लेकिन सबसे निर्णायक कदम है: आप दस्तावेज़ को कैसे तोड़ते हैं। इसे चंकिंग कहते हैं. यहां तक कि अगर आप एक ही दस्तावेज़ को एक ही मॉडल को देते हैं, तो खराब चंकिंग के कारण पुनर्प्राप्ति गलत टुकड़ा लौटाती है और मॉडल कभी भी अच्छा उत्तर नहीं देगा। इस इकाई में, हम विखंडन रणनीतियों को कवर करते हैं, दस्तावेज़ प्रकार के अनुसार उन्हें कैसे अनुकूलित करें, और प्रत्येक टुकड़े में सार्थक मेटाडेटा कैसे जोड़ें।
हम टुकड़े-टुकड़े क्यों करते हैं?
तीन कारण हैं. सबसे पहले, एम्बेडिंग मॉडल एक निश्चित लंबाई तक के टेक्स्ट को एक सार्थक वेक्टर में परिवर्तित करते हैं; यदि पूरे 40-पृष्ठ अध्याय को एक ही वेक्टर में समेट दिया जाए, तो अर्थ "धुंधला" हो जाता है। दूसरा, हम मॉडल को केवल वही भाग देना चाहते हैं जो संदर्भ के रूप में आवश्यक है; संपूर्ण दस्तावेज़ सौंपना महंगा और ध्यान भटकाने वाला है। तीसरा, पुनर्प्राप्ति सटीक होने के लिए, खोज इकाई छोटी और केंद्रित होनी चाहिए।
अतः चंक पुनर्प्राप्ति की सबसे छोटी इकाई है। यह बहुत बड़ा या बहुत छोटा नहीं होना चाहिए - बिल्कुल सही।
चंक साइज और ओवरलैप बैलेंस
दो मुख्य सेटिंग्स हैं: खंड आकार (एक खंड में कितने टोकन/शब्द होंगे) और ओवरलैप (पड़ोसी खंडों द्वारा साझा किया गया भाग)।
बहुत छोटे हिस्से (उदाहरण के लिए 100 टोकन): केंद्रित लेकिन संदर्भ से अलग। वह कहते हैं, "14 दिनों के लिए", लेकिन 14 दिन क्या है, यह पिछले वाक्य में बचा हुआ है। बहुत बड़े टुकड़े (जैसे 2000 टोकन): संदर्भ को संरक्षित करते हैं लेकिन कई धागे मिश्रित होते हैं; एम्बेडिंग में गड़बड़ी हो जाती है और अप्रासंगिक विषय एक साथ आ जाते हैं।
ओवरलैप सीमा समस्या का समाधान करता है. यदि कोई वाक्य बिल्कुल दो भागों की सीमा पर पड़ता है, तो वह बिना अतिव्यापन के दो भागों में विभाजित हो जाता है और उसका अर्थ नष्ट हो जाता है। 50-100 टोकन का ओवरलैप यह सुनिश्चित करता है कि सीमा के भीतर आने वाली जानकारी कम से कम एक हिस्से में बरकरार रहे।
टुकड़े का आकार
फायदा
नुकसान
उपयुक्त सामग्री
छोटा (100-250 टोकन)
उच्च संवेदनशीलता, केंद्रित
प्रसंग टूट सकता है
अक्सर पूछे जाने वाले प्रश्न, लघु लेख, परिभाषाएँ
मध्यम (300-600 टोकन)
संतुलन; अधिकांश परिदृश्य
—
प्रक्रियाएं, नीति पाठ
बड़े (800-1500 टोकन)
प्रसंग अखंडता
धुंधली एम्बेडिंग
कथात्मक, लंबी व्याख्याएँ
युक्ति: यदि आप नहीं जानते कि कहां से शुरू करें, तो 400-500 टोकन खंड और 50-80 टोकन ओवरलैप से शुरू करें; फिर अपने डेटा से मापें और समायोजित करें। "सही" आकार सार्वभौमिक नहीं है, यह संदर्भ पर निर्भर करता है।
चंकिंग रणनीतियाँ
निश्चित आकार: प्रत्येक एन टोकन पर टेक्स्ट को ट्रिम करता है। यह सरल और तेज़ है, लेकिन मध्य वाक्य को बाधित कर सकता है।
विभाजक-आधारित (पुनरावर्ती/विभाजक): अनुच्छेद और फिर वाक्य सीमाओं के अनुसार विभाजित करता है; यह अर्थ की अखंडता को बेहतर ढंग से सुरक्षित रखता है। अधिकांश उत्पादन प्रणालियाँ इसी से प्रारंभ होती हैं।
सिमेंटिक चंकिंग: यह वाक्यों के एम्बेडिंग को देखता है और जहां विषय परिवर्तन होता है वहां उन्हें विभाजित करता है। यह उच्चतम गुणवत्ता वाला लेकिन सबसे महंगा तरीका है; बड़ी मात्रा के साथ, लेनदेन लागत बढ़ जाती है।
संरचना-जागरूक: शीर्षकों, अनुभागों, तालिकाओं जैसी दस्तावेज़ संरचना का उपयोग करता है। उदाहरण के लिए, मार्कडाउन दस्तावेज़ को शीर्षकों द्वारा विभाजित करना यह सुनिश्चित करता है कि प्रत्येक भाग का अपना शीर्षक हो।
दस्तावेज़ प्रकार द्वारा अनुकूलन
हर दस्तावेज़ एक जैसा नहीं होता. रणनीति प्रकार के अनुसार भिन्न होती है:
- पीडीएफ/नीति पाठ: बुकमार्क-आधारित, मध्यम आकार। पृष्ठ को ऊपर/नीचे दोहराते हुए साफ़ करें (शीर्ष लेख/पाद लेख)।
- तालिकाएँ: पंक्ति को संदर्भ से बाहर न लें; प्रत्येक पंक्ति को हेडर जानकारी के साथ रखें ("आइटम: एक्स, मूल्य: वाई, स्टॉक: जेड")। कच्ची तालिका को सादे पाठ में परिवर्तित करना अक्सर आवश्यक होता है।
- कोड: फ़ंक्शन/वर्ग सीमाओं द्वारा विभाजित; किसी फ़ंक्शन को रास्ते से न हटाएं.
- चैट/टिकट रिकॉर्डिंग: संदेश या बातचीत के दौर से विभाजित; किसने क्या कहा, इसकी जानकारी रखें.
# ब्रैकेट-आधारित चंकिंग (वैचारिक) खंड = बोल (पाठ, लक्ष्य_आकार = 450, # टोकन ओवरलैप = 70, # टोकन ब्रैकेट = ["\n\n", "\n", ". ", " "] # पैराग्राफ पहले, शब्द अंतिम)
प्रत्येक ट्रैक में मेटाडेटा जोड़ें
चंकिंग सिर्फ "विभाजन" नहीं है; प्रत्येक टुकड़े को समृद्ध करना है। आपके द्वारा ट्रैक पर लगाया गया प्रत्येक टैग भविष्य में फ़िल्टरिंग और स्रोत उद्धरण के लिए सोने में उसके वजन के लायक है।
# समृद्ध हिस्सा (वैचारिक) { "पाठ": "1-5 साल की सेवा के साथ वार्षिक भुगतान अवकाश 14 दिन है...", "मेटाडेटा": { "स्रोत": "ik_el_kitabi_v7.pdf", "अनुभाग": "5.2 वार्षिक अवकाश", "पेज": 23, "दिनांक": "2025-06", "विभाग": "आईके", "गोपनीयता": "आंतरिक" }}
एक अन्य शक्तिशाली तकनीक एक प्रासंगिक शीर्षलेख जोड़ना है: प्रत्येक भाग की शुरुआत में उस अध्याय का शीर्षक लिखना जिससे वह संबंधित है। इस प्रकार, "14 दिनों के लिए" जैसा एक असंबद्ध टुकड़ा भी "वार्षिक अवकाश - 14 दिन" के रूप में बेहतर अंतर्निहित और अधिक सार्थक है।
कमजोर चंकिंग / मजबूत चंकिंग
कमज़ोर (ब्लाइंड हार्डकट, कोई मेटाडेटा नहीं):
प्रत्येक 1000 वर्णों पर पाठ को छोटा करें। केवल पाठ रखें। # परिणाम: तालिकाएँ बीच में विभाजित हैं, "14 दिन" बिना संदर्भ के रहता है, # यह ज्ञात नहीं है कि यह किस दस्तावेज़ से आया है, कोई फ़िल्टर नहीं बनाया जा सकता है।
शक्तिशाली (संरचना-जागरूक + हेडर + मेटाडेटा):
दस्तावेज़ को शीर्षकों द्वारा विभाजित करें; प्रत्येक भाग में अनुभाग शीर्षक जोड़ें; स्रोत, पृष्ठ, दिनांक और गोपनीयता मेटाडेटा संलग्न करें; तालिका पंक्तियों को उनके हेडर के साथ सादे पाठ में परिवर्तित करें। # परिणाम: केंद्रित, प्रासंगिक, फ़िल्टर करने योग्य, स्रोत योग्य।
तीन मिनी मामले
केस 1 - पेंटिंग आपदा। एक वित्त टीम ने 200 पेज की मूल्य सूची को अंधी कड़ी कटिंग के साथ विभाजित किया; तालिका पंक्तियाँ बेतरतीब ढंग से विभाजित थीं। "उत्पाद X की कीमत क्या है?" मॉडल ने गलत लाइन पढ़ी और गलत कीमत दी (12 में से 9 मामले गलत हैं)। जब मैंने तालिका पंक्तियों को "उत्पाद: ... | मूल्य: ... | इकाई: ..." प्रारूप में सादे पाठ में परिवर्तित किया तो त्रुटि घटकर 12 में से 0 हो गई।
केस 2 - बहुत बड़ा हिस्सा। विकि में, प्रत्येक पृष्ठ एक एकल खंड (कुछ कहते हैं 3,000 टोकन) से बना होता है। एम्बेडिंग धुंधली है क्योंकि एक पृष्ठ पर "छुट्टी", "ओवरटाइम" और "पेरोल" है; छुट्टी के सवाल को लेकर काम के घंटों का अनुभाग भी चलन में आया। जब पृष्ठों को शीर्षक के आधार पर मध्यम आकार में विभाजित किया गया, तो रिकॉल@5 64% से बढ़कर 91% हो गया।
केस 3 - ओवरलैप के बिना छोटा वाक्य। कानूनी टीम के लिए 250 टोकन निश्चित कट, कोई ओवरलैप नहीं। एक आलोचनात्मक परिभाषा ठीक दो भागों की सीमा पर गिरी और दो भागों में विभाजित हो गई; न तो किसी में और न ही दूसरे में पूरा उत्तर है। जब 60 टोकन ओवरलैप जोड़े गए, तो वही परिभाषा एक टुकड़े में बरकरार रही और सही उत्तर लौटाया गया।
सामान्य गलतियाँ
- ब्लाइंड फिक्स्ड कट: वाक्यों और तालिकाओं को बीच में विभाजित करता है; अर्थ खो गया है.
- ओवरलैप को शून्य पर छोड़ना: सीमा पर पड़ने वाली जानकारी विभाजित और खो जाती है।
- मेटाडेटा न जोड़ना: फ़िल्टर करना और स्रोत प्रदर्शन असंभव हो जाता है।
- तालिकाओं को कच्चा छोड़ना: मॉडल तालिका संरचना का समाधान नहीं कर सकता; पंक्तियों को सादे पाठ में बदलें.
- एक रणनीति लागू करना: पीडीएफ, कोड और तालिका को एक ही विधि से विभाजित नहीं किया जाता है; शैली के अनुरूप ढलें.
सावधानी: चंकिंग को एक बार सेट करके भूल न जाएं। नए दस्तावेज़ प्रकार आने पर पुनर्प्राप्ति गुणवत्ता को फिर से मापें (नए सिस्टम से टिकट, स्कैन किए गए पीडीएफ)। खराब इनपुट डेटा का मतलब है खराब प्रतिक्रिया ("कचरा अंदर, कचरा बाहर")।
संक्षेप में
- चंक पुनर्प्राप्ति की सबसे छोटी इकाई है; न तो बहुत बड़ा और न ही बहुत छोटा - यह सामग्री के अनुसार संतुलित होना चाहिए।
- खंड का आकार फोकस-संदर्भ संतुलन को इंगित करता है; ओवरलैप सीमा हानि का प्रबंधन करता है।
- ब्रैकेट-आधारित और संरचना-जागरूक चंकिंग अधिकांश पीढ़ी प्रणालियों का प्रारंभिक बिंदु है; सिमेंटिक चंकिंग अच्छी गुणवत्ता वाली है लेकिन महंगी है।
- टेबल, स्क्रिप्ट और चैट जैसे प्रकारों को अपनी रणनीतियों की आवश्यकता होती है; तालिकाओं को सादे पाठ में बदलें.
- प्रत्येक ट्रैक में स्रोत/दिनांक/अध्याय/गोपनीयता मेटाडेटा और अनुभाग शीर्षक जोड़ें; यह फ़िल्टरिंग और उद्धरण का आधार है।
आवेदन कार्य
आपके द्वारा चुने गए दस्तावेज़ के एक भाग को तीन अलग-अलग तरीकों से तोड़ें: (1) 200 टोकन के छोटे टुकड़े, (2) 500 टोकन के मध्यम टुकड़े (70 टोकन ओवरलैप), (3) एकल बड़े टुकड़े। प्रत्येक रणनीति के लिए समान 3 प्रश्न पूछें, मैन्युअल रूप से चिह्नित करें कि कौन सा भाग लाना है, और उस दस्तावेज़ के लिए कौन सी रणनीति सबसे अच्छा काम करती है, इसका कारण लिखें। फिर प्रत्येक ट्रैक में कम से कम चार मेटाडेटा फ़ील्ड और एक "अध्याय शीर्षक" जोड़ें। यदि दस्तावेज़ में एक तालिका है, तो तालिका पंक्ति को "फ़ील्ड: मान" प्रारूप में सादे पाठ में परिवर्तित करें।
चेकलिस्ट
- [ ] मैं बता सकता हूं कि खंड पुनर्प्राप्ति की सबसे छोटी इकाई है और आकार फोकस-संदर्भ संतुलन है।
- [ ] मैं जानता हूं कि ओवरलैप सीमा हानि को क्यों रोकता है।
- [ ] मैं ब्रैकेट-आधारित, सिमेंटिक और संरचना-जागरूक चंकिंग के बीच अंतर कर सकता हूं।
- [ ] मैं टेबल, कोड और चैट के लिए रणनीति को अनुकूलित कर सकता हूं।
- [ ] मैं प्रत्येक ट्रैक में मेटाडेटा और अध्याय शीर्षक जोड़कर पुनर्प्राप्ति को सुदृढ़ करता हूं।