2024 के मध्य में, एक ऐसा AI डेमो बनाना आसान हो सकता है जो प्रभावित और उत्साहित करे। आप अक्सर दोपहर में एक कस्टम AI बॉट बना सकते हैं। हालाँकि, उत्पादन तक पहुँचना एक और मामला है। आपको एक विश्वसनीय, अवलोकन योग्य, ट्यून करने योग्य और प्रदर्शन करने वाला सिस्टम चाहिए होगा।
People Mentioned
Companies Mentioned
2024 के मध्य में, एक ऐसा AI डेमो बनाना आसान हो सकता है जो प्रभावित करे और उत्साहित करे। एक मजबूत डेवलपर, कुछ चतुर प्रॉम्प्ट प्रयोग, और एक शक्तिशाली फाउंडेशन मॉडल के लिए कुछ API कॉल लें और आप अक्सर दोपहर में एक कस्टम AI बॉट बना सकते हैं। लाइब्रेरी में जोड़ें जैसे या आरएजी का उपयोग करके अपने एलएलएम को कुछ कस्टम डेटा के साथ बढ़ाने के लिए - और दोपहर का काम एक सप्ताहांत परियोजना में बदल सकता है।
हालाँकि, उत्पादन तक पहुँचना एक और मामला है। आपको बड़े पैमाने पर एक विश्वसनीय, अवलोकन योग्य, ट्यून करने योग्य और प्रदर्शन करने वाले सिस्टम की आवश्यकता होगी। यह आवश्यक होगा कि आप मनगढ़ंत डेमो परिदृश्यों से परे जाएँ और वास्तविक ग्राहक व्यवहार के पूर्ण स्पेक्ट्रम का प्रतिनिधित्व करने वाले संकेतों की एक विस्तृत श्रृंखला के लिए अपने एप्लिकेशन की प्रतिक्रिया पर विचार करें। LLM को डोमेन-विशिष्ट ज्ञान के समृद्ध कोष तक पहुँच की आवश्यकता हो सकती है जो अक्सर इसके पूर्व-प्रशिक्षण डेटासेट से अनुपस्थित होता है। अंत में, यदि आप AI को ऐसे उपयोग के मामले में लागू करते हैं जहाँ सटीकता मायने रखती है, तो भ्रम का पता लगाया जाना चाहिए, निगरानी की जानी चाहिए और उसे कम किया जाना चाहिए।
इन सभी समस्याओं को हल करना कठिन लग सकता है, लेकिन अपने RAG-आधारित एप्लिकेशन को उसके संबंधित वैचारिक भागों में विघटित करके और फिर आवश्यकतानुसार प्रत्येक को बेहतर बनाने के लिए लक्षित और पुनरावृत्त दृष्टिकोण अपनाकर इसे और अधिक प्रबंधनीय बनाया जा सकता है। यह पोस्ट आपको ऐसा करने में मदद करेगी। इसमें, हम विशेष रूप से RAG दस्तावेज़ प्रसंस्करण पाइपलाइन बनाने के लिए उपयोग की जाने वाली तकनीकों पर ध्यान केंद्रित करेंगे, न कि उन तकनीकों पर जो पुनर्प्राप्ति समय पर डाउनस्ट्रीम में होती हैं। ऐसा करने में, हमारा उद्देश्य जनरेटिव AI एप्लिकेशन डेवलपर्स को प्रोटोटाइप से उत्पादन तक की यात्रा के लिए खुद को बेहतर ढंग से तैयार करने में मदद करना है।
आधुनिक डेटा लेक: एआई इंफ्रास्ट्रक्चर के लिए गुरुत्वाकर्षण का केंद्र
यह अक्सर कहा जाता है कि AI के युग में - डेटा ही आपकी खाई है। उस उद्देश्य के लिए, उत्पादन-ग्रेड RAG एप्लिकेशन का निर्माण करने के लिए आपके स्वामित्व वाले कॉर्पस में शामिल डेटा के खंडों को संग्रहीत, संस्करण, प्रक्रिया, मूल्यांकन और क्वेरी करने के लिए उपयुक्त डेटा अवसंरचना की आवश्यकता होती है। चूंकि MinIO AI के लिए डेटा-प्रथम दृष्टिकोण अपनाता है, इसलिए इस प्रकार की परियोजना के लिए हमारी डिफ़ॉल्ट प्रारंभिक अवसंरचना अनुशंसा एक आधुनिक डेटा झील और एक वेक्टर डेटाबेस स्थापित करना है। जबकि अन्य सहायक उपकरणों को रास्ते में प्लग इन करने की आवश्यकता हो सकती है, ये दो अवसंरचना इकाइयाँ मूलभूत हैं। वे आपके RAG एप्लिकेशन को उत्पादन में लाने में आने वाले लगभग सभी कार्यों के लिए गुरुत्वाकर्षण के केंद्र के रूप में काम करेंगे।
मिनियो पर निर्मित एक आधुनिक डेटा लेक संदर्भ आर्किटेक्चर पाया जा सकता है एक साथी पेपर यह दर्शाता है कि यह आर्किटेक्चर सभी AI/ML कार्यभारों का समर्थन कैसे करता है। .
RAG: दस्तावेज़ पाइपलाइन चरण
मूल्यांकन
उत्पादन-ग्रेड RAG एप्लिकेशन बनाने के लिए एक महत्वपूर्ण प्रारंभिक चरण एक मूल्यांकन ढांचा स्थापित करना है - जिसे अक्सर केवल evals के रूप में संदर्भित किया जाता है। evals के बिना, आपके पास यह समझने का कोई विश्वसनीय तरीका नहीं होगा कि आपका सिस्टम कितना अच्छा प्रदर्शन कर रहा है, यह जानने के लिए कि किन घटकों को ट्यून करने की आवश्यकता है, या यह निर्धारित करने के लिए कि क्या आप वास्तविक प्रगति कर रहे हैं। इसके अतिरिक्त, evals उस समस्या को स्पष्ट करने के लिए एक बल देने वाले फ़ंक्शन के रूप में कार्य करते हैं जिसे आप हल करने का प्रयास कर रहे हैं। यहाँ कुछ सबसे आम मूल्यांकन तकनीकें दी गई हैं:
अनुमानी कोड-आधारित मूल्यांकन - आउटपुट टोकन गणना, कीवर्ड उपस्थिति/अनुपस्थिति, JSON वैधता आदि जैसे विभिन्न मापों का उपयोग करके प्रोग्रामेटिक रूप से आउटपुट स्कोरिंग। इनका अक्सर पारंपरिक इकाई परीक्षण के लिए नियमित अभिव्यक्तियों और अभिकथन पुस्तकालयों का उपयोग करके निर्धारणात्मक रूप से मूल्यांकन किया जा सकता है।
एल्गोरिदमिक कोड-आधारित मूल्यांकन - विभिन्न प्रसिद्ध डेटा विज्ञान मीट्रिक का उपयोग करके आउटपुट स्कोर करना। उदाहरण के लिए, प्रॉम्प्ट को रैंकिंग समस्या के रूप में फिर से तैयार करके, आप अनुशंसा प्रणाली से लोकप्रिय स्कोरिंग फ़ंक्शन का उपयोग कर सकते हैं, जैसे कि सामान्यीकृत छूट प्राप्त संचयी लाभ (NDCG) या औसत पारस्परिक रैंक (MRR)। इसके विपरीत, यदि प्रॉम्प्ट को वर्गीकरण समस्या के रूप में तैयार किया जा सकता है, तो परिशुद्धता, रिकॉल और F1 स्कोर उपयुक्त हो सकते हैं। अंत में, आप सिमेंटिक आउटपुट की तुलना ज्ञात ग्राउंड ट्रुथ से करने के लिए BLEU, ROUGE और सिमेंटिक उत्तर समानता (SAS) जैसे उपायों का उपयोग कर सकते हैं।
मॉडल-आधारित मूल्यांकन - एक मॉडल का उपयोग दूसरे के आउटपुट को स्कोर करने के लिए करें जैसा कि विवरण में बताया गया है कागज़। यह तकनीक लोकप्रियता में बढ़ रही है और मनुष्यों की तुलना में इसे स्केल करना बहुत सस्ता है। हालाँकि, किसी प्रोजेक्ट को प्रोटोटाइप से उत्पादन में ले जाने के शुरुआती चरणों में, इसे विश्वसनीय रूप से लागू करना मुश्किल हो सकता है क्योंकि इस मामले में मूल्यांकनकर्ता एक एलएलएम है जो अक्सर अंतर्निहित प्रणाली के समान सीमाओं और पूर्वाग्रहों के अधीन होता है। इस क्षेत्र के शोध, टूलिंग और सर्वोत्तम प्रथाओं पर कड़ी नज़र रखें, क्योंकि वे तेज़ी से विकसित हो रहे हैं।
मानव मूल्यांकन - मानव डोमेन विशेषज्ञों से उनका सर्वोत्तम उत्तर देने के लिए कहना आम तौर पर स्वर्ण मानक है। हालाँकि यह विधि धीमी और महंगी है, लेकिन इसे अनदेखा नहीं किया जाना चाहिए, क्योंकि यह अंतर्दृष्टि प्राप्त करने और आपके प्रारंभिक मूल्यांकन डेटा सेट के निर्माण के लिए अमूल्य हो सकता है। यदि आप किए गए कार्य से अतिरिक्त लाभ चाहते हैं, तो आप उन तकनीकों का उपयोग कर सकते हैं जिनका विवरण नीचे दिया गया है। अपने मानव-विशेषज्ञ-जनित मूल्यांकन को सिंथेटिक विविधताओं के साथ पूरक करने के लिए पेपर।
मूल्यांकन तकनीकों का उपयोग करने के बारे में अपने निर्णय के साथ, एक कस्टम बेंचमार्क मूल्यांकन डेटासेट बनाने पर विचार करें - सामान्य रूप से हगिंग फेस लीडरबोर्ड जैसे कि डेटासेट काम नहीं करेगा। आपके कस्टम इवैल डेटासेट में कई तरह के प्रॉम्प्ट और उनके आदर्श उत्तर होंगे जो डोमेन-विशिष्ट होंगे और आपके वास्तविक ग्राहकों द्वारा आपके एप्लिकेशन में इनपुट किए जाने वाले प्रॉम्प्ट के प्रकारों का प्रतिनिधित्व करेंगे। आदर्श रूप से, मूल्यांकन डेटासेट बनाने में सहायता के लिए मानव विशेषज्ञ उपलब्ध हैं, लेकिन यदि नहीं तो इसे स्वयं करने पर विचार करें। यदि आपको यह अनुमान लगाने में आत्मविश्वास नहीं है कि कौन से प्रॉम्प्ट संभावित हैं, तो बस एक ऑपरेटिंग परिकल्पना बनाएं और आगे बढ़ें जैसे कि इसे मान्य किया गया हो। आप बाद में अपनी परिकल्पनाओं को लगातार संशोधित कर सकते हैं क्योंकि अधिक डेटा उपलब्ध होता है।
अपने eval डेटासेट में प्रत्येक पंक्ति के लिए इनपुट प्रॉम्प्ट पर प्रतिबंध लगाने पर विचार करें ताकि LLM एक ठोस निर्णय प्रकार के साथ उत्तर दे: बाइनरी, श्रेणीबद्ध, रैंकिंग, संख्यात्मक, या पाठ। निर्णय प्रकारों का मिश्रण आपके evals को यथोचित रूप से विविधतापूर्ण बनाए रखेगा और आउटपुट पूर्वाग्रह को कम करेगा। अन्य सभी चीजें समान रहने पर, अधिक मूल्यांकन परीक्षण मामले बेहतर होते हैं; हालाँकि, इस चरण में मात्रा से अधिक गुणवत्ता पर ध्यान केंद्रित करने की अनुशंसा की जाती है। LLM में फाइन-ट्यूनिंग पर हाल ही में किए गए शोध पेपर से पता चलता है कि 1000 पंक्तियों का एक छोटा सा eval डेटासेट भी आउटपुट की गुणवत्ता में नाटकीय रूप से सुधार कर सकता है, बशर्ते कि वे वास्तविक व्यापक जनसंख्या के प्रतिनिधि नमूने हों। RAG अनुप्रयोगों के साथ, हमने दर्जनों से लेकर सैकड़ों पंक्तियों वाले eval डेटासेट का उपयोग करके प्रदर्शन में सुधार देखा है।
जबकि आप अपने इवैल को एड-हॉक आधार पर मैन्युअल रूप से चलाना शुरू कर सकते हैं, अपने इवैल स्कोरिंग प्रक्रिया के निष्पादन को स्वचालित करने के लिए CI/CD पाइपलाइन को लागू करने से पहले बहुत लंबा इंतजार न करें। रोजाना या सोर्स कोड रिपॉजिटरी और ऑब्जर्वेबिलिटी टूलिंग से जुड़े ट्रिगर्स पर इवैल चलाना आम तौर पर ML-ऑप्स का सबसे अच्छा अभ्यास माना जाता है। ओपन-सोर्स RAG मूल्यांकन फ्रेमवर्क का उपयोग करने पर विचार करें जैसे या आपको जल्दी से जल्दी शुरू करने में मदद करने के लिए। अपने डेटा लेक का उपयोग उन तालिकाओं के लिए सत्य के स्रोत के रूप में करें जिनमें संस्करणित मूल्यांकन डेटासेट और प्रत्येक बार eval निष्पादित होने पर उत्पन्न होने वाले विभिन्न आउटपुट मेट्रिक्स दोनों शामिल हैं। यह डेटा बाद में परियोजना में रणनीतिक और अत्यधिक लक्षित सुधार करने के लिए उपयोग करने के लिए मूल्यवान अंतर्दृष्टि प्रदान करेगा।
डेटा एक्सट्रैक्टर्स
जिस RAG कॉर्पस से आप शुरुआत में प्रोटोटाइप बनाना शुरू करते हैं, वह शायद ही कभी आपको उत्पादन तक पहुँचाने के लिए पर्याप्त होता है। आपको LLM को भ्रम, चूक और समस्याग्रस्त प्रकार के पूर्वाग्रहों को कम करने में मदद करने के लिए निरंतर आधार पर अपने कॉर्पस को अतिरिक्त डेटा के साथ बढ़ाने की आवश्यकता होगी। यह आमतौर पर एक्सट्रैक्टर और लोडर बनाकर केस-दर-केस किया जाता है जो अपस्ट्रीम डेटा को ऐसे प्रारूप में परिवर्तित करते हैं जिसे डाउनस्ट्रीम दस्तावेज़ पाइपलाइन में आगे संसाधित किया जा सकता है।
हालाँकि ज़रूरत से ज़्यादा डेटा इकट्ठा करके समुद्र को उबालने की कोशिश करने का एक छोटा सा जोखिम है, लेकिन रचनात्मक होना और अपनी कंपनी के लिए गुणवत्तापूर्ण जानकारी के स्रोतों के बारे में सोचना ज़रूरी है। स्पष्ट संभावनाओं में आपके कॉर्पोरेट OLTP और डेटा वेयरहाउस में संग्रहीत संरचित डेटा से अंतर्दृष्टि निकालना शामिल हो सकता है। कॉर्पोरेट ब्लॉग पोस्ट, श्वेतपत्र, प्रकाशित शोध और ग्राहक सहायता पूछताछ जैसे स्रोतों पर भी विचार किया जाना चाहिए, बशर्ते उन्हें उचित रूप से गुमनाम किया जा सके और संवेदनशील जानकारी को हटाया जा सके। अपने कॉर्पस में गुणवत्ता वाले इन-डोमेन डेटा की थोड़ी मात्रा को भी जोड़ने के सकारात्मक प्रदर्शन प्रभाव को बढ़ा-चढ़ाकर बताना मुश्किल है, इसलिए खोजबीन, प्रयोग और पुनरावृत्ति में समय बिताने से न डरें। यहाँ कुछ ऐसी तकनीकें दी गई हैं जिनका इस्तेमाल आमतौर पर उच्च-गुणवत्ता वाले इन-डोमेन कॉर्पस को बूटस्ट्रैप करने के लिए किया जाता है:
दस्तावेज़ निष्कर्षण - मालिकाना पीडीएफ, कार्यालय दस्तावेज़, प्रस्तुतियाँ और मार्कडाउन फ़ाइलें जानकारी के समृद्ध स्रोत हो सकती हैं। इस डेटा को निकालने के लिए ओपन-सोर्स और SaaS टूल का एक विशाल पारिस्थितिकी तंत्र मौजूद है। आम तौर पर, डेटा एक्सट्रैक्टर फ़ाइल-प्रकार विशिष्ट (JSON, CSV, docx, आदि), OCR-आधारित या मशीन लर्निंग और कंप्यूटर-विज़न एल्गोरिदम द्वारा संचालित होते हैं। सरल शुरुआत करें और केवल आवश्यकतानुसार जटिलता जोड़ें।
API निष्कर्षण - सार्वजनिक और निजी API इन-डोमेन ज्ञान के समृद्ध स्रोत हो सकते हैं। इसके अलावा, अच्छी तरह से डिज़ाइन किए गए JSON और XML-आधारित वेब API में पहले से ही कुछ अंतर्निहित संरचना होती है, जिससे पेलोड के भीतर प्रासंगिक गुणों का लक्षित निष्कर्षण करना आसान हो जाता है जबकि अप्रासंगिक समझी जाने वाली किसी भी चीज़ को त्याग दिया जाता है। किफायती लो-कोड और नो-कोड API कनेक्टर का एक विशाल पारिस्थितिकी तंत्र मौजूद है जो आपको प्रत्येक API के लिए कस्टम ETL लिखने से बचने में मदद करता है - एक ऐसा दृष्टिकोण जिसे डेटा इंजीनियरों की एक समर्पित टीम के बिना बनाए रखना और स्केल करना मुश्किल हो सकता है।
वेब स्क्रैपर - वेबपेज को ट्री-लाइक DOM संरचना के साथ अर्ध-संरचित डेटा माना जाता है। यदि आप जानते हैं कि आप किस जानकारी की तलाश में हैं, यह कहाँ स्थित है, और पेज लेआउट जहाँ यह रहता है, तो आप बिना किसी अच्छी तरह से प्रलेखित API के भी इस डेटा का उपभोग करने के लिए जल्दी से एक स्क्रैपर बना सकते हैं। वेब स्क्रैपिंग के लिए मूल्यवान सार प्रदान करने के लिए कई स्क्रिप्टिंग लाइब्रेरी और लो-कोड टूल मौजूद हैं।
वेब क्रॉलर - वेब क्रॉलर वेबपेजों को पार कर सकते हैं और पुनरावर्ती URL सूचियाँ बना सकते हैं। इस विधि को आपके मानदंडों के आधार पर जानकारी को स्कैन करने, सारांशित करने और फ़िल्टर करने के लिए स्क्रैपिंग के साथ जोड़ा जा सकता है। अधिक महत्वपूर्ण पैमाने पर, इस तकनीक का उपयोग अपना स्वयं का ज्ञान ग्राफ़ बनाने के लिए किया जा सकता है।
डेटा संग्रह के लिए आप जो भी तकनीक इस्तेमाल करते हैं, हैक की गई एक-बार की स्क्रिप्ट बनाने की इच्छा का विरोध करें। इसके बजाय, डेटा इंजीनियरिंग के सर्वोत्तम अभ्यासों को दोहराए जाने योग्य और दोष-सहिष्णु ETL पाइपलाइनों के रूप में एक्सट्रैक्टर्स को तैनात करने के लिए लागू करें जो आपके डेटा लेक के अंदर तालिकाओं में डेटा को लैंड करते हैं। सुनिश्चित करें कि हर बार जब आप इन पाइपलाइनों को चलाते हैं - स्रोत URL और निष्कर्षण के समय जैसे प्रमुख मेटाडेटा तत्व - प्रत्येक सामग्री के साथ कैप्चर और लेबल किए जाते हैं। मेटाडेटा कैप्चर डाउनस्ट्रीम डेटा क्लीनिंग, फ़िल्टरिंग, डीडुप्लीकेशन, डिबगिंग और एट्रिब्यूशन के लिए अमूल्य साबित होगा।
ठस
चंकिंग बड़े टेक्स्ट सैंपल को छोटे असतत टुकड़ों में घटा देता है जो LLM के संदर्भ विंडो के अंदर फिट हो सकते हैं। जबकि संदर्भ विंडो बड़ी होती जा रही है - अनुमान के दौरान सामग्री के अधिक हिस्सों को भरने की अनुमति देती है - सटीकता, याद और कम्प्यूटेशनल दक्षता के बीच सही संतुलन बनाने के लिए चंकिंग एक महत्वपूर्ण रणनीति बनी हुई है।
प्रभावी चंकिंग के लिए उचित चंक आकार का चयन करना आवश्यक है। बड़े चंक आकार संदर्भ विंडो के भीतर कम कुल चंक को मौजूद रहने की अनुमति देने की कीमत पर पाठ के संदर्भ और अर्थपूर्ण अर्थ के एक हिस्से को संरक्षित करते हैं। इसके विपरीत, छोटे चंक आकार LLM की संदर्भ विंडो में सामग्री के अधिक असतत खंडों को भरने की अनुमति देंगे। हालांकि, अतिरिक्त गार्डरेल के बिना, सामग्री का प्रत्येक टुकड़ा अपने आस-पास के संदर्भ से हटाए जाने पर कम गुणवत्ता का जोखिम उठाता है।
चंक साइज़ के अलावा, आपको विभिन्न चंकिंग रणनीतियों और विधियों का मूल्यांकन करने की आवश्यकता होगी। यहाँ कुछ मानक चंकिंग विधियाँ दी गई हैं जिन पर विचार किया जाना चाहिए:
निश्चित आकार की रणनीति - इस विधि में, हम अपने कंटेंट के लिए बस एक निश्चित संख्या में टोकन चुनते हैं और उसके अनुसार अपने कंटेंट को छोटे-छोटे टुकड़ों में विभाजित करते हैं। आम तौर पर, इस रणनीति का उपयोग करते समय बहुत अधिक संदर्भ खोने से बचने के लिए आसन्न टुकड़ों के बीच कुछ ओवरलैप की सिफारिश की जाती है। यह सबसे सरल चंकिंग रणनीति है और आम तौर पर अधिक परिष्कृत रणनीतियों में आगे बढ़ने से पहले एक अच्छा प्रारंभिक बिंदु है।
गतिशील आकार रणनीति - यह विधि विभिन्न सामग्री विशेषताओं का उपयोग करके यह निर्धारित करती है कि किसी खंड को कहाँ से शुरू और कहाँ से रोकना है। इसका एक सरल उदाहरण विराम चिह्न चंकर होगा, जो अवधि और नई पंक्तियों जैसे विशिष्ट वर्णों की उपस्थिति के आधार पर वाक्यों को विभाजित करता है। जबकि विराम चिह्न चंकर सीधी-सादी छोटी सामग्री (जैसे, ट्वीट, वर्ण-सीमित उत्पाद विवरण, आदि) के लिए उचित रूप से काम कर सकता है, लेकिन अगर इसे लंबी और अधिक जटिल सामग्री के लिए उपयोग किया जाता है, तो इसमें स्पष्ट कमियाँ होंगी।
सामग्री-जागरूक रणनीति - सामग्री-जागरूक चंकर्स को निकाली जा रही सामग्री और मेटाडेटा के प्रकार के अनुसार ट्यून किया जाता है और इन विशेषताओं का उपयोग यह निर्धारित करने के लिए किया जाता है कि प्रत्येक चंक को कहाँ से शुरू और कहाँ से रोकना है। एक उदाहरण HTML ब्लॉग के लिए एक चंकर हो सकता है जो खंड सीमाओं को चित्रित करने के लिए हेडर टैग का उपयोग करता है। एक और उदाहरण एक सिमेंटिक चंकर हो सकता है जो प्रत्येक वाक्य के युग्मित कोसाइन समानता स्कोर की तुलना उसके पूर्ववर्ती पड़ोसियों से करता है ताकि यह निर्धारित किया जा सके कि संदर्भ में कब इतना बदलाव आया है कि एक नए खंड के चित्रण की आवश्यकता है।
आपके RAG एप्लिकेशन के लिए इष्टतम चंकिंग रणनीति को LLM की संदर्भ विंडो की लंबाई, अंतर्निहित पाठ संरचना, पाठ की लंबाई और आपके कॉर्पस में सामग्री की जटिलता के अनुसार ट्यून किया जाना चाहिए। विभिन्न चंकिंग रणनीतियों के साथ उदारतापूर्वक प्रयोग करें और किसी दिए गए रणनीति के लिए एप्लिकेशन प्रदर्शन को बेहतर ढंग से समझने के लिए प्रत्येक परिवर्तन के बाद अपने मूल्यांकन चलाएं। अपने डेटा लेक टेबल में अपनी चंक की गई सामग्री का संस्करण बनाएं और सुनिश्चित करें कि प्रत्येक चंक में वंशावली जानकारी है ताकि इसे अपस्ट्रीम डेटा निष्कर्षण चरण से कच्ची सामग्री और उसके संबंधित मेटाडेटा पर वापस ट्रेस किया जा सके।
समृद्ध
कई मामलों में, RAG के दौरान पुनर्प्राप्ति के लिए अनुक्रमित सामग्री खंड वास्तविक संकेतों से प्रासंगिक रूप से भिन्न होते हैं, जिनका सामना आपका एप्लिकेशन उत्पादन में करेगा। उदाहरण के लिए, यदि आप एक AI प्रश्न-उत्तर देने वाला बॉट बना रहे हैं, तो आपके पास स्वामित्व वाली जानकारी का एक विशाल कोष हो सकता है, जिसमें ग्राहक प्रश्नों के कई सही उत्तर शामिल हैं। हालाँकि, अपने कच्चे रूप में, आपके कोष को प्रश्न-उत्तर जोड़े के प्रारूप में पूर्व-संगठित होने की संभावना नहीं है, जो समानता-आधारित एम्बेडिंग पुनर्प्राप्ति के लिए आदर्श है। इस उदाहरण में, यदि पुनर्प्राप्ति के समय, हम अपने कोष में कच्ची सामग्री के ऐसे खंडों की खोज करते हैं जो अर्थपूर्ण रूप से इनबाउंड ग्राहक प्रश्न के समान हैं, तो हमें पुनर्प्राप्ति परिणाम-सेट की उप-इष्टतम प्रासंगिकता का सामना करना पड़ सकता है। यह इस तथ्य का परिणाम है कि हम संदर्भगत रूप से भिन्न वस्तुओं की समानता की तुलना कर रहे हैं - अर्थात उत्तरों के लिए प्रश्न। सौभाग्य से, समाधान अपेक्षाकृत सरल है: हम अपने संभावित उत्तरों को समृद्ध करने के लिए LLM की शक्ति का उपयोग कर सकते हैं - जिसे कच्ची सामग्री खंड भी कहा जाता है - उन्हें काल्पनिक प्रश्नों में पुन: संदर्भित करके। फिर हम उन काल्पनिक प्रश्नों को बाद में पुनः प्राप्ति के लिए अपने वेक्टर डेटाबेस में अनुक्रमित करते हैं। इस तकनीक को कहा जाता है , दस्तावेज़ प्रसंस्करण पाइपलाइन के भीतर अपने डेटा को समृद्ध करने के लिए एलएलएम का उपयोग करने की शक्ति को दर्शाता है। यहाँ प्रसिद्ध से कुछ सामग्री पर इस तकनीक का उपयोग करने का एक उदाहरण दिया गया है :
System Prompt: Given the provided snippet of text, generate three hypothetical questions that could be asked about it. Each question must be able to be answered using the information within the referenced snippet of text and only that information. Be concise. User Prompt: “At the 52nd Annual Grammy Awards, Beyoncé received ten nominations, including Album of the Year for I Am... Sasha Fierce, Record of the Year for "Halo", and Song of the Year for "Single Ladies (Put a Ring on It)", among others. She tied with Lauryn Hill for most Grammy nominations in a single year by a female artist. In 2010, Beyoncé was featured on Lady Gaga's single "Telephone" and its music video. The song topped the US Pop Songs chart, becoming the sixth number-one for both Beyoncé and Gaga, tying them with Mariah Carey for most number-ones since the Nielsen Top 40 airplay chart launched in 1992. "Telephone" received a Grammy Award nomination for Best Pop Collaboration with Vocals.” Response: Here are some questions that could be asked based on the provided text: * How many nominations did Beyoncé receive at the 52nd Annual Grammy Awards? * For which album was Beyoncé nominated for Album of the Year at the 52nd Annual Grammy Awards? * Which song earned Beyoncé a nomination for Record of the Year at the 52nd Annual Grammy Awards?
यदि आप लंबे-फ़ॉर्म और/या विषयगत रूप से जटिल सामग्री से बने कॉर्पस के साथ काम कर रहे हैं, तो सामग्री के खंडों को पूर्व-सारांशित करने के लिए अतिरिक्त प्री-प्रोसेसिंग करने पर विचार करें और इस प्रकार उनकी अर्थपूर्ण आयामता को कम करें। पुनर्प्राप्ति समय पर, आप खंड सारांशों के एम्बेडिंग को क्वेरी कर सकते हैं और फिर संदर्भ विंडो सम्मिलन के लिए गैर-सारांशित पाठ को प्रतिस्थापित कर सकते हैं। यह विधि बड़े, जटिल और/या बार-बार बदलते कॉर्पस पर RAG करते समय प्रासंगिकता को बढ़ाती है।
टोकनीकरण
2024 में बड़े भाषा मॉडल आम तौर पर ट्रांसफॉर्मर-आधारित न्यूरल नेटवर्क होते हैं जो मूल रूप से लिखित शब्द को नहीं समझते हैं। आने वाले कच्चे पाठ को टोकन में परिवर्तित किया जाता है, उसके बाद मैट्रिक्स गुणन संचालन के लिए अनुकूलित उच्च-आयामी एम्बेडिंग वैक्टर होते हैं। इस इनबाउंड प्रक्रिया को आम तौर पर एन्कोडिंग कहा जाता है। उलटी आउटबाउंड प्रक्रिया को डिकोडिंग कहा जाता है। कई LLM केवल उसी टोकनाइजेशन योजना का उपयोग करके अनुमान के लिए काम करेंगे जिस पर उन्हें प्रशिक्षित किया गया था। इसलिए, चुने गए टोकनाइजेशन रणनीति की मूल बातें समझना आवश्यक है, क्योंकि इसके कई सूक्ष्म प्रदर्शन निहितार्थ हो सकते हैं।
हालाँकि सरल वर्ण और शब्द-स्तरीय टोकनाइजेशन योजनाएँ हैं, लेकिन लगभग सभी अत्याधुनिक LLM लेखन के समय सबवर्ड टोकनाइजर का उपयोग करते हैं। नतीजतन, हम यहाँ केवल टोकनाइजर की उस श्रेणी पर ध्यान केंद्रित करेंगे।
सबवर्ड टोकनाइज़र शब्दों को पुनरावर्ती रूप से छोटी इकाइयों में तोड़ते हैं। इससे उन्हें शब्दावली के आकार को बहुत ज़्यादा बढ़ाए बिना शब्दावली से बाहर के शब्दों को समझने की अनुमति मिलती है - प्रशिक्षण प्रदर्शन और एलएलएम की अनदेखी पाठों को सामान्य बनाने की क्षमता के लिए एक महत्वपूर्ण विचार।
आज इस्तेमाल की जाने वाली एक प्रचलित सबवर्ड टोकेनाइजेशन विधि बाइट-पेयर एनकोडिंग (BPE) है। उच्च स्तर पर, BPE एल्गोरिथ्म इस तरह काम करता है:
शब्दों को उपशब्द इकाइयों के टोकन में विभाजित करें और उन्हें शब्दावली में जोड़ें। प्रत्येक टोकन प्रशिक्षण कोष के भीतर सामान्य आसन्न वर्ण पैटर्न की सापेक्ष आवृत्ति द्वारा नियंत्रित एक उपशब्द का प्रतिनिधित्व करता है।
उपरोक्त चरण से सामान्य टोकन युग्मों को युग्म का प्रतिनिधित्व करने वाले एकल टोकन से प्रतिस्थापित करें तथा उसे शब्दावली में जोड़ें।
उपरोक्त चरणों को पुनरावर्ती रूप से दोहराएं।
BPE टोकनाइजेशन आमतौर पर आपके RAG एप्लिकेशन के साथ शुरू करने के लिए एक शानदार जगह है, क्योंकि यह कई उपयोग मामलों के लिए अच्छी तरह से काम करता है। हालाँकि, मान लीजिए कि आपके पास अत्यधिक विशिष्ट डोमेन भाषा की एक महत्वपूर्ण मात्रा है जो आपके चुने हुए मॉडल के लिए उपयोग किए जाने वाले प्री-ट्रेनिंग कॉर्पस की शब्दावली में अच्छी तरह से प्रतिनिधित्व नहीं करती है। उस स्थिति में, वैकल्पिक टोकनाइजेशन विधियों पर शोध करने पर विचार करें - या फ़ाइन-ट्यूनिंग और लो-रैंक अनुकूलन की खोज करें, जो इस लेख के दायरे से परे हैं। उपर्युक्त सीमित शब्दावली समस्या चिकित्सा, कानून या अस्पष्ट प्रोग्रामिंग भाषाओं जैसे विशेष डोमेन के लिए बनाए गए अनुप्रयोगों में खराब प्रदर्शन के रूप में प्रकट हो सकती है। अधिक विशेष रूप से यह उन प्रॉम्प्ट पर प्रचलित होगा जिनमें अत्यधिक विशिष्ट भाषा/शब्दजाल शामिल हैं। आवश्यकतानुसार विभिन्न मॉडलों के साथ विभिन्न टोकनाइजेशन योजनाओं और उनके संबंधित प्रदर्शन के साथ प्रयोग करने के लिए अपने डेटा लेक में संग्रहीत eval डेटासेट का उपयोग करें। ध्यान रखें कि टोकनाइज़र, एम्बेडिंग और भाषा मॉडल अक्सर कसकर युग्मित होते हैं - इसलिए एक को बदलने से दूसरे को बदलने की आवश्यकता हो सकती है।
निष्कर्ष
मिनियो ऑब्जेक्ट स्टोर के शीर्ष पर निर्मित एक आधुनिक डेटा लेक - RAG-आधारित अनुप्रयोगों को आत्मविश्वास से उत्पादन में लाने के लिए एक आधारभूत संरचना प्रदान करता है। इसके साथ, आप evals और एक डोमेन-विशिष्ट eval डेटा सेट बना सकते हैं जिसे आपके डेटा लेक टेबल के अंदर संग्रहीत और संस्करणित किया जा सकता है। इन evals का उपयोग करके, अपने RAG एप्लिकेशन दस्तावेज़ पाइपलाइन के प्रत्येक घटक - एक्सट्रैक्टर, चंकर, संवर्धन और टोकनाइज़र - का बार-बार मूल्यांकन करें और वृद्धिशील रूप से सुधार करें - जितना कि खुद को एक उत्पादन-ग्रेड दस्तावेज़ प्रसंस्करण पाइपलाइन बनाने के लिए आवश्यक हो।
यदि आपके कोई प्रश्न हों, तो कृपया हमसे संपर्क करें !