LangChain में एम्बेडिंग का उपयोग कैसे करें

Langchain Mem Embedinga Ka Upayoga Kaise Karem



एम्बेडिंग टेक्स्ट स्ट्रिंग संबंधितता का एक सूचकांक है और फ़्लोटिंग पॉइंट पूर्णांकों के एक वेक्टर (सूची) द्वारा व्यक्त किया जाता है। दो सदिशों के बीच की दूरी एक माप के रूप में कार्य करती है कि वे कितने निकट से जुड़े हुए हैं; जितनी छोटी दूरी, उतनी ही निकटता। LangChain एंबेडिंग क्लास का उद्देश्य OpenAI, HuggingFace, और अन्य जैसी एम्बेडिंग सेवाओं के लिए एक इंटरफ़ेस के रूप में काम करना है।

बेस क्लास द्वारा दो विधियाँ, embed_query () और embed_documents () प्रदान की जाती हैं। इनमें से पहला एक दस्तावेज़ पर काम करता है, जबकि दूसरा कई दस्तावेज़ों पर काम कर सकता है।

यह लेख OpenAI टेक्स्ट एम्बेडिंग का उपयोग करके LangChain में एम्बेडिंग के व्यावहारिक प्रदर्शन को समझता है।







उदाहरण: OpenAI टेक्स्ट एम्बेडिंग का उपयोग करके एकल इनपुट टेक्स्ट प्राप्त करना

पहले दृष्टांत के लिए, हम एक एकल टेक्स्ट स्ट्रिंग इनपुट करते हैं और इसके लिए OpenAI टेक्स्ट एम्बेडिंग पुनः प्राप्त करते हैं। कार्यक्रम आवश्यक पुस्तकालयों को स्थापित करके शुरू होता है।



पहली लाइब्रेरी जिसे हमें अपनी परियोजना में स्थापित करने की आवश्यकता है, वह लैंगचैन है। यह पायथन मानक पुस्तकालय के साथ नहीं आता है इसलिए हमें इसे अलग से स्थापित करना होगा। चूँकि लैंगचेन PyPi पर उपलब्ध है, हम टर्मिनल पर पाइप कमांड का उपयोग करके इसे आसानी से स्थापित कर सकते हैं। इस प्रकार, हम LangChain लाइब्रेरी को स्थापित करने के लिए निम्नलिखित कमांड चलाते हैं:



$ पिप लैंगचैन स्थापित करें

आवश्यकताएँ पूरी होते ही पुस्तकालय स्थापित कर दिया जाता है।





हमें अपने प्रोजेक्ट में OpenAI लाइब्रेरी स्थापित करने की भी आवश्यकता है ताकि हम OpenAI मॉडल तक पहुँच सकें। पाइप कमांड लिखकर इस पुस्तकालय का उद्घाटन किया जा सकता है:

$ पिप openai स्थापित करें

अब, दोनों आवश्यक लाइब्रेरी हमारी प्रोजेक्ट फ़ाइल में स्थापित हैं। हमें आवश्यक मॉड्यूल आयात करना होगा।



से langchain. एम्बेडिंग . openai आयात OpenAIEmbeddings

आयात आप

आप . लगभग [ 'OPENAI_API_KEY' ] = 'स्क-Your_API_KEY'

OpenAI एम्बेडिंग प्राप्त करने के लिए, हमें OpenAIEmbeddings वर्ग को 'langchain.embeddings.openai' पैकेज से आयात करना होगा। फिर, हम API कुंजी को पर्यावरण चर के रूप में सेट करते हैं। विभिन्न OpenAI मॉडलों तक पहुँचने के लिए हमें गुप्त API कुंजी की आवश्यकता होती है। यह कुंजी OpenAI प्लेटफॉर्म से उत्पन्न की जा सकती है। बस साइन अप करें और अपनी प्रोफ़ाइल के 'गुप्त कुंजी देखें' अनुभाग से एक गुप्त कुंजी प्राप्त करें। इस कुंजी का उपयोग किसी विशिष्ट ग्राहक के लिए विभिन्न परियोजनाओं में किया जा सकता है।

पर्यावरण चर का उपयोग किसी विशेष वातावरण के लिए एपीआई कुंजियों को कार्यों में हार्डकोड करने के बजाय संग्रहीत करने के लिए किया जाता है। इसलिए, एपीआई कुंजी को पर्यावरण चर के रूप में सेट करने के लिए, हमें 'ओएस' मॉड्यूल आयात करना होगा। os.environ() विधि का उपयोग एपीआई कुंजी को पर्यावरण चर के रूप में सेट करने के लिए किया जाता है। इसमें एक नाम और एक मान होता है। हम जो नाम सेट करते हैं वह 'OPENAI_API_KEY' है और गुप्त कुंजी 'वैल्यू' पर सेट है।

नमूना = OpenAIEmbeddings ( )

इनपुट टेक्स्ट = 'यह प्रदर्शन के लिए है।'

नतीजा = नमूना। एम्बेड_क्वेरी ( इनपुट टेक्स्ट )

छपाई ( नतीजा )

छपाई ( केवल ( नतीजा ) )

हम पहले ही OpenAI एम्बेडिंग रैपर के साथ इंटरफेस कर चुके हैं। इसके बाद, हम OpenAIEmbedding क्लास के कंस्ट्रक्टर को कॉल करते हैं। OpenAI विभिन्न प्रकार के एम्बेडिंग मॉडल प्रदान करता है लेकिन आपको उनके लिए भुगतान करना होगा। यहां, हम OpenAI के डिफ़ॉल्ट एम्बेडिंग मॉडल, यानी टेक्स्ट-एम्बेडिंग-एडीए-002 के साथ जाते हैं, जो मुफ़्त है। जब आप पैरामीटर के रूप में कोई मॉडल नाम प्रदान नहीं करते हैं, तो डिफ़ॉल्ट मॉडल का उपयोग किया जाता है।

फिर, हम उस पाठ को निर्दिष्ट करते हैं जिसकी हमें एम्बेडिंग प्राप्त करनी है। पाठ 'यह प्रदर्शन के लिए है' के रूप में निर्दिष्ट किया गया है। और इसे input_text चर में संग्रहीत करें। उसके बाद, प्रदान किए गए पाठ को एम्बेड करने के लिए एम्बेड_क्वेरी () विधि को उस मॉडल के साथ कहा जाता है जिसका उपयोग किया जाता है और इनपुट_टेक्स्ट जिसमें एम्बेडिंग को पुनः प्राप्त करने के लिए पाठ स्ट्रिंग होती है जो एक पैरामीटर के रूप में प्रदान की जाती है। पुनर्प्राप्त एम्बेडिंग को परिणाम ऑब्जेक्ट को असाइन किया गया है।

अंत में, परिणाम देखने के लिए, हमारे पास पायथन का प्रिंट () तरीका है। हमें केवल उस वस्तु को पास करना होगा जो उस मान को संग्रहीत करता है जिसे हम प्रिंट () विधि में प्रदर्शित करना चाहते हैं। इसलिए, हम इस फ़ंक्शन को दो बार कॉल करते हैं; पहला फ्लोटिंग नंबरों की सूची प्रदर्शित करने के लिए और दूसरा इसके साथ लेन () पद्धति का उपयोग करके इन मानों की लंबाई को प्रिंट करने के लिए।

फ़्लोटिंग मानों की सूची निम्न स्नैपशॉट में इन मानों की लंबाई के साथ देखी जा सकती है:

उदाहरण: OpenAI टेक्स्ट एम्बेडिंग का उपयोग करके एकाधिक इनपुट टेक्स्ट/दस्तावेज़ प्राप्त करना

एकल इनपुट पाठ के लिए एम्बेडिंग प्राप्त करने के अलावा, हम इसे कई इनपुट स्ट्रिंग्स के लिए भी पुनः प्राप्त कर सकते हैं। हम इसे इस दृष्टांत में लागू करते हैं।

हमने पिछले उदाहरण में पहले ही लाइब्रेरी स्थापित कर दी हैं। एक और पुस्तकालय जिसे हमें यहाँ स्थापित करने की आवश्यकता है, वह है पायथन की टिकटोकन लाइब्रेरी। इसे स्थापित करने के लिए टर्मिनल पर कमांड लिखें:

$ पिप tiktoken स्थापित करें

tiktoken पैकेज एक बाइट पेयर एन्कोडिंग टोकनाइज़र है। इसका उपयोग OpenAI मॉडल के साथ किया जाता है और टेक्स्ट को टोकन में तोड़ता है। इसका उपयोग इसलिए किया जाता है क्योंकि निर्दिष्ट OpenAI मॉडल के लिए प्रदान की गई स्ट्रिंग्स कभी-कभी थोड़ी लंबी होती हैं। तो, यह टेक्स्ट को विभाजित करता है और उन्हें टोकन में एनकोड करता है। अब, मुख्य परियोजना पर काम करते हैं।

से langchain. एम्बेडिंग . openai आयात OpenAIEmbeddings

नमूना = OpenAIEmbeddings ( openai_api_key = 'स्क-Your_API_KEY'

तार = ['
यह है के लिए प्रदर्शन। ',' यह डोरी है भी के लिए प्रदर्शन। ',' यह है एक और डेमो डोरी . ',' यह वाला है अंतिम डोरी . ']

परिणाम = model.embed_documents (तारों)

प्रिंट (परिणाम)

प्रिंट (लेन (परिणाम))

OpenAIEmbeddings वर्ग 'langchain.embeddings.openai' पैकेज से आयात किया जाता है। पिछले उदाहरण में, हम एपीआई कुंजी को पर्यावरण चर के रूप में सेट करते हैं। लेकिन इसके लिए, हम इसे सीधे कंस्ट्रक्टर को पास करते हैं। इसलिए, हमें यहां 'os' मॉड्यूल इम्पोर्ट नहीं करना है।

OpenAI मॉडल जो कि OpenAIEmbeddings है, को लागू करने के बाद, हम इसे गुप्त API कुंजी पास करते हैं। अगली पंक्ति में, टेक्स्ट स्ट्रिंग्स निर्दिष्ट हैं। यहां, हम चार टेक्स्ट स्ट्रिंग्स को ऑब्जेक्ट स्ट्रिंग्स में स्टोर करते हैं। ये तार हैं 'यह प्रदर्शन के लिए है', 'यह स्ट्रिंग प्रदर्शन के लिए भी है', 'यह एक और डेमो स्ट्रिंग है', और 'यह आखिरी स्ट्रिंग है।'

आप प्रत्येक को अल्पविराम से अलग करके कई तार निर्दिष्ट कर सकते हैं। पिछले उदाहरण में, एम्बेड_टेक्स्ट () विधि को कॉल किया गया था, लेकिन हम इसका उपयोग यहां नहीं कर सकते क्योंकि यह केवल एक टेक्स्ट स्ट्रिंग के लिए काम करता है। कई स्ट्रिंग्स को एम्बेड करने के लिए, हमारे पास जो तरीका है वह एम्बेड_दस्तावेज़ () है। इसलिए, हम इसे निर्दिष्ट OpenAI मॉडल और टेक्स्ट स्ट्रिंग्स के साथ एक तर्क के रूप में कहते हैं। आउटपुट को परिणाम वस्तु में रखा जाता है। अंत में, आउटपुट प्रदर्शित करने के लिए, पायथन प्रिंट () विधि का उपयोग ऑब्जेक्ट परिणाम के पैरामीटर के रूप में किया जाता है। साथ ही, हम इन फ़्लोटिंग मानों की लंबाई देखना चाहते हैं। इस प्रकार, हम प्रिंट () विधि के भीतर लेन () विधि का आह्वान करते हैं।

पुनर्प्राप्त आउटपुट निम्न छवि में प्रदान किया गया है:

निष्कर्ष

इस पोस्ट में LangChain में एम्बेडिंग की अवधारणा पर चर्चा की गई है। हमने सीखा कि एम्बेडिंग क्या है और यह कैसे काम करता है। टेक्स्ट स्ट्रिंग्स को एम्बेड करने का व्यावहारिक कार्यान्वयन यहां दिखाया गया है। हमने दो उदाहरण दिए। पहला उदाहरण एकल पाठ स्ट्रिंग के एम्बेडिंग को पुनः प्राप्त करने पर काम करता है और दूसरा उदाहरण OpenAI एम्बेडिंग मॉडल का उपयोग करके कई इनपुट स्ट्रिंग्स के एम्बेडिंग को प्राप्त करने के तरीके को समझता है।