लांस पर निर्मित, एक ओपन-सोर्स स्तंभ डेटा प्रारूप, लांसडीबी में कुछ दिलचस्प विशेषताएं हैं जो इसे एआई/एमएल के लिए आकर्षक बनाती हैं। उदाहरण के लिए, LanceDB विभिन्न डेटा प्रकारों को संभालने की क्षमता के साथ स्पष्ट और अंतर्निहित वैश्वीकरण का समर्थन करता है। LanceDB जैसे अग्रणी एमएल फ्रेमवर्क के साथ एकीकृत है
LanceDB S3-संगत ऑब्जेक्ट स्टोरेज में डेटा क्वेरी करने में सक्षम है। यह संयोजन उच्च-प्रदर्शन, स्केलेबल और क्लाउड-नेटिव एमएल डेटा भंडारण और पुनर्प्राप्ति सिस्टम के निर्माण के लिए इष्टतम है। मिनिओ विभिन्न हार्डवेयर, स्थानों और क्लाउड परिवेशों में प्रदर्शन और अद्वितीय लचीलेपन को समीकरण में लाता है, जिससे यह ऐसी तैनाती के लिए स्वाभाविक विकल्प बन जाता है।
इस ट्यूटोरियल के पूरा होने पर, आप किसी भी डेटा चुनौती से निपटने के लिए LanceDB और MiniIO का उपयोग करने के लिए तैयार होंगे।
इसका एक
LanceDB जैसे वेक्टर डेटाबेस अपनी दक्षता के कारण AI और मशीन लर्निंग अनुप्रयोगों के लिए विशिष्ट लाभ प्रदान करते हैं
प्राकृतिक भाषा प्रसंस्करण (एनएलपी):
सिमेंटिक खोज: केवल कीवर्ड ही नहीं, बल्कि अर्थ पर आधारित प्रश्न के समान दस्तावेज़ या अंश खोजें। यह चैटबॉट प्रतिक्रियाओं, वैयक्तिकृत सामग्री अनुशंसाओं और ज्ञान पुनर्प्राप्ति प्रणालियों को शक्ति प्रदान करता है।
प्रश्न उत्तर: अर्थ संबंधी समानता के आधार पर प्रासंगिक पाठ्यांशों को ढूंढकर जटिल प्रश्नों को समझें और उनका उत्तर दें।
विषय मॉडलिंग: बड़े पाठ संग्रहों में गुप्त विषयों की खोज करें, जो दस्तावेज़ क्लस्टरिंग और प्रवृत्ति विश्लेषण के लिए उपयोगी हैं।
कंप्यूटर दृष्टि:
छवि और वीडियो पुनर्प्राप्ति: दृश्य सामग्री के आधार पर समान छवियों या वीडियो की खोज करें, जो सामग्री-आधारित छवि पुनर्प्राप्ति, उत्पाद खोज और वीडियो विश्लेषण के लिए महत्वपूर्ण है।
ऑब्जेक्ट डिटेक्शन और वर्गीकरण: समान प्रशिक्षण डेटा को कुशलतापूर्वक पुनर्प्राप्त करके ऑब्जेक्ट डिटेक्शन और वर्गीकरण मॉडल की सटीकता में सुधार करें।
वीडियो अनुशंसा : पहले देखे गए वीडियो की दृश्य सामग्री के आधार पर समान वीडियो की अनुशंसा करें।
बाज़ार में ढेर सारे वेक्टर डेटाबेस के बीच, LanceDB विशेष रूप से AI और मशीन लर्निंग के लिए उपयुक्त है, क्योंकि यह S3-संगत स्टोरेज पर क्वेरी करने का समर्थन करता है। आपका डेटा हर जगह है, आपका डेटाबेस भी हर जगह होना चाहिए।
LanceDB के साथ MiniIO का उपयोग करने से कई लाभ मिलते हैं, जिनमें शामिल हैं:
मिनिओ और लांसडीबी का संयोजन बड़े पैमाने पर एमएल डेटासेट के प्रबंधन और विश्लेषण के लिए एक उच्च-प्रदर्शन स्केलेबल क्लाउड-नेटिव समाधान प्रदान करता है।
इस ट्यूटोरियल का अनुसरण करने के लिए, आपको इसका उपयोग करने की आवश्यकता होगी
निम्नलिखित कमांड चलाकर सुनिश्चित करें कि डॉकर कंपोज़ स्थापित है:
docker compose version
आपको Python भी इंस्टॉल करना होगा. आप पाइथन को यहां से डाउनलोड कर सकते हैं
वैकल्पिक रूप से, आप एक वर्चुअल वातावरण बनाना चुन सकते हैं। निर्भरता को अलग करने के लिए एक आभासी वातावरण बनाना अच्छा अभ्यास है। ऐसा करने के लिए, एक टर्मिनल खोलें और चलाएँ:
python -m venv venv
आभासी वातावरण सक्रिय करने के लिए:
विंडोज़ पर:
.\venv\Scripts\activate
MacOS/Linux पर:
source venv/bin/activate
प्रोजेक्ट की क्लोनिंग से शुरुआत करें
docker-compose up minio
इससे मिनिओ कंटेनर शुरू हो जाएगा। आप 'पर नेविगेट कर सकते हैं
उपयोगकर्ता नाम और पासवर्ड 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] पर ईमेल करने में संकोच न करें या हमारी राउंड टेबल में शामिल हों।