जानें कि Mistral AI का Mixtral 8X22B मॉडल अपनी कुशल SMoE आर्किटेक्चर के साथ बड़े भाषा मॉडलों में कैसे क्रांति ला रहा है, जो बेहतर प्रदर्शन और स्केलेबिलिटी प्रदान करता है।
जब OpenAI ने 2022 में ChatGPT जारी किया, तो कई लोगों ने सोचा कि क्या अन्य कंपनियाँ Microsoft जैसे दिग्गज के समर्थन वाले इतने अच्छे उत्पाद से प्रतिस्पर्धा कर पाएंगी। जब सबका ध्यान Google और Meta जैसे बड़े तकनीकी खिलाड़ियों पर था, तभी 2023 में Mistral AI अपने 7B मॉडल के साथ सामने आया, जिसने लगभग दुगने आकार वाले सभी ओपन-सोर्स LLMs को पीछे छोड़ दिया।
तब से, Mistral AI LLM रेस में एक बड़ा खिलाड़ी बन गया है। अप्रैल 2024 में, उन्होंने Mixtral 8X22B जारी किया, एक ऐसा मॉडल जिसने उस समय के सर्वश्रेष्ठ ओपन-सोर्स LLM, Llama 2, को कई बेंचमार्क पर आसानी से पीछे छोड़ दिया।
इस ट्यूटोरियल में, हम Mixtral 8X22B मॉडल पर विस्तार से चर्चा करेंगे—इसकी आर्किटेक्चर से लेकर इसके साथ RAG पाइपलाइन सेटअप करने तक।
Mixtral 8x22B मॉडल को क्या अनोखा बनाता है?
Mixtral 8X22B Mistral AI द्वारा जारी किया गया नवीनतम मॉडल है। इसमें 141 बिलियन पैरामीटर्स वाली स्पार्स मिक्सचर ऑफ एक्सपर्ट्स (SMoE) आर्किटेक्चर है। यही SMoE आर्किटेक्चर इसे कई लाभ देता है। SMoE एक प्रकार का न्यूरल नेटवर्क है जो अलग-अलग कार्यों के लिए अलग-अलग छोटे मॉडलों (एक्सपर्ट्स) का उपयोग करता है और केवल आवश्यक एक्सपर्ट्स को सक्रिय करता है ताकि समय और कंप्यूटिंग पावर बचाई जा सके।
सबसे पहले, यह मॉडल अपने आकार के हिसाब से बेजोड़ लागत-प्रभावशीलता प्रदान करता है, ओपन-सोर्स समुदाय में सर्वश्रेष्ठ प्रदर्शन-से-लागत अनुपात देता है:
ऊपर की छवि में कुछ अग्रणी ओपन-सोर्स LLMs और उतने सक्रिय पैरामीटर्स दिखाए गए हैं, जिनकी उन्हें एक निश्चित प्रदर्शन स्तर तक पहुँचने के लिए आवश्यकता होती है। Mixtral सबसे ऊपर बाएँ कोने में है, जिसका अर्थ है कि यह +75% प्रदर्शन तक पहुँचने के लिए अपने समकक्ष मॉडल — Command R+ — की तुलना में काफी कम पैरामीटर्स का उपयोग करता है।
भले ही Mixtral 8X22B में 141 बिलियन पैरामीटर्स हैं, इसका स्पार्स एक्टिवेशन पैटर्न इन्फरेंस के दौरान केवल 39 बिलियन पैरामीटर्स का उपयोग करता है। इससे यह उच्च-प्रदर्शन वाला और 70-बिलियन पैरामीटर्स वाले किसी भी डेंस मॉडल, जैसे Llama 2 70B, से तेज बनता है। इसमें 64k-टोकन का कॉन्टेक्स्ट विंडो भी है, जो आज के ओपन-सोर्स LLMs में बहुत दुर्लभ है।
यह मॉडल सबसे उदार ओपन-सोर्स लाइसेंस — Apache 2.0 — के साथ आता है। इसे चलाने की कम लागत के साथ मिलकर, Mixtral 8X22B फाइन-ट्यूनिंग परिदृश्यों के लिए एक उत्कृष्ट विकल्प है।
Mixtral 8X22B बेंचमार्क्स
Mixtral 8x22B मानक इंडस्ट्री बेंचमार्क्स को शानदार ढंग से पास करता है। ज्यादातर बेंचमार्क में यह देखने पर जोर दिया गया कि इसने अपने मुख्य समान विकल्पों की तुलना में कितना अच्छा प्रदर्शन किया:
Llama 70B: Meta द्वारा पेश किया गया, बड़े पैमाने पर भाषा मॉडलिंग, टेक्स्ट जेनरेशन और डायलॉग सिस्टम्स के लिए उपयुक्त।
Command R+: Cohere का 104B पैरामीटर मॉडल, विशेष रूप से लंबी-प्रसंग (लॉन्ग-कॉन्टेक्स्ट) कार्यों और RAG पाइपलाइनों के लिए डिज़ाइन किया गया।
उदाहरण के लिए, Mixtral 8X22B पाँच भाषाओं में प्रवीण है: अंग्रेजी, जर्मन, फ्रेंच, स्पेनिश और इटालियन। इसका प्रमाण निम्न तालिका में देखा जा सकता है:
यह तीन बेंचमार्क्स पर भाषा-संबंधी कार्यों में Llama 2 70B को मात देता है:
Arc-C: Abstraction and Reasoning Corpus (ARC) बेंचमार्क, जो कॉमन सेंस रीजनिंग में AI के प्रदर्शन को मापता है।
HellaS: HellaSwag, कॉमन सेंस रीजनिंग के लिए एक और बेंचमार्क।
MMLU: Massive Multitask Language Understanding बेंचमार्क।
जहाँ तक अंग्रेजी में शुद्ध कॉमन सेंस रीजनिंग और ज्ञान-आधारित सवालों की बात है, Mixtral फिर से बेहतरीन प्रदर्शन करता है:
यह दो बेंचमार्क्स में Command R+ से थोड़ा कमजोर है, लेकिन अन्य में काफी बेहतर है।
और इसका सबसे विशिष्ट पहलू—Mixtral 8X22B गणित और कोडिंग कार्यों में अपने सभी विकल्पों को पछाड़ देता है:
अब, देखते हैं यह मॉडल अपनी अत्याधुनिक परफॉर्मेंस कैसे हासिल करता है।
Mixtral 8X22B के पीछे की आर्किटेक्चर — SMoE समझाया गया
स्पार्स मिक्सचर ऑफ एक्सपर्ट्स (SMoE) आर्किटेक्चर को बेहतर समझने के लिए, हम एक सरल उपमा का उपयोग करेंगे। मान लीजिए 100 लोग एक प्रोजेक्ट पर काम कर रहे हैं।
पारंपरिक मॉडल: पूरी टीम (सभी मॉडल पैरामीटर्स) सारी प्रोजेक्ट जानकारी का विश्लेषण करती है और हर कोई हर काम पर एक साथ काम करता है।
SMoE आर्किटेक्चर: एक समझदार टीम लीडर विशेषज्ञता के आधार पर काम सौंपता है। लीडर (जिसे राउटर या गेटिंग नेटवर्क कहते हैं) प्रत्येक जानकारी के टुकड़े (टोकन) को उन कुछ विशेषज्ञों (एक्सपर्ट्स) तक पहुँचाता है जो उसे संभालने के लिए सबसे उपयुक्त हों। केवल सही एक्सपर्ट्स ही समस्या पर काम करते हैं, जिससे प्रक्रिया बहुत तेज़ और केंद्रित हो जाती है।
SMoE मॉडलों में निम्नलिखित प्रमुख घटक होते हैं:
एक्सपर्ट्स: पूरे मॉडल की तुलना में छोटे न्यूरल नेटवर्क। Mixtral 8 एक्सपर्ट्स का उपयोग करता है, जो प्रत्येक विशिष्ट प्रकार की जानकारी या कार्य संभालते हैं। उदाहरण के लिए, कोई एक एक्सपर्ट गणित और लॉजिक क्वेरीज़ संभाल सकता है, जबकि दूसरा फ्रेंच को।
राउटर (गेटिंग नेटवर्क): गेटिंग नेटवर्क यह तय करता है कि कौन-से टोकन किस एक्सपर्ट को भेजे जाएँ। राउटर आमतौर पर खुद एक छोटा न्यूरल नेटवर्क होता है, जो टोकन की सामग्री और मौजूदा संदर्भ जैसे कारकों पर विचार करके निर्णय लेता है। किसी भी MoE मॉडल के साथ काम करते समय टोकन को एक्सपर्ट तक कैसे रूट किया जाए, यह एक बड़ा निर्णय होता है।
एग्रीगेशन: एक्सपर्ट्स जब अपने-अपने असाइन किए टोकन प्रोसेस कर लेते हैं, तो उनके आउटपुट्स को जोड़ा जाता है। यह साधारण एवरेजिंग या अधिक जटिल वेटिंग स्ट्रैटेजी जैसी विभिन्न विधियों से किया जा सकता है।
इस तरह की मॉडल संरचना के कई फायदे हैं:
कुशलता: हर इनपुट के लिए केवल एक छोटे उपसमूह के एक्सपर्ट्स को सक्रिय करके, SMoE कंप्यूटेशनल लागत घटाता है और प्रोसेसिंग स्पीड बढ़ाता है।
स्केलेबिलिटी: आप प्रशिक्षण या इन्फरेंस समय पर बड़ा असर डाले बिना पूल में और एक्सपर्ट्स जोड़ सकते हैं। इससे बहुत बड़े, उच्च क्षमता वाले मॉडल बनाना संभव होता है।
सटीकता: कुछ कार्यों के लिए एक्सपर्ट्स का विशेषीकरण, एक एकल, मोनोलिथिक नेटवर्क की तुलना में बेहतर प्रदर्शन दे सकता है। बेंचमार्क्स से दिखा कि Mixtral भाषा, गणित और कोडिंग कार्यों में विशेष रूप से अच्छा था, और संभवतः इसका श्रेय इसके विशेष एक्सपर्ट्स को जाता है।
हालाँकि, नए होने के कारण, SMoE मॉडल कुछ अनोखी चुनौतियाँ पेश करते हैं, जिनसे अभी प्रभावी ढंग से निपटा नहीं गया है:
ट्रेनिंग जटिलता: गेटिंग नेटवर्क और एक्सपर्ट कोऑर्डिनेशन की अतिरिक्त जटिलता के कारण SMoE मॉडल को ट्रेन करना बहुत चुनौतीपूर्ण हो सकता है।
सही एक्सपर्ट्स ढूँढना: उचित संख्या और प्रकार के एक्सपर्ट्स पर निर्णय लेना इष्टतम प्रदर्शन के लिए बेहद महत्वपूर्ण है।
मेमोरी-भारी: इसकी आर्किटेक्चर के कारण, इन्फरेंस के दौरान मॉडल के सभी पैरामीटर्स मेमोरी में लोड होने चाहिए, जिससे आपका सारा GPU vRAM उपयोग हो जाता है। Mixtral 8X22B के साथ इन्फरेंस चलाने के लिए, आपको कम से कम 300GB मेमोरी वाला GPU चाहिए।
सारांश रूप में, चूँकि मॉडल का स्केल बेहतर गुणवत्ता के लिए सबसे महत्वपूर्ण कारकों में से एक है, सक्रिय पैरामीटर्स की संख्या घटाने से मॉडल्स को ट्रेन करना काफी सस्ता और तेज़ हो जाता है। जब कंप्यूट बजट सीमित हो, तो कम स्टेप्स के लिए बड़े मॉडल को ट्रेन करना, ज्यादा स्टेप्स के लिए छोटे मॉडल को ट्रेन करने से बेहतर होता है।
मिक्सचर ऑफ एक्सपर्ट्स आर्किटेक्चर मॉडल्स को बहुत कम कंप्यूट के साथ ट्रेन करने देता है, जिससे आप डेंस मॉडल के समान बजट में मॉडल का आकार नाटकीय रूप से बढ़ा सकते हैं। कोई भी SMoE मॉडल अपने डेंस समकक्ष के समान गुणवत्ता को प्री-ट्रेनिंग के दौरान बहुत तेजी से हासिल कर सकता है।
Mixtral 8x22B के साथ शुरुआत
इस खंड में, हम Mistral API का उपयोग करके Mixtral 8X22B मॉडल का उपयोग शुरू करना सीखेंगे। चूँकि मॉडल लगभग 80 गीगाबाइट आकार का है और 300 गीगाबाइट GPU की आवश्यकता होती है, इसे किसी भी क्लाउड प्रदाता पर चलाना, उपभोक्ता हार्डवेयर की तो बात ही छोड़िए, थोड़ा कठिन और महंगा होगा।
खाता सेटअप
Mistral AI आपसे अपना खाता बनाने और बिलिंग जानकारी दर्ज करने के लिए कहता है ताकि आपको अपना API की मिल सके। तो कृपया mistral.ai पर जाकर अपना खाता बनाएँ। एक बार जब आप अपनी साख के साथ लॉग इन कर लेते हैं, तो आपको console.mistral.ai पर अपने Mistral कंसोल पर भेज दिया जाएगा।
अगला, “Billing” पर जाएँ और अपनी भुगतान जानकारी जोड़ें:
इसके बाद, कुछ क्रेडिट्स जोड़ें:
यह आपको “API KEYS” सेक्शन से एक API की जेनरेट करने की अनुमति देगा:
जब आप एक की बनाते हैं, तो वह केवल एक बार प्रदर्शित की जाएगी, इसलिए उसे सुरक्षित स्थान पर सहेज लें। हम इसे अगले खंड में उपयोग करेंगे।
पर्यावरण सेटअप
अब, Mistral API चलाने के लिए एक वर्चुअल वातावरण सेट करते हैं। हम Conda का उपयोग करेंगे:
$ conda init # Run if your Conda executable is new
$ conda env create -n mistral python==3.8-y
$ conda activate mistral
संचालित द्वारा
फिर, हम mistralai Python पैकेज के साथ कुछ अन्य आवश्यक पैकेज इंस्टॉल कर सकते हैं:
अंतिम कमांड नए इंस्टॉल किए गए Conda वातावरण को Jupyter कर्नेल के रूप में जोड़ता है।
हम अपने Mistral API की को नोटबुक से सुरक्षित रूप से पढ़ने के लिए python-dotenv पैकेज का उपयोग करेंगे। ऐसा करने के लिए, अपने कार्यशील निर्देशिका में एक .env फ़ाइल बनाएँ:
अब, अभी सहेजी गई की को पढ़ने के लिए, हम os लाइब्रेरी के साथ load_dotenv फ़ंक्शन का उपयोग कर सकते हैं:
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("MISTRAL_API_KEY")संचालित द्वारा
चैट क्लाइंट का उपयोग
अंततः, किसी भी Mistral मॉडल के साथ संवाद करने के लिए, हम MistralClient ऑब्जेक्ट का उपयोग करेंगे:
from mistralai.client import MistralClient
client = MistralClient(api_key=api_key)संचालित द्वारा
क्लाइंट को Mistral सर्वरों से कनेक्ट करने के लिए हमारे API की की आवश्यकता होती है। फिर, हम Mistral मॉडलों के साथ संवाद रखने के लिए ChatMessage क्लास इम्पोर्ट करेंगे:
from mistralai.models.chat_completion import ChatMessage
model ="open-mixtral-8x22b"
message ="Who is the best French football player of all time?"
chat_response = client.chat(
model=model,
messages=[ChatMessage(role="user", content=message)],)print(chat_response.choices[0].message.content[:300])संचालित द्वारा
Determining the "best" French football player of all time can be subjective and depends on personal opinion. However, one player who is often mentioned in this context is Zinedine Zidane. He had an impressive career both for the French national team and at club level. He was a key player in France'sसंचालित द्वारा
हमें एक उत्तर मिला — तो, सब कुछ सही तरह से सेटअप हो गया है।
ChatResponse ऑब्जेक्ट प्रायः एक से अधिक उत्तर रखता है, इसलिए हम पहला चुन रहे हैं और एक उपखंड प्रिंट कर रहे हैं।
Mixtral 8X22B के व्यावहारिक उपयोग
सादा टेक्स्ट जनरेशन से परे, आप Mixtral के साथ और भी बहुत कुछ कर सकते हैं:
एम्बेडिंग्स जनरेट करना
पैराफ्रेज़ डिटेक्टर बनाना
पूरी RAG पाइपलाइन
फंक्शन कॉलिंग
आदि। हम इन परिदृश्यों को एक-एक करके देखेंगे।
टेक्स्ट जनरेशन
पिछले खंड में, हम चैट क्लाइंट से बड़े पैमाने पर टेक्स्ट जनरेट करने में सक्षम थे। कुछ मामलों में, जब हमें लगता है कि उत्तर लंबा हो सकता है, तो ChatGPT की तरह आउटपुट को स्ट्रीम करना समझदारी होती है। हम Mixtral के साथ भी ऐसा कर सकते हैं
messages =[ChatMessage(role="user", content="What led to Zidane's ban from football?")]# With streaming
stream_response = client.chat_stream(model=model, messages=messages)for chunk in stream_response:print(chunk.choices[0].delta.content, end="")संचालित द्वारा
chat मेथड के बजाय, हम chat_stream का उपयोग कर सकते हैं जो उत्तर को मांग के अनुसार, टुकड़ों में देता है:
एम्बेडिंग्स जनरेट करना
एम्बेडिंग्स LLM अनुप्रयोगों के प्रमुख घटक हैं। एम्बेडिंग किसी टेक्स्ट का एक वेक्टर प्रतिनिधित्व होता है, जो उच्च-आयामी वेक्टर स्पेस में अपनी स्थिति के माध्यम से उसके सार्थक अर्थ को कैप्चर करता है। यदि दो एम्बेडिंग्स के बीच की दूरी कम है, तो इसका अर्थ है कि उनका अर्थ आपस में मिलता-जुलता है। उदाहरण के लिए, एम्बेडिंग स्पेस में apple शब्द orange के अधिक निकट होगा बनिस्बत keyboard के।
Mistral API टेक्स्ट के लिए अत्याधुनिक एम्बेडिंग मॉडल प्रदान करता है। संक्षेप में देखें कि वे कैसे काम करते हैं:
to_embed =["Is Messi better than Zidane?","How about Ronaldo?"]
embeddings_batch_response = client.embeddings(
model="mistral-embed",input=to_embed,)type(embeddings_batch_response)संचालित द्वारा
mistralai.models.embeddings.EmbeddingResponse
संचालित द्वारा
पहले, हम वाक्यों की एक सूची to_embed बनाते हैं जिसे एम्बेड किया जाना है। फिर, हम उन्हें embeddings मेथड को एक एम्बेडिंग मॉडल नाम—mistral-embed—के साथ पास करेंगे। परिणाम एक EmbeddingResponse ऑब्जेक्ट होता है। जब हम इसके data एट्रिब्यूट की लंबाई प्रिंट करेंगे, तो दिखेगा कि दो वाक्यों के लिए दो वेक्टर हैं:
हमें 1024 का परिणाम मिला, जिसका मतलब है कि Mistral किसी भी टेक्स्ट को, उसकी लंबाई की परवाह किए बिना, 1024-आयामी वेक्टर में एम्बेड करता है।
ध्यान दें कि उच्च-आयामी एम्बेडिंग्स टेक्स्ट की जानकारी को बेहतर तरीके से कैप्चर कर सकती हैं और प्रदर्शन में सुधार कर सकती हैं, लेकिन उन्हें होस्टिंग और इन्फरेंस के लिए अधिक कंप्यूट की आवश्यकता होती है।
यद्यपि हमने इस खंड में Mixtral 8X22B मॉडल का उपयोग नहीं किया, एम्बेडिंग्स को समझना तब महत्वपूर्ण होगा जब हम एक सरल RAG पाइपलाइन बनाएँगे।
एम्बेडिंग्स का उपयोग करके पैराफ्रेज़ डिटेक्शन
जैसा कि हमने पहले कहा, यदि दो एम्बेडिंग्स के बीच की दूरी कम है, तो उनका अर्थ निकट हो सकता है। इस विचार का विस्तार करते हुए, हम एक प्राथमिक पैराफ्रेज़ डिटेक्टर बना सकते हैं क्योंकि यदि दो वाक्यों के बीच की दूरी कम है, तो संभावना है कि वे एक-दूसरे के पैराफ्रेज़ हों।
पहले, हम एक फ़ंक्शन बनाएँगे जो दिए गए इनपुट के लिए एम्बेडिंग वेक्टर लौटाता है:
defget_text_embedding(input, client):
embeddings_batch_response = client.embeddings(
model="mistral-embed",input=input)return embeddings_batch_response.data[0].embedding
संचालित द्वारा
फिर, हम उन वाक्यों की सूची परिभाषित करेंगे जिन्हें हम एक-दूसरे के विरुद्ध पैराफ्रेज़िंग के लिए जाँचना चाहते हैं और उनकी एम्बेडिंग्स प्राप्त करेंगे:
sentences =["What led to Zidane's ban from football?","This is a totally different sentence.","What caused Zidane to get banned from football?",]
sentence_embeddings =[get_text_embedding(t, client)for t in sentences]संचालित द्वारा
फिर, हम itertools का उपयोग करके वाक्यों के सभी संभव दो-दो के संयोजन बनाएँगे:
import itertools
sentence_embeddings_pairs =list(itertools.combinations(sentence_embeddings,2))
sentence_pairs =list(itertools.combinations(sentences,2))print(sentence_pairs[0])संचालित द्वारा
("What led to Zidane's ban from football?", 'This is a totally different sentence.')संचालित द्वारा
फिर, हम प्रत्येक वाक्य-एम्बेडिंग जोड़ी के बीच Euclidean दूरी प्रिंट करेंगे और परिणाम दिखाएँगे:
from sklearn.metrics.pairwise import euclidean_distances
for s, e inzip(sentence_pairs, sentence_embeddings_pairs):
distance = euclidean_distances([e[0]],[e[1]])print(s, distance)संचालित द्वारा
("What led to Zidane's ban from football?", 'This is a totally different sentence.') [[0.84503319]]
("What led to Zidane's ban from football?", 'What caused Zidane to get banned from football?') [[0.28662641]]
('This is a totally different sentence.', 'What caused Zidane to get banned from football?') [[0.83794058]]
संचालित द्वारा
दूसरी जोड़ी के बीच की दूरी कम है, जो इंगित करता है कि वे एक-दूसरे के पैराफ्रेज़ हो सकते हैं।
RAG पाइपलाइन में Mixtral 8X22B का उपयोग
LLMs ढेरों डेटा पर प्रशिक्षित होते हैं, लेकिन वे हमेशा अद्यतन नहीं होते और आपके निजी डेटासेट्स तक उनकी पहुँच नहीं होती। यदि आप चाहते हैं कि मॉडल अन्य मौजूदा डेटासेट्स पर प्रश्नों के उत्तर दे, तो उन्हें फाइन-ट्यून करना बहुत महँगा है।
इसीलिए Retrieval Augmented Generation (RAG) पाइपलाइनों की लोकप्रियता बढ़ी है। महँगे फाइन-ट्यूनिंग के बिना, आप किसी LLM को ऐसी कस्टम जानकारी प्रोसेस करना सिखा सकते हैं जो उसके प्रशिक्षण का हिस्सा नहीं थी और उसके बारे में प्रश्नों के उत्तर दिला सकते हैं।
इस खंड में, हम एक बेसिक RAG पाइपलाइन बनाएँगे जो कल की खबरों से जानकारी सीखती है, इस 1440 लेख में। मैंने खबर का एक हिस्सा इस टेक्स्ट फ़ाइल में सहेजा है, जिसे आप मेरे GitHub से डाउनलोड कर सकते हैं या बस कॉपी/पेस्ट करके news_piece.txt नामक फ़ाइल में सहेज सकते हैं।
फ़ाइल की सामग्री पढ़ने के लिए, हम pathlib लाइब्रेरी का उपयोग कर सकते हैं:
from pathlib import Path
file= Path("news_piece.txt")
text =file.read_text()संचालित द्वारा
फिर, हम दस्तावेज़ को टुकड़ों में विभाजित करेंगे क्योंकि RAG सिस्टम्स टेक्स्ट के टुकड़ों में होने पर बेहतर प्रदर्शन करते हैं। इस उदाहरण में, हम टेक्स्ट को 512 अक्षरों के टुकड़ों में विभाजित करेंगे:
chunk_size =512
chunks =[text[i : i + chunk_size]for i inrange(0,len(text), chunk_size)]len(chunks)4संचालित द्वारा
इसके बाद, हम पिछले खंड के get_text_embedding फ़ंक्शन का उपयोग करके प्रत्येक टुकड़े की एम्बेडिंग्स प्राप्त करेंगे:
text_embeddings = np.array([get_text_embedding(chunk, client)for chunk in chunks])संचालित द्वारा
अगला, एम्बेडिंग्स को प्रभावी प्रोसेसिंग और रिट्रीवल के लिए किसी वेक्टर डेटाबेस में स्टोर करना आम प्रथा है। वेक्टर डेटाबेस के लिए कई विकल्प मौजूद हैं। हम faiss का उपयोग करेंगे—समानता खोज के लिए एक ओपन-सोर्स डेटाबेस।
import faiss # pip install faiss
d = text_embeddings.shape[1]
index = faiss.IndexFlatL2(d)
index.add(text_embeddings)संचालित द्वारा
indexIndex क्लास का एक इंस्टेंस है, जो हमारे डेटाबेस की संरचना परिभाषित करता है। d एम्बेडिंग स्पेस के आयाम के लिए है।
add मेथड चलाने से हमारे दस्तावेज़ से जानकारी वेक्टर डेटाबेस में जुड़ जाती है, जिसका मतलब है कि अब हम इसके बारे में प्रश्न पूछ सकते हैं। लेकिन उससे पहले, हमारे किसी भी प्रश्न को भी एम्बेडिंग में बदला जाना चाहिए:
import numpy as np
questions =["How much is Microsoft going to spend for its new data center?","When did FTX collapse?",]
question_embeddings = np.array([get_text_embedding(q, client)for q in questions])संचालित द्वारा
फिर, हम question_embeddings ऐरे को Index ऑब्जेक्ट के search मेथड को दे सकते हैं:
D, I = index.search(question_embeddings, k=4)# distance, index
retrieved_chunk =[chunks[i]for i in I.tolist()[0]]संचालित द्वारा
search मेथड वे वेक्टर लौटाता है जिनमें सबसे अधिक संभावना है कि हमारे प्रश्नों के उत्तर हों (समानता खोज का उपयोग करके):
ay defrauded investors in full and provide the vast majority with interest. The failed cryptocurrency exchange platform filed its proposal late Tuesday to a federal bankruptcy court for approval.
Since FTX collapsed in 2022, CEO John Ray III (see previous write-up) has worked to track down more than $8B in missing assets to repay an estimated $11.2B owed to creditors. This week, Ray said the company has recovered between $14.5B and $16.3B, with much of the funds tied to government-seized FTX properties or
संचालित द्वारा
अब, हम इस टेक्स्ट को Mixtral 8X22B मॉडल के लिए संदर्भ (कॉन्टेक्स्ट) के रूप में पास कर सकते हैं और इसके बारे में अपने प्रश्न पूछ सकते हैं। चलिए प्रॉम्प्ट बनाते हैं:
prompt =f"""
Context information is below.
---------------------
{retrieved_chunk}
---------------------
Given the context information and not prior knowledge, answer the query.
Query: {questions}
Answer:
"""संचालित द्वारा
अब, हम इसे client के माध्यम से मॉडल को पास कर सकते हैं:
chat_response = client.chat(
model=model,# Mixtral 8x22B
messages=[ChatMessage(role="user", content=prompt)],)print(chat_response.choices[0].message.content)संचालित द्वारा
Microsoft will spend $3 billion for its new data center in Racine, Wisconsin. FTX collapsed in 2022.
संचालित द्वारा
उत्तर सही हैं!
हमने एक बहुत ही बेसिक RAG पाइपलाइन बनाई है। व्यवहार में, RAG पाइपलाइनें बहुत शक्तिशाली होती हैं—वे विभिन्न प्रकार के इनपुट (टेक्स्ट, इमेज, ऑडियो, वीडियो) संभाल सकती हैं और हमारी एकल टेक्स्ट फ़ाइल वाली संस्करण की तुलना में बड़े पैमाने पर काम कर सकती हैं।
Mixtral 8X22B मॉडल की मूल क्षमताओं में से एक है फंक्शन कॉलिंग। LLMs के संदर्भ में, फंक्शन कॉलिंग एक तकनीक है जो LLMs को प्रॉम्प्ट्स को इस तरह समझने और उत्तर देने देती है कि विशिष्ट फ़ंक्शन्स का निष्पादन ट्रिगर हो। इसका अर्थ इस प्रकार है:
मानक LLM उत्तर: LLMs अपने प्रशिक्षण डेटा के आधार पर किसी प्रॉम्प्ट के लिए टेक्स्ट जनरेट करते हैं। यह उत्तर आमतौर पर अप्रत्याशित और असंरचित होता है।
Mixtral के साथ फंक्शन कॉलिंग: फंक्शन कॉलिंग के साथ, Mixtral 8X22B को पूर्व-परिभाषित कस्टम फ़ंक्शन्स को इनवोक करना सिखाया जा सकता है ताकि प्रॉम्प्ट के प्रकार के आधार पर आउटपुट को संरचित किया जा सके। Mixtral आमतौर पर आउटपुट को स्ट्रक्चर्ड JSON फॉर्मेट में लौटाता है, जिसे आप पहले से परिभाषित कर सकते हैं। इससे इसके उत्तर अधिक पूर्वानुमेय और संरचित हो जाते हैं।
फंक्शन कॉलिंग कैसे काम करती है, यह प्रदर्शित करना इस लेख के दायरे से बाहर है। हालाँकि, आप इसे क्रियान्वयन में देखने के लिए Mistral AI दस्तावेज़ का यह पेज देख सकते हैं।
निष्कर्ष
इस लेख में, हमने Mistral AI द्वारा अप्रैल 2024 में जारी किए गए Mixtral 8X22B मॉडल के बारे में जाना। अपनी आर्किटेक्चरल खूबियों के कारण, यह अब अग्रणी ओपन-सोर्स LLMs में से एक है, जो कई बेंचमार्क्स पर Llama 2 और Command R+ जैसे लोकप्रिय मॉडलों को पीछे छोड़ता है।
इसकी आर्किटेक्चर विवरणों के अलावा, हमने इसे कुछ व्यावहारिक परिदृश्यों में उपयोग करना सीखा, जैसे टेक्स्ट जनरेशन, पैराफ्रेज़ डिटेक्शन और RAG पाइपलाइन बनाना। यदि आप Mixtral 8X22B मॉडल की पूरी क्षमता को अनलॉक करना चाहते हैं, तो ये संबंधित संसाधन देखें:
मैं 2 से अधिक वर्षों के अनुभव वाला डेटा साइंस कंटेंट क्रिएटर हूँ और Medium पर सबसे बड़े फॉलोइंग्स में से एक रखता हूँ। मुझे एआई और एमएल पर विस्तार से लेख लिखना पसंद है, जिसमें हल्का-सा व्यंग्यात्मक अंदाज रहता है—क्योंकि कुछ तो करना पड़ता है ताकि वे कम उबाऊ लगें। मैंने 130 से अधिक लेख और एक DataCamp कोर्स तैयार किया है, और एक और बन रहा है। मेरा कंटेंट 50 लाख से अधिक लोगों ने देखा है, जिनमें से 20 हज़ार लोग Medium और LinkedIn पर फॉलोअर्स बन गए।
जब OpenAI ने 2022 में ChatGPT जारी किया, तो कई लोगों ने सोचा कि क्या अन्य कंपनियाँ Microsoft जैसे दिग्गज के समर्थन वाले इतने अच्छे उत्पाद से प्रतिस्पर्धा कर पाएंगी। जब सबका ध्यान Google और Meta जैसे बड़े तकनीकी खिलाड़ियों पर था, तभी 2023 में Mistral AI अपने 7B मॉडल के साथ सामने आया, जिसने लगभग दुगने आकार वाले सभी ओपन-सोर्स LLMs को पीछे छोड़ दिया।
तब से, Mistral AI LLM रेस में एक बड़ा खिलाड़ी बन गया है। अप्रैल 2024 में, उन्होंने Mixtral 8X22B जारी किया, एक ऐसा मॉडल जिसने उस समय के सर्वश्रेष्ठ ओपन-सोर्स LLM, Llama 2, को कई बेंचमार्क पर आसानी से पीछे छोड़ दिया।
इस ट्यूटोरियल में, हम Mixtral 8X22B मॉडल पर विस्तार से चर्चा करेंगे—इसकी आर्किटेक्चर से लेकर इसके साथ RAG पाइपलाइन सेटअप करने तक।
Mixtral 8x22B मॉडल को क्या अनोखा बनाता है?
Mixtral 8X22B Mistral AI द्वारा जारी किया गया नवीनतम मॉडल है। इसमें 141 बिलियन पैरामीटर्स वाली स्पार्स मिक्सचर ऑफ एक्सपर्ट्स (SMoE) आर्किटेक्चर है। यही SMoE आर्किटेक्चर इसे कई लाभ देता है। SMoE एक प्रकार का न्यूरल नेटवर्क है जो अलग-अलग कार्यों के लिए अलग-अलग छोटे मॉडलों (एक्सपर्ट्स) का उपयोग करता है और केवल आवश्यक एक्सपर्ट्स को सक्रिय करता है ताकि समय और कंप्यूटिंग पावर बचाई जा सके।
सबसे पहले, यह मॉडल अपने आकार के हिसाब से बेजोड़ लागत-प्रभावशीलता प्रदान करता है, ओपन-सोर्स समुदाय में सर्वश्रेष्ठ प्रदर्शन-से-लागत अनुपात देता है:
ऊपर की छवि में कुछ अग्रणी ओपन-सोर्स LLMs और उतने सक्रिय पैरामीटर्स दिखाए गए हैं, जिनकी उन्हें एक निश्चित प्रदर्शन स्तर तक पहुँचने के लिए आवश्यकता होती है। Mixtral सबसे ऊपर बाएँ कोने में है, जिसका अर्थ है कि यह +75% प्रदर्शन तक पहुँचने के लिए अपने समकक्ष मॉडल — Command R+ — की तुलना में काफी कम पैरामीटर्स का उपयोग करता है।
भले ही Mixtral 8X22B में 141 बिलियन पैरामीटर्स हैं, इसका स्पार्स एक्टिवेशन पैटर्न इन्फरेंस के दौरान केवल 39 बिलियन पैरामीटर्स का उपयोग करता है। इससे यह उच्च-प्रदर्शन वाला और 70-बिलियन पैरामीटर्स वाले किसी भी डेंस मॉडल, जैसे Llama 2 70B, से तेज बनता है। इसमें 64k-टोकन का कॉन्टेक्स्ट विंडो भी है, जो आज के ओपन-सोर्स LLMs में बहुत दुर्लभ है।
यह मॉडल सबसे उदार ओपन-सोर्स लाइसेंस — Apache 2.0 — के साथ आता है। इसे चलाने की कम लागत के साथ मिलकर, Mixtral 8X22B फाइन-ट्यूनिंग परिदृश्यों के लिए एक उत्कृष्ट विकल्प है।
Mixtral 8X22B बेंचमार्क्स
Mixtral 8x22B मानक इंडस्ट्री बेंचमार्क्स को शानदार ढंग से पास करता है। ज्यादातर बेंचमार्क में यह देखने पर जोर दिया गया कि इसने अपने मुख्य समान विकल्पों की तुलना में कितना अच्छा प्रदर्शन किया:
उदाहरण के लिए, Mixtral 8X22B पाँच भाषाओं में प्रवीण है: अंग्रेजी, जर्मन, फ्रेंच, स्पेनिश और इटालियन। इसका प्रमाण निम्न तालिका में देखा जा सकता है:
यह तीन बेंचमार्क्स पर भाषा-संबंधी कार्यों में Llama 2 70B को मात देता है:
जहाँ तक अंग्रेजी में शुद्ध कॉमन सेंस रीजनिंग और ज्ञान-आधारित सवालों की बात है, Mixtral फिर से बेहतरीन प्रदर्शन करता है:
यह दो बेंचमार्क्स में Command R+ से थोड़ा कमजोर है, लेकिन अन्य में काफी बेहतर है।
और इसका सबसे विशिष्ट पहलू—Mixtral 8X22B गणित और कोडिंग कार्यों में अपने सभी विकल्पों को पछाड़ देता है:
अब, देखते हैं यह मॉडल अपनी अत्याधुनिक परफॉर्मेंस कैसे हासिल करता है।
Mixtral 8X22B के पीछे की आर्किटेक्चर — SMoE समझाया गया
स्पार्स मिक्सचर ऑफ एक्सपर्ट्स (SMoE) आर्किटेक्चर को बेहतर समझने के लिए, हम एक सरल उपमा का उपयोग करेंगे। मान लीजिए 100 लोग एक प्रोजेक्ट पर काम कर रहे हैं।
SMoE मॉडलों में निम्नलिखित प्रमुख घटक होते हैं:
इस तरह की मॉडल संरचना के कई फायदे हैं:
हालाँकि, नए होने के कारण, SMoE मॉडल कुछ अनोखी चुनौतियाँ पेश करते हैं, जिनसे अभी प्रभावी ढंग से निपटा नहीं गया है:
सारांश रूप में, चूँकि मॉडल का स्केल बेहतर गुणवत्ता के लिए सबसे महत्वपूर्ण कारकों में से एक है, सक्रिय पैरामीटर्स की संख्या घटाने से मॉडल्स को ट्रेन करना काफी सस्ता और तेज़ हो जाता है। जब कंप्यूट बजट सीमित हो, तो कम स्टेप्स के लिए बड़े मॉडल को ट्रेन करना, ज्यादा स्टेप्स के लिए छोटे मॉडल को ट्रेन करने से बेहतर होता है।
मिक्सचर ऑफ एक्सपर्ट्स आर्किटेक्चर मॉडल्स को बहुत कम कंप्यूट के साथ ट्रेन करने देता है, जिससे आप डेंस मॉडल के समान बजट में मॉडल का आकार नाटकीय रूप से बढ़ा सकते हैं। कोई भी SMoE मॉडल अपने डेंस समकक्ष के समान गुणवत्ता को प्री-ट्रेनिंग के दौरान बहुत तेजी से हासिल कर सकता है।
Mixtral 8x22B के साथ शुरुआत
इस खंड में, हम Mistral API का उपयोग करके Mixtral 8X22B मॉडल का उपयोग शुरू करना सीखेंगे। चूँकि मॉडल लगभग 80 गीगाबाइट आकार का है और 300 गीगाबाइट GPU की आवश्यकता होती है, इसे किसी भी क्लाउड प्रदाता पर चलाना, उपभोक्ता हार्डवेयर की तो बात ही छोड़िए, थोड़ा कठिन और महंगा होगा।
खाता सेटअप
Mistral AI आपसे अपना खाता बनाने और बिलिंग जानकारी दर्ज करने के लिए कहता है ताकि आपको अपना API की मिल सके। तो कृपया mistral.ai पर जाकर अपना खाता बनाएँ। एक बार जब आप अपनी साख के साथ लॉग इन कर लेते हैं, तो आपको console.mistral.ai पर अपने Mistral कंसोल पर भेज दिया जाएगा।
अगला, “Billing” पर जाएँ और अपनी भुगतान जानकारी जोड़ें:
इसके बाद, कुछ क्रेडिट्स जोड़ें:
यह आपको “API KEYS” सेक्शन से एक API की जेनरेट करने की अनुमति देगा:
जब आप एक की बनाते हैं, तो वह केवल एक बार प्रदर्शित की जाएगी, इसलिए उसे सुरक्षित स्थान पर सहेज लें। हम इसे अगले खंड में उपयोग करेंगे।
पर्यावरण सेटअप
अब, Mistral API चलाने के लिए एक वर्चुअल वातावरण सेट करते हैं। हम Conda का उपयोग करेंगे:
फिर, हम
mistralaiPython पैकेज के साथ कुछ अन्य आवश्यक पैकेज इंस्टॉल कर सकते हैं:अंतिम कमांड नए इंस्टॉल किए गए Conda वातावरण को Jupyter कर्नेल के रूप में जोड़ता है।
हम अपने Mistral API की को नोटबुक से सुरक्षित रूप से पढ़ने के लिए python-dotenv पैकेज का उपयोग करेंगे। ऐसा करने के लिए, अपने कार्यशील निर्देशिका में एक
.envफ़ाइल बनाएँ:फिर, फ़ाइल को इस तरह संपादित करें कि वह आपकी की को निम्न सिंटैक्स में सूचीबद्ध करे:
साथ ही, सुनिश्चित करें कि
.envफ़ाइल को.gitignoreमें जोड़ दें ताकि वह गलती से GitHub पर लीक न हो:अब, अभी सहेजी गई की को पढ़ने के लिए, हम
osलाइब्रेरी के साथload_dotenvफ़ंक्शन का उपयोग कर सकते हैं:चैट क्लाइंट का उपयोग
अंततः, किसी भी Mistral मॉडल के साथ संवाद करने के लिए, हम
MistralClientऑब्जेक्ट का उपयोग करेंगे:क्लाइंट को Mistral सर्वरों से कनेक्ट करने के लिए हमारे API की की आवश्यकता होती है। फिर, हम Mistral मॉडलों के साथ संवाद रखने के लिए
ChatMessageक्लास इम्पोर्ट करेंगे:हमें एक उत्तर मिला — तो, सब कुछ सही तरह से सेटअप हो गया है।
ChatResponseऑब्जेक्ट प्रायः एक से अधिक उत्तर रखता है, इसलिए हम पहला चुन रहे हैं और एक उपखंड प्रिंट कर रहे हैं।Mixtral 8X22B के व्यावहारिक उपयोग
सादा टेक्स्ट जनरेशन से परे, आप Mixtral के साथ और भी बहुत कुछ कर सकते हैं:
आदि। हम इन परिदृश्यों को एक-एक करके देखेंगे।
टेक्स्ट जनरेशन
पिछले खंड में, हम चैट क्लाइंट से बड़े पैमाने पर टेक्स्ट जनरेट करने में सक्षम थे। कुछ मामलों में, जब हमें लगता है कि उत्तर लंबा हो सकता है, तो ChatGPT की तरह आउटपुट को स्ट्रीम करना समझदारी होती है। हम Mixtral के साथ भी ऐसा कर सकते हैं
chatमेथड के बजाय, हमchat_streamका उपयोग कर सकते हैं जो उत्तर को मांग के अनुसार, टुकड़ों में देता है:एम्बेडिंग्स जनरेट करना
एम्बेडिंग्स LLM अनुप्रयोगों के प्रमुख घटक हैं। एम्बेडिंग किसी टेक्स्ट का एक वेक्टर प्रतिनिधित्व होता है, जो उच्च-आयामी वेक्टर स्पेस में अपनी स्थिति के माध्यम से उसके सार्थक अर्थ को कैप्चर करता है। यदि दो एम्बेडिंग्स के बीच की दूरी कम है, तो इसका अर्थ है कि उनका अर्थ आपस में मिलता-जुलता है। उदाहरण के लिए, एम्बेडिंग स्पेस में apple शब्द orange के अधिक निकट होगा बनिस्बत keyboard के।
Mistral API टेक्स्ट के लिए अत्याधुनिक एम्बेडिंग मॉडल प्रदान करता है। संक्षेप में देखें कि वे कैसे काम करते हैं:
पहले, हम वाक्यों की एक सूची
to_embedबनाते हैं जिसे एम्बेड किया जाना है। फिर, हम उन्हेंembeddingsमेथड को एक एम्बेडिंग मॉडल नाम—mistral-embed—के साथ पास करेंगे। परिणाम एकEmbeddingResponseऑब्जेक्ट होता है। जब हम इसकेdataएट्रिब्यूट की लंबाई प्रिंट करेंगे, तो दिखेगा कि दो वाक्यों के लिए दो वेक्टर हैं:हम वेक्टरों के आयाम भी प्राप्त कर सकते हैं:
हमें 1024 का परिणाम मिला, जिसका मतलब है कि Mistral किसी भी टेक्स्ट को, उसकी लंबाई की परवाह किए बिना, 1024-आयामी वेक्टर में एम्बेड करता है।
ध्यान दें कि उच्च-आयामी एम्बेडिंग्स टेक्स्ट की जानकारी को बेहतर तरीके से कैप्चर कर सकती हैं और प्रदर्शन में सुधार कर सकती हैं, लेकिन उन्हें होस्टिंग और इन्फरेंस के लिए अधिक कंप्यूट की आवश्यकता होती है।
यद्यपि हमने इस खंड में Mixtral 8X22B मॉडल का उपयोग नहीं किया, एम्बेडिंग्स को समझना तब महत्वपूर्ण होगा जब हम एक सरल RAG पाइपलाइन बनाएँगे।
एम्बेडिंग्स का उपयोग करके पैराफ्रेज़ डिटेक्शन
जैसा कि हमने पहले कहा, यदि दो एम्बेडिंग्स के बीच की दूरी कम है, तो उनका अर्थ निकट हो सकता है। इस विचार का विस्तार करते हुए, हम एक प्राथमिक पैराफ्रेज़ डिटेक्टर बना सकते हैं क्योंकि यदि दो वाक्यों के बीच की दूरी कम है, तो संभावना है कि वे एक-दूसरे के पैराफ्रेज़ हों।
पहले, हम एक फ़ंक्शन बनाएँगे जो दिए गए इनपुट के लिए एम्बेडिंग वेक्टर लौटाता है:
फिर, हम उन वाक्यों की सूची परिभाषित करेंगे जिन्हें हम एक-दूसरे के विरुद्ध पैराफ्रेज़िंग के लिए जाँचना चाहते हैं और उनकी एम्बेडिंग्स प्राप्त करेंगे:
फिर, हम
itertoolsका उपयोग करके वाक्यों के सभी संभव दो-दो के संयोजन बनाएँगे:फिर, हम प्रत्येक वाक्य-एम्बेडिंग जोड़ी के बीच Euclidean दूरी प्रिंट करेंगे और परिणाम दिखाएँगे:
दूसरी जोड़ी के बीच की दूरी कम है, जो इंगित करता है कि वे एक-दूसरे के पैराफ्रेज़ हो सकते हैं।
RAG पाइपलाइन में Mixtral 8X22B का उपयोग
LLMs ढेरों डेटा पर प्रशिक्षित होते हैं, लेकिन वे हमेशा अद्यतन नहीं होते और आपके निजी डेटासेट्स तक उनकी पहुँच नहीं होती। यदि आप चाहते हैं कि मॉडल अन्य मौजूदा डेटासेट्स पर प्रश्नों के उत्तर दे, तो उन्हें फाइन-ट्यून करना बहुत महँगा है।
इसीलिए Retrieval Augmented Generation (RAG) पाइपलाइनों की लोकप्रियता बढ़ी है। महँगे फाइन-ट्यूनिंग के बिना, आप किसी LLM को ऐसी कस्टम जानकारी प्रोसेस करना सिखा सकते हैं जो उसके प्रशिक्षण का हिस्सा नहीं थी और उसके बारे में प्रश्नों के उत्तर दिला सकते हैं।
इस खंड में, हम एक बेसिक RAG पाइपलाइन बनाएँगे जो कल की खबरों से जानकारी सीखती है, इस 1440 लेख में। मैंने खबर का एक हिस्सा इस टेक्स्ट फ़ाइल में सहेजा है, जिसे आप मेरे GitHub से डाउनलोड कर सकते हैं या बस कॉपी/पेस्ट करके
news_piece.txtनामक फ़ाइल में सहेज सकते हैं।फ़ाइल की सामग्री पढ़ने के लिए, हम pathlib लाइब्रेरी का उपयोग कर सकते हैं:
फिर, हम दस्तावेज़ को टुकड़ों में विभाजित करेंगे क्योंकि RAG सिस्टम्स टेक्स्ट के टुकड़ों में होने पर बेहतर प्रदर्शन करते हैं। इस उदाहरण में, हम टेक्स्ट को 512 अक्षरों के टुकड़ों में विभाजित करेंगे:
इसके बाद, हम पिछले खंड के
get_text_embeddingफ़ंक्शन का उपयोग करके प्रत्येक टुकड़े की एम्बेडिंग्स प्राप्त करेंगे:अगला, एम्बेडिंग्स को प्रभावी प्रोसेसिंग और रिट्रीवल के लिए किसी वेक्टर डेटाबेस में स्टोर करना आम प्रथा है। वेक्टर डेटाबेस के लिए कई विकल्प मौजूद हैं। हम
faissका उपयोग करेंगे—समानता खोज के लिए एक ओपन-सोर्स डेटाबेस।indexIndexक्लास का एक इंस्टेंस है, जो हमारे डेटाबेस की संरचना परिभाषित करता है।dएम्बेडिंग स्पेस के आयाम के लिए है।addमेथड चलाने से हमारे दस्तावेज़ से जानकारी वेक्टर डेटाबेस में जुड़ जाती है, जिसका मतलब है कि अब हम इसके बारे में प्रश्न पूछ सकते हैं। लेकिन उससे पहले, हमारे किसी भी प्रश्न को भी एम्बेडिंग में बदला जाना चाहिए:फिर, हम
question_embeddingsऐरे कोIndexऑब्जेक्ट केsearchमेथड को दे सकते हैं:searchमेथड वे वेक्टर लौटाता है जिनमें सबसे अधिक संभावना है कि हमारे प्रश्नों के उत्तर हों (समानता खोज का उपयोग करके):अब, हम इस टेक्स्ट को Mixtral 8X22B मॉडल के लिए संदर्भ (कॉन्टेक्स्ट) के रूप में पास कर सकते हैं और इसके बारे में अपने प्रश्न पूछ सकते हैं। चलिए प्रॉम्प्ट बनाते हैं:
अब, हम इसे
clientके माध्यम से मॉडल को पास कर सकते हैं:उत्तर सही हैं!
हमने एक बहुत ही बेसिक RAG पाइपलाइन बनाई है। व्यवहार में, RAG पाइपलाइनें बहुत शक्तिशाली होती हैं—वे विभिन्न प्रकार के इनपुट (टेक्स्ट, इमेज, ऑडियो, वीडियो) संभाल सकती हैं और हमारी एकल टेक्स्ट फ़ाइल वाली संस्करण की तुलना में बड़े पैमाने पर काम कर सकती हैं।
यदि आप शक्तिशाली RAG पाइपलाइन बनाना सीखना चाहते हैं, तो हमारा How to Build LLM Applications with LangChain ट्यूटोरियल देखें।
फंक्शन कॉलिंग
Mixtral 8X22B मॉडल की मूल क्षमताओं में से एक है फंक्शन कॉलिंग। LLMs के संदर्भ में, फंक्शन कॉलिंग एक तकनीक है जो LLMs को प्रॉम्प्ट्स को इस तरह समझने और उत्तर देने देती है कि विशिष्ट फ़ंक्शन्स का निष्पादन ट्रिगर हो। इसका अर्थ इस प्रकार है:
फंक्शन कॉलिंग कैसे काम करती है, यह प्रदर्शित करना इस लेख के दायरे से बाहर है। हालाँकि, आप इसे क्रियान्वयन में देखने के लिए Mistral AI दस्तावेज़ का यह पेज देख सकते हैं।
निष्कर्ष
इस लेख में, हमने Mistral AI द्वारा अप्रैल 2024 में जारी किए गए Mixtral 8X22B मॉडल के बारे में जाना। अपनी आर्किटेक्चरल खूबियों के कारण, यह अब अग्रणी ओपन-सोर्स LLMs में से एक है, जो कई बेंचमार्क्स पर Llama 2 और Command R+ जैसे लोकप्रिय मॉडलों को पीछे छोड़ता है।
इसकी आर्किटेक्चर विवरणों के अलावा, हमने इसे कुछ व्यावहारिक परिदृश्यों में उपयोग करना सीखा, जैसे टेक्स्ट जनरेशन, पैराफ्रेज़ डिटेक्शन और RAG पाइपलाइन बनाना। यदि आप Mixtral 8X22B मॉडल की पूरी क्षमता को अनलॉक करना चाहते हैं, तो ये संबंधित संसाधन देखें: