paint-brush
लांसडीबी: डेटा जटिलता के विरुद्ध द्वंद्व में आपका विश्वसनीय घोड़ाद्वारा@minio
25,852 रीडिंग
25,852 रीडिंग

लांसडीबी: डेटा जटिलता के विरुद्ध द्वंद्व में आपका विश्वसनीय घोड़ा

द्वारा MinIO8m2024/02/01
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

मिनिओ और लांसडीबी का उपयोग करके परफॉर्मेंट, स्केलेबल और भविष्य-प्रूफ एमएल/एआई आर्किटेक्चर बनाने के लिए इस ट्यूटोरियल में दी गई नींव पर निर्माण करने के कई तरीके हैं।

People Mentioned

Mention Thumbnail
featured image - लांसडीबी: डेटा जटिलता के विरुद्ध द्वंद्व में आपका विश्वसनीय घोड़ा
MinIO HackerNoon profile picture
0-item
1-item

लांस पर निर्मित, एक ओपन-सोर्स स्तंभ डेटा प्रारूप, लांसडीबी में कुछ दिलचस्प विशेषताएं हैं जो इसे एआई/एमएल के लिए आकर्षक बनाती हैं। उदाहरण के लिए, LanceDB विभिन्न डेटा प्रकारों को संभालने की क्षमता के साथ स्पष्ट और अंतर्निहित वैश्वीकरण का समर्थन करता है। LanceDB जैसे अग्रणी एमएल फ्रेमवर्क के साथ एकीकृत है पायटोरच और टेंसरफ़्लो . कूलर अभी भी लांसडीबी की तेज़ पड़ोसी खोज है जो अनुमानित निकटतम पड़ोसी एल्गोरिदम का उपयोग करके समान वैक्टर की कुशल पुनर्प्राप्ति को सक्षम बनाता है। ये सभी मिलकर एक वेक्टर डेटाबेस बनाते हैं जो तेज़, उपयोग में आसान और इतना हल्का है कि इसे कहीं भी तैनात किया जा सकता है।


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


इस ट्यूटोरियल के पूरा होने पर, आप किसी भी डेटा चुनौती से निपटने के लिए LanceDB और MiniIO का उपयोग करने के लिए तैयार होंगे।

लांस क्या है?

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


इसका एक प्रमुख विशेषताऐं वेक्टर खोज करने की क्षमता है, जो उपयोगकर्ताओं को खोजने की अनुमति देती है निकटतम पड़ोसी 1 मिलीसेकंड से कम समय में और OLAP-प्रश्नों को वेक्टर खोज के साथ संयोजित करें। लांस प्रारूप के लिए अन्य उत्पादन अनुप्रयोगों में एमएल अनुप्रयोगों के लिए एज-डिप्लॉयड कम-विलंबता वेक्टर डेटाबेस, सेल्फ-ड्राइविंग कार कंपनियों में मल्टी-मोडल डेटा का बड़े पैमाने पर भंडारण, पुनर्प्राप्ति और प्रसंस्करण, और ई में अरब-स्केल + वेक्टर वैयक्तिकृत खोज शामिल हैं। -वाणिज्य कंपनियाँ। लांस फ़ाइल प्रारूप की अपील का एक हिस्सा पांडा जैसे लोकप्रिय टूल और प्लेटफ़ॉर्म के साथ इसकी अनुकूलता है। डकडीबी , ध्रुवीय, और प्यारो . भले ही आप LanceDB का उपयोग नहीं करते हैं, फिर भी आप अपने डेटा स्टैक में Lance फ़ाइल स्वरूप का लाभ उठा सकते हैं।

एआई और मशीन लर्निंग के लिए निर्मित

LanceDB जैसे वेक्टर डेटाबेस अपनी दक्षता के कारण AI और मशीन लर्निंग अनुप्रयोगों के लिए विशिष्ट लाभ प्रदान करते हैं वियुग्मित भंडारण और आर्किटेक्चर की गणना और डेटा के उच्च-आयामी वेक्टर अभ्यावेदन की पुनर्प्राप्ति। यहां कुछ प्रमुख उपयोग के मामले दिए गए हैं:


प्राकृतिक भाषा प्रसंस्करण (एनएलपी):


सिमेंटिक खोज: केवल कीवर्ड ही नहीं, बल्कि अर्थ पर आधारित प्रश्न के समान दस्तावेज़ या अंश खोजें। यह चैटबॉट प्रतिक्रियाओं, वैयक्तिकृत सामग्री अनुशंसाओं और ज्ञान पुनर्प्राप्ति प्रणालियों को शक्ति प्रदान करता है।


प्रश्न उत्तर: अर्थ संबंधी समानता के आधार पर प्रासंगिक पाठ्यांशों को ढूंढकर जटिल प्रश्नों को समझें और उनका उत्तर दें।


विषय मॉडलिंग: बड़े पाठ संग्रहों में गुप्त विषयों की खोज करें, जो दस्तावेज़ क्लस्टरिंग और प्रवृत्ति विश्लेषण के लिए उपयोगी हैं।


कंप्यूटर दृष्टि:


छवि और वीडियो पुनर्प्राप्ति: दृश्य सामग्री के आधार पर समान छवियों या वीडियो की खोज करें, जो सामग्री-आधारित छवि पुनर्प्राप्ति, उत्पाद खोज और वीडियो विश्लेषण के लिए महत्वपूर्ण है।


ऑब्जेक्ट डिटेक्शन और वर्गीकरण: समान प्रशिक्षण डेटा को कुशलतापूर्वक पुनर्प्राप्त करके ऑब्जेक्ट डिटेक्शन और वर्गीकरण मॉडल की सटीकता में सुधार करें।


वीडियो अनुशंसा : पहले देखे गए वीडियो की दृश्य सामग्री के आधार पर समान वीडियो की अनुशंसा करें।


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

सफलता के लिए वास्तुशिल्प

LanceDB के साथ MiniIO का उपयोग करने से कई लाभ मिलते हैं, जिनमें शामिल हैं:


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


  • उच्च उपलब्धता और दोष सहनशीलता : मिनिओ अत्यधिक उपलब्ध, अपरिवर्तनीय और अत्यधिक टिकाऊ है। यह सुनिश्चित करता है कि MiniIO में संग्रहीत डेटा हार्डवेयर विफलताओं से सुरक्षित है और उच्च उपलब्धता और दोष सहनशीलता प्रदान करता है, जो LanceDB जैसे डेटा-गहन अनुप्रयोगों के लिए महत्वपूर्ण हैं।


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


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

आवश्यकताएं

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


निम्नलिखित कमांड चलाकर सुनिश्चित करें कि डॉकर कंपोज़ स्थापित है:


 docker compose version


आपको Python भी इंस्टॉल करना होगा. आप पाइथन को यहां से डाउनलोड कर सकते हैं यहाँ . इंस्टालेशन के दौरान, अपने सिस्टम के PATH में Python जोड़ने के विकल्प की जाँच करना सुनिश्चित करें।


वैकल्पिक रूप से, आप एक वर्चुअल वातावरण बनाना चुन सकते हैं। निर्भरता को अलग करने के लिए एक आभासी वातावरण बनाना अच्छा अभ्यास है। ऐसा करने के लिए, एक टर्मिनल खोलें और चलाएँ:


 python -m venv venv


आभासी वातावरण सक्रिय करने के लिए:


विंडोज़ पर:

 .\venv\Scripts\activate


MacOS/Linux पर:

 source venv/bin/activate

शुरू करना

प्रोजेक्ट की क्लोनिंग से शुरुआत करें यहाँ . एक बार हो जाने के बाद, उस फ़ोल्डर पर जाएँ जहाँ आपने टर्मिनल विंडो में फ़ाइलें डाउनलोड की थीं और चलाएँ:


 docker-compose up minio


इससे मिनिओ कंटेनर शुरू हो जाएगा। आप 'पर नेविगेट कर सकते हैं http://172.20.0.2:9001 ' मिनिओ कंसोल पर एक नज़र डालने के लिए।


मिनिआईओ कंसोल


उपयोगकर्ता नाम और पासवर्ड minioadmin:minioadmin के साथ लॉग इन करें।


इसके बाद, lance नामक मिनियो बकेट बनाने के लिए निम्न कमांड चलाएँ।


 docker compose up mc 


मिनियो बाल्टी


यह कमांड एक श्रृंखला निष्पादित करता है मिनियो क्लाइंट (एमसी) एक शेल के भीतर कमांड करता है।


यहां प्रत्येक कमांड का विवरण दिया गया है:


जब तक (/usr/bin/mc config होस्ट मिनीओ न जोड़ें http://minio:9000 मिनीएडमिन मिनीएडमिन) इको '...वेटिंग...' && स्लीप 1; हो गया ;: यह आदेश सफल होने तक निर्दिष्ट मापदंडों (एंडपॉइंट, एक्सेस कुंजी और गुप्त कुंजी) के साथ minio नामक मिनियो होस्ट को बार-बार कॉन्फ़िगर करने का प्रयास करता है। प्रत्येक प्रयास के दौरान, यह एक प्रतीक्षा संदेश गूँजता है और 1 सेकंड के लिए रुक जाता है।


/usr/bin/mc rm -r --force minio/lance;: यह कमांड MinIO में lance बकेट के भीतर की सभी सामग्री को बलपूर्वक हटा देता है (हटा देता है)।


/usr/bin/mc mb मिनियो/लांस; : यह कमांड मिनिआईओ में lance नामक एक नई बकेट बनाता है।


/usr/bin/mc नीति सेट सार्वजनिक मिनियो/लांस; : यह कमांड lance बकेट की नीति को सार्वजनिक रूप से सेट करता है, जिससे सार्वजनिक पढ़ने की पहुंच की अनुमति मिलती है।


बाहर निकलें 0; : यह कमांड सुनिश्चित करता है कि स्क्रिप्ट 0 के स्टेटस कोड के साथ बाहर निकलती है, जो सफल निष्पादन का संकेत देती है।

लांसडीबी

दुर्भाग्य से, LanceDB के पास मूल S3 समर्थन नहीं है, और परिणामस्वरूप, आपको अपने द्वारा बनाए गए MiniIO कंटेनर से कनेक्ट करने के लिए boto3 जैसी किसी चीज़ का उपयोग करना होगा। जैसे-जैसे LanceDB परिपक्व होता है हम देशी S3 समर्थन की आशा करते हैं जो उपयोगकर्ता अनुभव को और भी बेहतर बना देगा।


नीचे दी गई नमूना स्क्रिप्ट आपको आरंभ करने में मदद करेगी।


पिप का उपयोग करके आवश्यक पैकेज स्थापित करें। निम्नलिखित सामग्री के साथ require.txt नाम की एक फ़ाइल बनाएँ:


 lancedb~=0.4.1 boto3~=1.34.9 botocore~=1.34.9


फिर पैकेजों को स्थापित करने के लिए निम्न कमांड चलाएँ:


 pip install -r requirements.txt


यदि मिनिओ कंटेनर बनाने का आपका तरीका ऊपर बताए गए तरीके से भिन्न है, तो आपको अपना क्रेडेंशियल बदलना होगा।


नीचे दी गई स्क्रिप्ट को एक फ़ाइल में सहेजें, उदाहरण के लिए, lancedb_script.py


 import lancedb import os import boto3 import botocore import random def generate_random_data(num_records): data = [] for _ in range(num_records): record = { "vector": [random.uniform(0, 10), random.uniform(0, 10)], "item": f"item_{random.randint(1, 100)}", "price": round(random.uniform(5, 100), 2) } data.append(record) return data def main(): # Set credentials and region as environment variables os.environ["AWS_ACCESS_KEY_ID"] = "minioadmin" os.environ["AWS_SECRET_ACCESS_KEY"] = "minioadmin" os.environ["AWS_ENDPOINT"] = "http://localhost:9000" os.environ["AWS_DEFAULT_REGION"] = "us-east-1" minio_bucket_name = "lance" # Create a boto3 session with path-style access session = boto3.Session() s3_client = session.client("s3", config=botocore.config.Config(s3={'addressing_style': 'path'})) # Connect to LanceDB using path-style URI and s3_client db_uri = f"s3://{minio_bucket_name}/" db = lancedb.connect(db_uri) # Create a table with more interesting data table = db.create_table("mytable", data=generate_random_data(100)) # Open the table and perform a search result = table.search([5, 5]).limit(5).to_pandas() print(result) if __name__ == "__main__": main()


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


अंत में, स्क्रिप्ट तालिका को मिनिओ से बाहर निकाले बिना खोल देती है, और खोज करने और परिणामों को प्रिंट करने के लिए पांडा का उपयोग करती है।


स्क्रिप्ट का परिणाम नीचे जैसा दिखना चाहिए। याद रखें कि डेटा हर बार यादृच्छिक रूप से उत्पन्न होता है।


 vector item price _distance 0 [5.1022754, 5.1069164] item_95 50.94 0.021891 1 [4.209107, 5.2760105] item_100 69.34 0.701694 2 [5.23562, 4.102992] item_96 99.86 0.860140 3 [5.7922664, 5.867489] item_47 56.25 1.380223 4 [4.458882, 3.934825] item_93 9.90 1.427407


अपना खुद का विस्तार करें

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


यहाँ मत रुको. LanceDB की एक विस्तृत श्रृंखला प्रदान करता है व्यंजनों और इस ट्यूटोरियल में आपने जो कुछ बनाया है उसका विस्तार करने के लिए ट्यूटोरियल जिसमें हाल ही में घोषित उडासिटी कोर्स भी शामिल है वेक्टर डेटाबेस के साथ जनरेटिव एआई समाधान का निर्माण . विशेष रुचि है यह अपने दस्तावेज़ों के साथ चैट करने का नुस्खा। हम सभी आपके डेटा से अधिकतम लाभ प्राप्त करने के लिए बाधाओं को तोड़ने के पक्ष में हैं।


कृपया हमें दिखाएं कि आप क्या बना रहे हैं और क्या आपको अपनी नेक खोज के लिए मार्गदर्शन की आवश्यकता है तो हमें [email protected] पर ईमेल करने में संकोच न करें या हमारी राउंड टेबल में शामिल हों। सुस्त .