मुख्य सामग्री पर जाएँ

Pinecone और OpenAI के साथ सेमांटिक सर्च

Python में OpenAI और Pinecone का उपयोग करके सेमांटिक सर्च एप्लिकेशन बनाने की चरण-दर-चरण मार्गदर्शिका।
· 13 मि॰ पढ़ें

AI के साथ खोजें

लगातार बदलते डेटा परिदृश्य और पिछले दो वर्षों में जनरेटिव AI की तेज़ प्रगति ने सेमांटिक सर्च की दिशा को पुनर्परिभाषित किया है, जिससे सेमांटिक सर्च एप्लिकेशन की लोकप्रियता लगातार बढ़ी है।

सर्च और रिट्रीवल वह प्रक्रिया है जिसमें क्वेरी मानदंडों के आधार पर किसी बड़े डेटाबेस या संग्रह से विशिष्ट जानकारी या डेटा ढूंढा और प्राप्त किया जाता है। AI में प्रगति ने अधिक सटीक, संदर्भ-सचेत, और दक्ष सर्च पद्धतियों की मांग बढ़ा दी है और हर जगह सेमांटिक सर्च एप्लिकेशन के उभार को जन्म दिया है।

सेमांटिक सर्च पारंपरिक कीवर्ड-आधारित सर्च की सीमाओं से आगे बढ़कर क्वेरी के अभिप्राय और संदर्भगत अर्थ को समझती है, जिससे अधिक प्रासंगिक और सटीक परिणाम मिलते हैं।

एंड-टू-एंड सेमांटिक सर्च एप्लिकेशन बनाने के लिए, एम्बेडिंग्स, वेक्टर डेटाबेस, डिस्टेंस मेट्रिक्स आदि जैसे कई प्रमुख सिद्धांतों को समझना होगा, और साथ ही Pinecone और OpenAI के GPT जैसे प्रोडक्ट/सेवाओं का उपयोग करना सीखना होगा ताकि एंड-टू-एंड सेमांटिक सर्च एप्लिकेशन बनाए और डिप्लॉय किए जा सकें।

इस ब्लॉग के अंत तक, पाठक सेमांटिक सर्च, एम्बेडिंग्स, और वेक्टर डेटाबेस की भूमिका के सिद्धांतों की व्यापक समझ हासिल करेंगे, और अंततः Python में सेमांटिक सर्च को निम्न का उपयोग करके लागू करना सीखेंगे:

  • Pinecone (सबसे लोकप्रिय वेक्टर डेटाबेस में से एक)
  • OpenAI का GPT एम्बेडिंग मॉडल।

यदि आप कुछ हैंड्स-ऑन अभ्यासों के साथ और सीखने के इच्छुक हैं, तो हमारा कोर्स देखें, Vector Databases for Embeddings with Pinecone।

Embedding क्या है?

एम्बेडिंग मशीन लर्निंग में एक मूलभूत अवधारणा है। यह मानव भाषा और समझ की जटिल, सूक्ष्म दुनिया और उसे संख्याओं में सटीक, गणितीय निरूपण के बीच सेतु का काम करती है।

टेक्स्ट, इमेज, ऑडियो और वीडियो जैसी असंरचित डेटा किसी विशिष्ट, व्यवस्थित प्रारूप का पालन नहीं करती, जिसके कारण पारंपरिक डेटाबेस में भंडारण और प्रोसेसिंग चुनौतीपूर्ण हो जाती है। मशीन लर्निंग और AI अनुप्रयोगों के लिए इसके विश्लेषण हेतु अक्सर वेक्टर एम्बेडिंग्स के माध्यम से इसे बहु-आयामी संख्यात्मक निरूपण में रूपांतरित करना आवश्यक होता है। असंरचित डेटा को बहु-आयामी संख्यात्मक वेक्टर में बदलने की प्रक्रिया को एम्बेडिंग कहा जाता है।

एम्बेडिंग्स टेक्स्ट, इमेज या किसी भी प्रकार के असंरचित डेटा के बहु-आयामी संख्यात्मक निरूपण होते हैं, जो मशीनों को मानव संचार की जटिलता, अवधारणाओं के बीच संबंधों या डेटा के भीतर पैटर्न को ऐसे तरीके से सीखने में सक्षम बनाते हैं जो कंप्यूटेशनली कुशल और संदर्भ-समृद्ध हो।

एक चित्र जिसमें OpenAI का टेक्स्ट और कोड एम्बेडिंग मॉडल टेक्स्ट इनपुट लेकर वेक्टर के रूप में टेक्स्ट आउटपुट दिखा रहा है।

OpenAI का टेक्स्ट और कोड एम्बेडिंग मॉडल (Image Source)

एम्बेडिंग मॉडलों के पीछे का मूल विचार यह है कि समान वस्तुओं को उच्च-आयामी स्पेस में एक-दूसरे के पास स्थित बिंदुओं के रूप में दर्शाया जा सकता है। यह अवधारणा डेटा के भीतर जटिल संबंधों—जैसे समानार्थक शब्द, उपमाएं या और भी अमूर्त कनेक्शन—को कैप्चर करने की अनुमति देती है, क्योंकि यह मानव भाषा या अन्य डेटा प्रकारों की अपार जटिलता को उस रूप में घटा देती है जिसके साथ मशीनें काम कर सकें।

उदाहरण के लिए, टेक्स्ट डेटा में शब्दों को वेक्टर (संख्याएं) में परिवर्तित किया जाता है, जो मूलतः संख्याओं की ऐरे होते हैं। ये वेक्टर भाषा मॉडल की समझ की बनावट के भीतर शब्दों के अर्थ, उपयोग और संदर्भ के सार को समेटते हैं।

एम्बेडिंग मॉडल द्वारा लौटाए गए वेक्टर की लंबाई आपके उपयोग किए जा रहे मॉडल पर निर्भर करती है। उदाहरण के लिए, यदि आप OpenAI के एम्बेडिंग मॉडल का उपयोग कर रहे हैं, तो वेक्टर की लंबाई हमेशा `1536` होगी।

एम्बेडिंग्स बनाने की प्रक्रिया

पर्दे के पीछे, एम्बेडिंग मॉडल एक विशाल न्यूरल नेटवर्क मॉडल होता है जिसे अत्यंत बड़े कॉर्पस पर प्रशिक्षित किया गया है। मॉडल इनपुट डेटा को ऐसे वेक्टर सौंपना सीखता है कि इन वेक्टरों के बीच की ज्यामितीय संबंध डेटा इंस्टेंस के बीच सेमांटिक या वैचारिक संबंधों को प्रतिबिंबित करें।

उदाहरण के लिए, एक अच्छे से प्रशिक्षित एम्बेडिंग मॉडल में, "king" का वेक्टर माइनस "man" का वेक्टर प्लस "woman" का वेक्टर उस वेक्टर के बहुत करीब आ सकता है जो "queen" का प्रतिनिधित्व करता है। अर्थों के साथ इस तरह के अंकगणितीय संचालन करने की क्षमता यह शक्तिशाली प्रदर्शन है कि एम्बेडिंग्स भाषा के अंतर्निहित अर्थशास्त्र को कैसे कैप्चर करती हैं।

न्यूरल वर्ड एम्बेडिंग्स के क्लासिकल king + woman − man ≈ queen उदाहरण को दर्शाता चित्र।

न्यूरल वर्ड एम्बेडिंग्स का क्लासिकल king + woman − man ≈ queen उदाहरण (Image Source)

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

दूसरा विकल्प, जो अधिक व्यावहारिक है, वह है किसी प्री-ट्रेंड एम्बेडिंग मॉडल का उपयोग करना। Hugging Face पर कई ओपन-सोर्स एम्बेडिंग मॉडल उपलब्ध हैं जिन्हें आप डाउनलोड करके लोकल चला सकते हैं, या आप OpenAI, Anthropic, Cohere आदि कंपनियों द्वारा प्रदान किए गए प्रोप्राइटरी मॉडल का उपयोग कर सकते हैं।

इस ब्लॉग में, हम OpenAI के `text-embedding-ada-002` मॉडल का उपयोग करेंगे, जिसकी कीमत किफायती है ($0.00010 प्रति 1K टोकन)। इसका अर्थ है कि 1000 पन्नों की एक किताब की लागत लगभग $1 से भी कम होगी।

एम्बेडिंग्स के उपयोग-प्रकरण

एम्बेडिंग्स विभिन्न डोमेनों में असंख्य अनुप्रयोगों के लिए अत्यंत महत्वपूर्ण हैं। सेमांटिक सर्च में, वे सिस्टम को साधारण कीवर्ड मैचिंग से आगे बढ़ने में सक्षम बनाती हैं, जिससे ऐसे परिणाम प्राप्त होते हैं जो क्वेरी से संदर्भगत रूप से संबंधित होते हैं, भले ही सामग्री में सटीक शब्दों का उपयोग न किया गया हो। यह क्षमता सर्च परिणामों की प्रासंगिकता और सटीकता में उल्लेखनीय सुधार करती है, जिससे जानकारी की खोज अधिक सहज और प्रभावी बनती है।

टेक्स्ट, ऑडियो, वीडियो और सभी प्रकार का डेटा

एम्बेडिंग्स केवल टेक्स्ट तक सीमित नहीं हैं। उदाहरण के लिए, इमेज एम्बेडिंग्स कंप्यूटर विज़न में समान प्रगति को सक्षम बनाती हैं, जिससे मशीनें उच्च-आयामी वेक्टर स्पेस में इमेज और वीडियो में वस्तुओं, दृश्यों और गतिविधियों को समझकर पहचान सकती हैं। यह समझ केवल पिक्सेल की पहचान करने तक सीमित नहीं है, बल्कि उन पिक्सेल का आशय क्या है, इसे ग्रहण करने तक है।

एम्बेडिंग मॉडल न सिर्फ रूपांतरकारी हैं बल्कि अत्यंत उपयोगी भी हैं, क्योंकि वे वास्तविक दुनिया के डेटा की जटिलता को एक ऐसी भाषा (संख्यात्मक वेक्टर) में बदलते हैं जिसे मशीनें समझ और उस पर कार्य कर सकें, और इस प्रकार ऐसे व्यापक अनुप्रयोगों को सक्षम करते हैं जो गहरी सेमांटिक समझ और बुद्धिमान डेटा प्रोसेसिंग पर निर्भर हैं।

एम्बेडिंग्स के बारे में अधिक जानने के लिए, Introduction to Text Embeddings with the OpenAI API ब्लॉग देखें।

Vector Database क्या है?

वेक्टर डेटाबेस गैर-रिलेशनल डेटा स्टोरेज की अपेक्षाकृत नई श्रेणी का प्रतिनिधित्व करते हैं, जो जनरेटिव AI और बड़े भाषा मॉडलों में हालिया प्रगति के कारण तेजी से लोकप्रिय हो रहे हैं।

पारंपरिक रिलेशनल डेटाबेस जो डेटा को पंक्तियों और स्तंभों में व्यवस्थित करते हैं या डॉक्यूमेंट डेटाबेस जैसे अन्य गैर-रिलेशनल स्टोर जो डेटा को json या xml ऑब्जेक्ट के रूप में व्यवस्थित करते हैं, उनसे भिन्न, वेक्टर डेटाबेस बहु-आयामी वेक्टर डेटा को कुशलतापूर्वक संग्रहीत और संभालने के लिए डिज़ाइन किए गए हैं।

वेक्टर डेटाबेस एक विशेषीकृत डेटाबेस है जो वेक्टर को संग्रहीत और क्वेरी करने के लिए ऑप्टिमाइज़्ड होता है। वेक्टर मूलतः संख्याओं के ऐरे होते हैं जो बहु-आयामी स्पेस में डेटा पॉइंट्स का प्रतिनिधित्व करते हैं।

यह चित्र दर्शाता है कि कच्चे डेटा को कैसे एम्बेड कर वेक्टर डेटाबेस में संग्रहीत किया जाता है

Image Source

वेक्टर डेटाबेस का प्रमुख लाभ उनकी समानता खोज (similarity search) को कुशलतापूर्वक करने की क्षमता है। इसका अर्थ है कि वे किसी दूरी या समानता के किसी माप के अनुसार, दिए गए क्वेरी आइटम के सबसे "निकट" आइटम को डेटाबेस में जल्दी से ढूंढ सकते हैं।

यह क्षमता सिफारिशी प्रणालियों जैसे अनुप्रयोगों के लिए महत्वपूर्ण है, जहाँ आप उपयोगकर्ता को पसंद आने वाले उत्पादों के समान उत्पाद ढूंढना चाह सकते हैं, या सेमांटिक सर्च एप्लिकेशन में, जहाँ लक्ष्य क्वेरी वाक्यांश से सेमांटिक रूप से संबंधित दस्तावेज़ ढूंढना होता है।

वेक्टर डेटाबेस वेक्टरों को इंडेक्स और सर्च करने के लिए विभिन्न एल्गोरिदम का उपयोग करते हैं, जो अक्सर Approximate Nearest Neighbor (ANN) सर्च तकनीकों पर निर्भर होते हैं।

सेमांटिक सर्च और उसके उपयोग-प्रकरण

सेमांटिक सर्च इस बात में उल्लेखनीय प्रगति का प्रतिनिधित्व करती है कि सर्च इंजन उपयोगकर्ता क्वेरी को कैसे समझते और प्रोसेस करते हैं। पारंपरिक विधियाँ जहाँ क्वेरी टेक्स्ट और दस्तावेज़ सामग्री के बीच शाब्दिक मेल पर केंद्रित होती हैं, वहीं सेमांटिक सर्च क्वेरी के पीछे के अभिप्राय और संदर्भगत अर्थ में उतरती है।

यह चित्र Google सर्च इंजन के उदाहरण से लैक्सिकल सर्च और सेमांटिक सर्च के अंतर को दिखाता है।

Lexical Search बनाम Semantic Search (Image Source)

पिछले दशक में सेमांटिक सर्च की ओर सर्च तकनीकों का विकास कई कारकों द्वारा प्रेरित रहा है। Siri, Alexa और Google Assistant जैसे वर्चुअल असिस्टेंट द्वारा संचालित वॉइस सर्च उपयोगकर्ता कमांड को समझने और निष्पादित करने के लिए बड़े पैमाने पर नैचुरल लैंग्वेज प्रोसेसिंग पर निर्भर करती है।

वॉइस सर्च का संवादात्मक स्वरूप संदर्भ की समझ की मांग करता है, जिसके लिए सर्च इंजनों को पूरे वाक्यों या अधिक लंबे वाक्यांशों के पीछे के अर्थ को पकड़ना पड़ता है।

मानव भाषा की जटिलता और सर्च की सीमाएँ

मानव भाषा की जटिलता पारंपरिक लैक्सिकल-आधारित सर्च एप्लिकेशन के लिए एक बड़ा अवरोध है, जिसे सेमांटिक सर्च काफी तेज़ी से दूर कर रही है। अंग्रेज़ी भाषा में हजारों ऐसे शब्द हैं जिनके अनेक अर्थ होते हैं और वास्तविक अर्थ उस संदर्भ पर निर्भर करता है जिसमें शब्द का प्रयोग हुआ है। ऐसे शब्दों को बहुअर्थी (polysemous) शब्द कहा जाता है।

उदाहरण के लिए, "table" शब्द संदर्भ के अनुसार एक फर्नीचर के टुकड़े या डेटा के विन्यास को दर्शा सकता है।

मल्टीमॉडल बड़े भाषा मॉडलों (LLMs) का उदय

मल्टीमॉडल LLMs का उदय सेमांटिक सर्च एप्लिकेशन की विस्फोटक लोकप्रियता के पीछे एक प्रमुख चालक है। खोजकर्ता के इरादे और खोज योग्य डेटा-स्पेस में प्रकट होने वाले शब्दों के संदर्भगत अर्थ को समझने का लक्ष्य रखने वाली सेमांटिक सर्च को मल्टीमॉडल LLMs की क्षमताएँ उल्लेखनीय रूप से सशक्त बना रही हैं।

जैसे-जैसे ये मॉडल विकसित हो रहे हैं, वे केवल टेक्स्ट को समझने और जनरेट करने तक सीमित नहीं हैं, बल्कि इमेज, ऑडियो और वीडियो सहित विभिन्न प्रारूपों में सामग्री की व्याख्या और रचना भी कर रहे हैं। इन प्रगतियों का अर्थ है कि अब खोजें सिर्फ कीवर्ड मैचिंग से आगे बढ़कर भाषा की बारीकियों, विभिन्न मीडिया की सूक्ष्मताओं और अवधारणाओं के जटिल संबंधों को समझ सकती हैं।

उदाहरण के लिए, कोई सर्च क्वेरी प्राकृतिक भाषा में की जा सकती है, और सिस्टम ऐसे परिणाम लौट सकता है जो केवल टेक्स्ट-आधारित ही नहीं बल्कि प्रासंगिक इमेज, वीडियो क्लिप या ऑडियो स्निपेट भी शामिल करते हों—जिन्हें AI ने क्वेरी के इरादे से मेल कराने हेतु समझा और चुना हो।

उपयोग-प्रकरण और अनुप्रयोग

सेमांटिक सर्च विभिन्न डोमेनों में विस्तृत अनुप्रयोगों की पेशकश करती है, जो सर्च परिणामों की प्रासंगिकता और परिशुद्धता को बढ़ाने में महत्वपूर्ण लाभ देती है:

  • ई-कॉमर्स: ऑनलाइन रिटेलर उत्पाद खोज को बेहतर बनाने के लिए सेमांटिक सर्च का उपयोग करते हैं। क्वेरी के पीछे के इरादे को समझकर, ई-कॉमर्स प्लेटफ़ॉर्म ऐसे उत्पाद दिखा सकते हैं जो ख़रीददार की ज़रूरतों से सर्वश्रेष्ठ मेल खाते हों, भले ही क्वेरी अस्पष्ट हो या उत्पाद विवरण में मौजूद नहीं रहने वाले पर्यायवाची का उपयोग किया गया हो।
  • कंटेंट डिस्कवरी: कंटेंट प्लेटफ़ॉर्म सेमांटिक सर्च का उपयोग उपयोगकर्ता की रुचियों और पिछले इंटरैक्शन से निकटता से मेल खाते आर्टिकल, वीडियो और अन्य कंटेंट की सिफारिश करने के लिए करते हैं, भले ही सटीक सर्च शब्द कंटेंट में न हों।
  • कस्टमर सपोर्ट: सेमांटिक सर्च चैटबॉट और सपोर्ट सिस्टम की प्रभावशीलता बढ़ाती है, क्योंकि यह उन्हें ग्राहक प्रश्नों को अधिक सटीक रूप से समझने और उन मुद्दों के लिए संदर्भगत रूप से प्रासंगिक उत्तर प्रदान करने में सक्षम बनाती है।
  • नॉलेज मैनेजमेंट: संगठनों में, सेमांटिक सर्च कर्मचारियों को उनकी क्वेरी के संदर्भ को समझकर जानकारी और दस्तावेज़ अधिक कुशलता से खोजने में मदद करती है, जिससे सर्च में लगने वाला समय घटता है और उत्पादकता बढ़ती है।
  • वॉइस सर्च ऑप्टिमाइज़ेशन: जैसे-जैसे वॉइस सर्च अधिक लोकप्रिय हो रही है, सेमांटिक सर्च ऐसे क्वेरी में उपयोग की गई प्राकृतिक, संवादात्मक भाषा की व्याख्या में महत्वपूर्ण भूमिका निभाती है, जिससे वर्चुअल असिस्टेंट सटीक उत्तर दे सकें।

Vector Databases के बारे में और जानने में रुचि है? यह श्रेष्ठ वेक्टर डेटाबेस पर व्यापक गाइड देखें।

Pinecone का अवलोकन

वेक्टर डेटाबेस के परिदृश्य को दिखाता चित्र।

वेक्टर डेटाबेस का परिदृश्य (Image Source)

Pinecone एक विशेषीकृत वेक्टर डेटाबेस है जिसे जटिल, उच्च-आयामी डेटा को संभालने के लिए डिज़ाइन किया गया है। यह उन्नत सर्च और इंडेक्सिंग क्षमताएँ प्रदान करता है, जिससे डेटा इंजीनियर और वैज्ञानिक बड़े पैमाने के मशीन लर्निंग प्रोजेक्ट कुशलतापूर्वक बना और चला सकें।

Pinecone की प्रमुख विशेषताएँ

  • पूर्णतः प्रबंधित: Pinecone संपूर्ण इन्फ्रास्ट्रक्चर और मेंटेनेंस का ध्यान रखता है, जिससे डेवलपर्स बैकएंड प्रबंधन की झंझट के बिना अपने एप्लिकेशन बनाने और डिप्लॉय करने पर ध्यान केंद्रित कर सकें।
  • स्केलेबिलिटी: यह आसानी से अरबों वेक्टर संभाल सकता है, और क्षैतिज रूप से स्केल होकर भारी-भरकम मशीन लर्निंग कार्यों की मांग को पूरा कर सकता है।
  • रियल-टाइम डेटा इन्जेशन: Pinecone नए डेटा को तुरंत जोड़ने और इंडेक्स करने की सुविधा देता है, जिससे कोई डाउनटाइम या देरी नहीं होती।
  • तेज़ सर्च: त्वरित सर्च परिणामों के लिए उन्नत एल्गोरिदम का उपयोग करता है, जो तात्कालिक प्रतिक्रिया की आवश्यकता वाले अनुप्रयोगों के लिए महत्वपूर्ण है।
  • आसान इंटीग्रेशन: इसका API प्रयोग में आसान है, जिससे इसे मौजूदा मशीन लर्निंग पाइपलाइनों और वर्कफ़्लो में सम्मिलित करना सरल हो जाता है।

यदि आप Pinecone में और गहराई से उतरना चाहते हैं, तो Datacamp पर Mastering Vector Databases with Pinecone Tutorial: A Comprehensive Guide देखें।

OpenAI का अवलोकन

OpenAI अपने प्लेटफ़ॉर्म API के माध्यम से सभी मॉडलों तक पहुँच प्रदान करता है। इसमें लोकप्रिय GPT, DALL-E और Whisper मॉडल के अलावा तीन एम्बेडिंग मॉडल शामिल हैं।

OpenAI वेबसाइट पर उपलब्ध सभी एम्बेडिंग मॉडलों का स्क्रीनशॉट।

Source

इन APIs से HTTP अनुरोधों के माध्यम से इंटरफ़ेस किया जा सकता है, जिससे किसी भी ऐसी प्रोग्रामिंग भाषा के साथ संगतता संभव होती है जो HTTP संचार कर सकती है।

Python उपयोगकर्ता इन APIs के साथ इंटरैक्ट करने के लिए openai लाइब्रेरी का भी उपयोग कर सकते हैं, जो उपयोग को और भी सरल और आसान बना देती है। यह लाइब्रेरी pip install openai का उपयोग करके इंस्टॉल की जा सकती है।

Python में openai लाइब्रेरी के साथ OpenAI API का उपयोग करने के लिए बहुत कम कोड की आवश्यकता होती है।

Python में OpenAI लाइब्रेरी के उपयोग का उदाहरण

import os
os.environ["OPENAI_API_KEY"] = " "


from openai import OpenAI
client = OpenAI()


completion = client.chat.completions.create(
  model="gpt-4",
  messages=[
    {"role": "system", "content": "You are expert in Fitness & Health."},
    {"role": "user", "content": "Explain what is Keto diet?"}
  ]
)


print(completion.choices[0].message)

आउटपुट: (truncated)

ChatCompletionMessage(content="The ketogenic diet, commonly known as the keto diet, is a low-carbohydrate, high-fat diet. The diet is named after ketosis, a metabolic state where your body starts burning fat for energy instead of carbohydrates. This is accomplished by drastically reducing your intake of carbohydrates and increasing your intake of fats….", role='assistant', function_call=None, tool_calls=None)

जानिए कैसे ChatGPT और बड़े भाषा मॉडल डिजिटल परिदृश्य को बदल रहे हैं! Datacamp का चीट शीट देखें और उपलब्ध सबसे शक्तिशाली AI APIs में से एक — OpenAI API — का लाभ उठाने की आवश्यकताएँ सीखें।

OpenAI और Pinecone API का उपयोग करके Python में सेमांटिक सर्च का एंड-टू-एंड इम्प्लीमेंटेशन

1. OpenAI और Pinecone के लिए साइन अप करें

OpenAI अकाउंट के लिए साइन अप करने के बाद, सीधे यहाँ जाएँ: https://platform.openai.com/api-keys

platform.openai.com का उपयोग करके API कुंजी कैसे बनाएं, यह दिखाता स्क्रीनशॉट

API Keys platform.openai.com

Pinecone के लिए, अपने अकाउंट में लॉगिन करें और API Keys पर क्लिक करें। आप दाएँ कोने में `Click API Key` बटन पर क्लिक कर सकते हैं।

OpenAI के विपरीत, Pinecone में, जब आप API कुंजी जेनरेट करते हैं तो उसे तुरंत कॉपी करना आवश्यक नहीं है, क्योंकि Actions कॉलम के तहत एक कॉपी आइकन होता है जिसका उपयोग आप कभी भी कर सकते हैं।

pinecone प्लेटफ़ॉर्म अकाउंट का उपयोग करके API कैसे बनाएं, यह दिखाता स्क्रीनशॉट।

API Keys - Pinecone

OpenAI और Pinecone API कुंजियाँ प्राप्त करने के बाद, उन्हें नोटबुक में वेरिएबल्स को असाइन करें या Python के os मॉड्यूल का उपयोग करके पर्यावरण वेरिएबल के रूप में सेट करें।

OPENAI_API_KEY = '...'
PINECONE_API_KEY = '...'

2. Python लाइब्रेरीज़ इंस्टॉल करना

इस ट्यूटोरियल को लागू करने के लिए, आपको निम्नलिखित लाइब्रेरीज़ pip का उपयोग करके इंस्टॉल करनी होंगी। आपको यही सटीक संस्करण उपयोग करने होंगे, अन्यथा नीचे दिया गया कोड काम नहीं करेगा।

!pip install pinecone-client==3.0.0
!pip install pinecone-datasets==0.7.0
!pip install openai==0.28

3. नमूना डेटासेट

pinecone-datasets लाइब्रेरी में कई डेटासेट शामिल हैं जो पहले से OpenAI के embedding-ada-002 मॉडल से एम्बेड किए गए हैं।

इस उदाहरण के लिए, हम `wikipedia-simple-text-embedding-ada-002-100K` डेटासेट का उपयोग करेंगे, जिसके 100,000 दस्तावेज़ों और उनके एम्बेडिंग्स में से केवल 5,000 का सैंपल लेंगे।

import pinecone_datasets

# load dataset from pinecone
dataset = pinecone_datasets.load_dataset('wikipedia-simple-text-embedding-ada-002-100K')

# drop metadata column and renamed blob to metadata
dataset.documents.drop(['metadata'], axis=1, inplace=True)
dataset.documents.rename(columns={'blob': 'metadata'}, inplace=True)

# sample 5k documents
dataset.documents.drop(dataset.documents.index[5_000:], inplace=True)
dataset.head()

pinecone-datasets लाइब्रेरी से नमूना डेटासेट `wikipedia-simple-text-embedding-ada-002-100K` का स्क्रीनशॉट।

नमूना डेटासेट

3. Pinecone इंडेक्स बनाएँ

Pinecone में, एक इंडेक्स वेक्टर डेटा के लिए सर्वोच्च संगठनात्मक इकाई का प्रतिनिधित्व करता है। यह वेक्टरों का भंडारण संभालता है, अपने संग्रहीत वेक्टरों के लिए क्वेरी प्रोसेस करता है और अपने पास मौजूद वेक्टर डेटा पर विभिन्न ऑपरेशंस करता है।

from pinecone import Pinecone, ServerlessSpec

# configure client
pc = Pinecone(api_key=PINECONE_API_KEY)

# configure serverless spec
spec = ServerlessSpec(cloud='aws', region='us-west-2')

# set index name
index_name = 'semantic-search-demo'

# we create a new index
pc.create_index(
        index_name,
        dimension=1536,  # dimensionality of text-embedding-ada-002
        metric='cosine',
        spec=spec
    )

उपरोक्त कोड Pinecone इंस्टेंस को इनिशियलाइज़ करता है और semantic-search-demo नामक इंडेक्स बनाता है। इस बिंदु पर, आप UI में भी इस इंडेक्स को देख सकेंगे।

pinecone UI पर इंडेक्स पेज का स्क्रीनशॉट जो दर्शाता है कि semantic-search-demo इंडेक्स सफलतापूर्वक बना है

4. डेटा इन्सर्ट करें

चूँकि हमारे डेटा में पहले से एम्बेडेड रिप्रेज़ेंटेशन शामिल हैं, हम एम्बेडिंग प्रक्रिया को छोड़कर सीधे नए बने इंडेक्स में डेटा इन्सर्ट कर सकते हैं।

जिन डेटासेट में एम्बेडेड रिप्रेज़ेंटेशन नहीं होते, उनमें पहले OpenAI API का उपयोग करके कच्चे डेटा को एम्बेड करें (निर्देशों के लिए नीचे चरण 5 देखें)।

index = pc.Index(index_name)
for batch in dataset.iter_documents(batch_size=100):
    index.upsert(batch)

कोड सफलतापूर्वक चलने के बाद, आप यूज़र इंटरफेस में भी डेटा देख सकते हैं।

Pinecone UI का स्क्रीनशॉट जो अभी-अभी इन्सर्ट किए गए डेटा को दिखा रहा है।

5. OpenAI API का उपयोग करके नया डेटा एम्बेड करें

नए डेटा या क्वेरीज़ को मिलते-जुलते वेक्टर डायमेंशन सुनिश्चित करने के लिए उसी मॉडल से एम्बेड करना आवश्यक है। चूँकि हमारा डेटासेट text-embedding-ada-002 का उपयोग करता है, हम एक ऐसी फ़ंक्शन बनाएँगे जो OpenAI API का उपयोग करके इसी मॉडल से नई क्वेरीज़ को एम्बेड करे।

import openai
openai.api_key = OPENAI_API_KEY


def get_embedding(text_to_embed):
  # Embed a line of text
  response = openai.Embedding.create(
      model= "text-embedding-ada-002",
      input=[text_to_embed]
  )
  # Extract the AI output embedding as a list of floats
  embedding = response['data'][0]['embedding']
   
  return embedding

6. नए डेटा के साथ वेक्टर डेटाबेस को क्वेरी करें

query = "What are some easter related events in Western Christianity?"

result = get_embedding(query)
print(len(result))
print(result)

आउटपुट:

1536

[0.014745471067726612, -0.03282099589705467, -0.006603493355214596, -0.0025058642495423555,.........]

result की लंबाई 1536 है, जो इंडेक्स बनाते समय निर्दिष्ट dimension से मेल खाती है।

सर्च क्वेरी भेजना काफी सीधा है:

query_result = index.query(vector=result, top_k=3, include_metadata=True)
print(query_result)

आउटपुट:

top_k=3 के साथ भेजी गई क्वेरी के आउटपुट का स्क्रीनशॉट।

query_result उपयोगकर्ता की क्वेरी के अनुरूप शीर्ष 3 मैचों की सूची के साथ एक डिक्शनरी तैयार करता है। अब इन Top N मैचों का उपयोग डाउनस्ट्रीम कार्यों के लिए किया जा सकता है, जैसे Retrieval Augmented Generation (RAG) परिदृश्यों में प्रॉम्प्ट के लिए संदर्भ प्रदान करना या चैटबॉट बनाना।

निष्कर्ष

इस ट्यूटोरियल में, हमने सेमांटिक सर्च एप्लिकेशन की संपूर्ण कार्यप्रणाली को समझने के लिए एम्बेडिंग और वेक्टर डेटाबेस जैसी कई प्रमुख आधारभूत अवधारणाओं का परिचय दिया है।

जनरेटिव AI के आगमन और मल्टीमॉडल LLMs के सतत विकास के साथ, सेमांटिक सर्च की क्षमता विस्तृत हुई है, जो असंरचित डेटा की जटिलता और बारीकियों की अद्वितीय परिशुद्धता और समझ प्रदान करती है।

आधुनिक वेक्टर डेटाबेस Pinecone और OpenAI द्वारा प्रदान किए गए परिष्कृत एम्बेडिंग मॉडलों की क्षमताओं का लाभ उठाकर, डेवलपर्स और डेटा वैज्ञानिक अब ऐसे सेमांटिक सर्च एप्लिकेशन बनाने के साधन अपने हाथों में रखते हैं जो पारंपरिक कीवर्ड-आधारित पद्धतियों से आगे निकल जाते हैं।

इस गाइड के माध्यम से, हमने यह भी जाना कि एम्बेडिंग्स कैसे मानव भाषा की जटिलता और मशीन लर्निंग के लिए आवश्यक संख्यात्मक निरूपण के बीच की खाई को पाटती हैं, और कैसे ये निरूपण मशीनों को संदर्भ और इरादे की सूक्ष्मताओं को समझने में सक्षम बनाते हैं।

यह स्पष्ट है कि सर्च का भविष्य AI द्वारा संचालित भाषा और अन्य असंरचित डेटा रूपों की समझ में निहित है। चाहे ई-कॉमर्स हो, कंटेंट डिस्कवरी, कस्टमर सपोर्ट या नॉलेज मैनेजमेंट—इस ब्लॉग में उल्लिखित सिद्धांत और अभ्यास सेमांटिक सर्च की शक्ति का दोहन करके अधिक बुद्धिमान, उत्तरदायी और उपयोगकर्ता-केंद्रित सर्च अनुभव बनाने के लिए एक बुनियादी रूपरेखा प्रदान करते हैं।

यदि आप Pinecone का उपयोग करके सेमांटिक सर्च एप्लिकेशन बनाना सीखना चाहते हैं, तो Semantic Search with Pinecone कोड-अलॉन्ग देखें, या यदि आप ChatGPT जैसे लोकप्रिय AI एप्लिकेशनों को आधार देने वाली कार्यक्षमता के बारे में और जानना चाहते हैं, तो कोर्स Working with the OpenAI API देखें। साथ ही, हमारा कोर्स Vector Databases for Embeddings with Pinecone देखना न भूलें।

Moez Ali

लेखक

Moez Ali

डेटा साइंटिस्ट, PyCaret के संस्थापक और निर्माता

विषय