paint-brush
डेटा प्रबंधन में रणनीतिक वृद्धि हासिल करने के लिए मिनियो एस3 बकेट के साथ वेविएट का बैकअप लेनाद्वारा@minio
8,143 रीडिंग
8,143 रीडिंग

डेटा प्रबंधन में रणनीतिक वृद्धि हासिल करने के लिए मिनियो एस3 बकेट के साथ वेविएट का बैकअप लेना

द्वारा MinIO19m2024/04/04
Read on Terminal Reader
Read this story w/o Javascript

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

मिनियो द्वारा प्रदान किए गए मजबूत भंडारण समाधानों के साथ वीविएट की उन्नत वेक्टर डेटाबेस क्षमताओं को एक साथ लाकर, उपयोगकर्ताओं को अपने डेटा की पूरी क्षमता को अनलॉक करने का अधिकार दिया जाता है।
featured image - डेटा प्रबंधन में रणनीतिक वृद्धि हासिल करने के लिए मिनियो एस3 बकेट के साथ वेविएट का बैकअप लेना
MinIO HackerNoon profile picture
0-item



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


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

टेक स्टैक का परिचय

इस प्रदर्शन में, हम Docker का उपयोग करके MinIO बकेट के साथ Weaviate का बैकअप लेने पर ध्यान केंद्रित करेंगे। यह सेटअप हमारे AI-संवर्धित खोज और विश्लेषण परियोजनाओं में डेटा अखंडता और पहुँच सुनिश्चित करता है।


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


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


इस प्रदर्शन का उद्देश्य Docker का उपयोग करके मिनियो और वीविएट के निर्बाध एकीकरण को उजागर करना है, तथा AI-संवर्धित खोज और विश्लेषण प्रणालियों का बैकअप लेने के लिए एक विश्वसनीय विधि का प्रदर्शन करना है।

संसाधन

ज्ञानवर्धक पूर्वापेक्षाएँ

  • आपके मशीन पर Docker और Docker Compose स्थापित है।
  • डॉकर अवधारणाओं और YAML सिंटैक्स की बुनियादी समझ।
  • weaviate-client लाइब्रेरी का उपयोग करने के लिए पायथन वातावरण।
  • कर्ल जैसे कमांड चलाने के लिए कमांड-लाइन पहुंच.

Docker Compose के साथ एकीकरण और कॉन्फ़िगरेशन

यहाँ प्रदान की गई docker-compose.yaml फ़ाइल Weaviate के लिए एक सहज सेटअप स्थापित करने के लिए तैयार की गई है, जो सुव्यवस्थित और कुशल डेटा प्रबंधन के लिए हमारी प्रतिबद्धता को उजागर करती है। यह कॉन्फ़िगरेशन एक मजबूत वातावरण को सक्षम करता है जहाँ MinIO एक सुरक्षित भंडारण सेवा के रूप में कार्य करता है और Weaviate उन्नत वेक्टर खोज क्षमताओं के लिए इस भंडारण का लाभ उठाता है।


docker-कंपोज़.yaml नीचे दिया गया विवरण वेविएट के सेटअप की रूपरेखा प्रस्तुत करता है।


 version: '3.8' services: weaviate: container_name: weaviate_server image: semitechnologies/weaviate:latest ports: - "8080:8080" environment: AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' ENABLE_MODULES: 'backup-s3' BACKUP_S3_BUCKET: 'weaviate-backups' BACKUP_S3_ENDPOINT: 'play.min.io:443' BACKUP_S3_ACCESS_KEY_ID: 'minioadmin' BACKUP_S3_SECRET_ACCESS_KEY: 'minioadmin' BACKUP_S3_USE_SSL: 'true' CLUSTER_HOSTNAME: 'node1' volumes: - ./weaviate/data:/var/lib/weaviate



Docker-Compose: backups-s3 मॉड्यूल सक्षम और play.min.io MinIO सर्वर के साथ Weaviate को तैनात करें

S3 बैकअप के लिए Weaviate को कॉन्फ़िगर करना

उपरोक्त docker-compose.yaml के साथ, Weaviate को बैकअप के लिए MinIO का उपयोग करने के लिए जटिल रूप से कॉन्फ़िगर किया गया है, जिससे डेटा अखंडता और पहुँच सुनिश्चित होती है। इस सेटअप में आवश्यक पर्यावरण चर शामिल हैं जैसे कि ENABLE_MODULES backup-s3 पर सेट किया गया है, और S3 बकेट, एंडपॉइंट, एक्सेस कुंजियाँ और SSL उपयोग के लिए विभिन्न सेटिंग्स हैं। इसके अतिरिक्त, डेटा को लगातार संग्रहीत करने के लिए PERSISTENCE_DATA_PATH सेट किया गया है, और नोड पहचान के लिए CLUSTER_NAME सेट किया गया है।


उल्लेखनीय पर्यावरण चर में शामिल हैं :

  • ENABLE_MODULES : 'बैकअप-s3'
  • BACKUP_S3_BUCKET : 'वीविएट-बैकअप'
  • BACKUP_S3_ENDPOINT : 'play.min.io:443'
  • BACKUP_S3_ACCESS_KEY_ID : 'मिनिओएडमिन'
  • BACKUP_S3_SECRET_ACCESS_KEY : 'मिनिओएडमिन'
  • BACKUP_S3_USE_SSL : 'सत्य'
  • PERSISTENCE_DATA_PATH : '/var/lib/weaviate'
  • CLUSTER_NAME : 'नोड1'


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


नोट: मिनियो बकेट पहले से मौजूद होना चाहिए, वेविएट आपके लिए बकेट नहीं बनाएगा।


तैनाती चरण

Docker Compose का उपयोग करके अपने प्रोजेक्ट में MinIO और Weaviate को एकीकृत करने के लिए, इस विस्तृत प्रक्रिया का पालन करें:


Docker Compose फ़ाइल को सहेजना या अपडेट करना


  • नया सेटअप : यदि यह एक नया सेटअप है, तो प्रदान की गई docker-compose.yaml फ़ाइल को सीधे अपने प्रोजेक्ट की वर्किंग डायरेक्टरी में सेव करें। सेवाओं को सही तरीके से कॉन्फ़िगर करने के लिए यह फ़ाइल महत्वपूर्ण है।


  • मौजूदा सेटअप : यदि आप किसी मौजूदा उत्पादन परिवेश को अपडेट कर रहे हैं, तो ऊपर बताई गई सेटिंग को दर्शाने के लिए अपने मौजूदा docker-compose.yaml को संशोधित करें। सुनिश्चित करें कि आपकी सेवाओं से कनेक्ट करने के लिए ये सेटिंग सटीक रूप से दोहराई गई हैं।


Docker Compose फ़ाइल चलाना

एक बार docker-compose.yaml फ़ाइल स्थापित हो जाने पर, परिनियोजन आरंभ करने के लिए अपने टर्मिनल या कमांड प्रॉम्प्ट में निम्न कमांड का उपयोग करें:


docker-compose up -d --build


यह कमांड Weaviate सेवाओं को पृथक मोड में प्रारंभ करेगा, तथा उन्हें आपके सिस्टम की पृष्ठभूमि में चलाएगा।


स्थायी निर्देशिकाओं को समझना

  • निर्माण और निष्पादन प्रक्रिया के दौरान, Docker Compose एक स्थायी निर्देशिका बनाएगा जैसा कि docker-compose.yaml फ़ाइल में निर्दिष्ट है। इस निर्देशिका ( Weaviate के लिए ./weaviate/data ) का उपयोग डेटा को लगातार संग्रहीत करने के लिए किया जाता है, यह सुनिश्चित करते हुए कि आपका डेटा कंटेनर पुनरारंभ और परिनियोजन के दौरान बरकरार रहता है।


स्थायी भंडारण से अधिक स्थिर वातावरण प्राप्त होता है, जहां कंटेनर को पुनः प्रारंभ करने पर डेटा नष्ट नहीं होता।


एक बार जब आप अपना डॉकर-कंपोज़ तैनात कर लेते हैं, तो आप ब्राउज़र में अपने वीविएट सर्वर के URL पर जा सकते हैं, उसके बाद /v1/meta जाकर जांच कर सकते हैं कि क्या आपकी तैनाती कॉन्फ़िगरेशन सही है।


http://localhost:8080/v1/meta पर JSON पेलोड की पहली पंक्ति इस तरह दिखनी चाहिए:


 {"hostname":"http://[::]:8080","modules":{"backup-s3":{"bucketName":"weaviate-backups","endpoint":"play.min.io:443","useSSL":true}...[truncated]...}


MinIO कॉन्फ़िगर करना: weaviate-backups बकेट के लिए एक्सेस नीति

Weaviate को MinIO के साथ एकीकृत करने के लिए, MinIO में बैकअप बकेट को निर्दिष्ट बैकअप बकेट, अर्थात weaviate-backups की एक्सेस पॉलिसी को सार्वजनिक करने की आवश्यकता होती है। बैकअप संचालन के लिए MinIO बकेट के साथ सफलतापूर्वक इंटरैक्ट करने के लिए Weaviate backup-s3 मॉड्यूल को आवश्यक अनुमतियाँ प्रदान करने के लिए यह समायोजन आवश्यक है।


weaviate-बैकअप बकेट एक्सेस नीति को कॉन्फ़िगर करना


नोट: उत्पादन परिवेश में आपको संभवतः इसे लॉक करना होगा, जो इस ट्यूटोरियल के दायरे से बाहर है।


इस कॉन्फ़िगरेशन को पब्लिक पर बकेट सेट करने के सुरक्षा निहितार्थों की स्पष्ट समझ के साथ अपनाना आवश्यक है। जबकि यह सेटअप विकास परिवेश में बैकअप प्रक्रिया को सुविधाजनक बनाता है, डेटा सुरक्षा और अखंडता बनाए रखने के लिए उत्पादन प्रणालियों के लिए वैकल्पिक तरीकों पर विचार किया जाना चाहिए। IAM नीतियों या “ प्रिसाइन्ड ” URL जैसे बारीक-बारीक एक्सेस नियंत्रणों को नियोजित करना।



Weaviate-बैकअप बकेट में सफल बैकअप



इस प्रदर्शन के अंत तक आप उन बकेट ऑब्जेक्ट्स को देख पाएंगे जो backup-s3 मॉड्यूल का उपयोग करते समय वेविएट पूरी प्रक्रिया के दौरान बनाता है।

पायथन का उपयोग करके प्रक्रिया की रूपरेखा तैयार करना

Weaviate में S3 बैकअप सक्षम करने के लिए, अपनी docker-compose.yaml फ़ाइल में आवश्यक पर्यावरण चर सेट करें। यह Weaviate को बैकअप गंतव्य के रूप में MinIO का उपयोग करने का निर्देश देता है, जिसमें बैकअप मॉड्यूल और MinIO बकेट विवरण के लिए सेटिंग्स शामिल हैं।


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


पहले चरण में pip के साथ python के लिए weaviate-client लाइब्रेरी स्थापित करके वातावरण को सेट करना शामिल है। यह पायथन पैकेज Weaviate के RESTful API के साथ अधिक पायथनिक तरीके से इंटरफेस करने के लिए आवश्यक है, जो स्कीमा निर्माण, डेटा इंडेक्सिंग, बैकअप और बहाली जैसे कार्यों के लिए डेटाबेस के साथ सहज बातचीत की अनुमति देता है। प्रदर्शन के लिए, हम Weaviate Python क्लाइंट लाइब्रेरी का उपयोग करके वर्णन करेंगे।


इस प्रदर्शन में हम Weaviate V3 API का उपयोग कर रहे हैं, इसलिए जब आप पायथन स्क्रिप्ट चलाएंगे तो आपको नीचे दिए गए संदेश जैसा संदेश दिखाई देगा:


 `DeprecationWarning: Dep016: You are using the Weaviate v3 client, which is deprecated. Consider upgrading to the new and improved v4 client instead! See here for usage: https://weaviate.io/developers/weaviate/client-libraries/python warnings.warn(`


यह संदेश एक चेतावनी बैनर है और इसे अनदेखा किया जा सकता है, अधिक जानकारी के लिए आप यहां जा सकते हैं लेख वेविएट ब्लॉग पर।


पायथन चरणों की रूपरेखा :


  1. weaviate-client लाइब्रेरी स्थापित करें
  2. क्लाइंट आरंभीकरण
  3. स्कीमा निर्माण
  4. डेटा प्रविष्टि
  5. बैकअप आरंभ
  6. डेटा बहाली


1. वीविएट-क्लाइंट लाइब्रेरी की स्थापना

 !pip install weaviate-client


2. लेख और लेखक के लिए स्कीमा क्लासेस आयात करना

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


 import weaviate client = weaviate.Client("http://localhost:8080") # Schema classes to be created schema = { "classes": [ { "class": "Article", "description": "A class to store articles", "properties": [ {"name": "title", "dataType": ["string"], "description": "The title of the article"}, {"name": "content", "dataType": ["text"], "description": "The content of the article"}, {"name": "datePublished", "dataType": ["date"], "description": "The date the article was published"}, {"name": "url", "dataType": ["string"], "description": "The URL of the article"}, {"name": "customEmbeddings", "dataType": ["number[]"], "description": "Custom vector embeddings of the article"} ] }, { "class": "Author", "description": "A class to store authors", "properties": [ {"name": "name", "dataType": ["string"], "description": "The name of the author"}, {"name": "articles", "dataType": ["Article"], "description": "The articles written by the author"} ] } ] } client.schema.delete_class('Article') client.schema.delete_class('Author') client.schema.create(schema)

पायथन: स्कीमा क्लासेस बनाएँ


3. स्कीमा और डेटा का सेटअप

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


 # JSON data to be Ingested data = [ { "class": "Article", "properties": { "title": "LangChain: OpenAI + S3 Loader", "content": "This article discusses the integration of LangChain with OpenAI and S3 Loader...", "url": "https://blog.min.io/langchain-openai-s3-loader/", "customEmbeddings": [0.4, 0.3, 0.2, 0.1] } }, { "class": "Article", "properties": { "title": "MinIO Webhook Event Notifications", "content": "Exploring the webhook event notification system in MinIO...", "url": "https://blog.min.io/minio-webhook-event-notifications/", "customEmbeddings": [0.1, 0.2, 0.3, 0.4] } }, { "class": "Article", "properties": { "title": "MinIO Postgres Event Notifications", "content": "An in-depth look at Postgres event notifications in MinIO...", "url": "https://blog.min.io/minio-postgres-event-notifications/", "customEmbeddings": [0.3, 0.4, 0.1, 0.2] } }, { "class": "Article", "properties": { "title": "From Docker to Localhost", "content": "A guide on transitioning from Docker to localhost environments...", "url": "https://blog.min.io/from-docker-to-localhost/", "customEmbeddings": [0.4, 0.1, 0.2, 0.3] } } ] for item in data: client.data_object.create( data_object=item["properties"], class_name=item["class"] )

पायथन: क्लास के अनुसार डेटा अनुक्रमित करें


4. बैकअप बनाना

डेटा को अनुक्रमित करने के बाद, बैकअप के माध्यम से डेटाबेस की स्थिति को संरक्षित करने पर ध्यान केंद्रित किया जाता है। नोटबुक का यह भाग दिखाता है कि मिनियो में बैकअप ऑपरेशन को कैसे ट्रिगर किया जाए।


 result = client.backup.create( backup_id="backup-id", backend="s3", include_classes=["Article", "Author"], # specify classes to include or omit this for all classes wait_for_completion=True, ) print(result)

पायथन: बैकअप बनाएं


अपेक्षा करना:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id-2', 'path': 's3://weaviate-backups/backup-id-2', 'status': 'SUCCESS'}

सफल बैकअप प्रतिक्रिया


5. पुनर्स्थापना प्रयोजनों के लिए स्कीमा क्लासेस को हटाना

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


 client.schema.delete_class("Article") client.schema.delete_class("Author")


6. बैकअप को पुनर्स्थापित करना

यह अनुभाग बताता है कि पहले से बैकअप किए गए डेटा को कैसे पुनर्स्थापित किया जाए, जिससे डेटाबेस को ज्ञात अच्छी स्थिति में वापस लाया जा सके।

 result = client.backup.restore( backup_id="backup-id", backend="s3", wait_for_completion=True, ) print(result)

पायथन: बैकअप बहाल करें


अपेक्षा करना:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

सफल बैकअप-S3 प्रतिक्रिया


पुनर्स्थापना के दौरान त्रुटि प्रबंधन

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


 from weaviate.exceptions import BackupFailedError try: result = client.backup.restore( backup_id="backup-id", backend="s3", wait_for_completion=True, ) print("Backup restored successfully:", result) except BackupFailedError as e: print("Backup restore failed with error:", e) # Here you can add logic to handle the failure, such as retrying the operation or logging the error.



अपेक्षा करना:

 Backup restored successfully: {'backend': 's3', 'classes': ['Author', 'Article'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

सफल बैकअप बहाली


पुनर्स्थापना सफलता का सत्यापन


अंत में, यह पुष्टि करने के लिए कि बैकअप और पुनर्स्थापना प्रक्रिया सफलतापूर्वक पूरी हो गई है, नोटबुक में 'आर्टिकल' वर्ग की स्कीमा को पुनः प्राप्त करने के लिए एक चरण शामिल है। यह सत्यापन सुनिश्चित करता है कि डेटा और स्कीमा सही ढंग से पुनर्स्थापित हो गए हैं।


 client.schema.get("Article")

JSON ऑब्जेक्ट के रूप में आर्टिकल क्लास लौटाता है


अपेक्षा करना:

 {'class': 'Article', 'description': 'A class to store articles'... [Truncated]...}


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


कर्ल का उपयोग करके प्रक्रिया की रूपरेखा बनाना

अब तक हमने आपको दिखाया है कि पाइथोनिक तरीके से यह कैसे किया जाता है। हमें लगा कि CURL के माध्यम से आंतरिक रूप से यह दिखाना सहायक होगा कि स्क्रिप्ट लिखे बिना समान संचालन कैसे प्राप्त किया जा सकता है।


स्कीमा बनाने, डेटा इंडेक्स करने, बैकअप करने और डेटा को पुनर्स्थापित करने जैसे कार्यों के लिए वीविएट इंस्टेंस के साथ बातचीत करने के लिए, विशिष्ट कर्ल कमांड का उपयोग किया जा सकता है। ये कमांड वीविएट के REST API को HTTP अनुरोध करते हैं। उदाहरण के लिए, स्कीमा बनाने के लिए, स्कीमा विवरण के साथ एक POST अनुरोध वीविएट के स्कीमा एंडपॉइंट पर भेजा जाता है। इसी तरह, डेटा को इंडेक्स करने के लिए, डेटा पेलोड के साथ एक POST अनुरोध ऑब्जेक्ट एंडपॉइंट पर किया जाता है।


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


वेविएट को क्रियान्वित करने के लिए हमें निश्चित रूप से कार्य करने हेतु नमूना डेटा की आवश्यकता होगी, जो


मैंने निम्नलिखित को शामिल किया है:


  1. schema.json उस डेटा की संरचना को रेखांकित करता है जिसे हम अनुक्रमित करना चाहते हैं।

  2. data.json वह स्थान है जहां हमारा वास्तविक डेटा काम आता है, इसकी संरचना schema.json फ़ाइल में मौजूद क्लासों के साथ संरेखित होती है।


schema.json और data.json फ़ाइलें MinIO ब्लॉग-एसेट्स रिपोजिटरी में उपलब्ध हैं यहाँ .


स्कीमा.json


 { "classes": [ { "class": "Article", "description": "A class to store articles", "properties": [ {"name": "title", "dataType": ["string"], "description": "The title of the article"}, {"name": "content", "dataType": ["text"], "description": "The content of the article"}, {"name": "datePublished", "dataType": ["date"], "description": "The date the article was published"}, {"name": "url", "dataType": ["string"], "description": "The URL of the article"}, {"name": "customEmbeddings", "dataType": ["number[]"], "description": "Custom vector embeddings of the article"} ] }, { "class": "Author", "description": "A class to store authors", "properties": [ {"name": "name", "dataType": ["string"], "description": "The name of the author"}, {"name": "articles", "dataType": ["Article"], "description": "The articles written by the author"} ] } ] }

आलेख और लेखक के लिए स्कीमा वर्गों का उदाहरण


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


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


डेटा.json


 [ { "class": "Article", "properties": { "title": "LangChain: OpenAI + S3 Loader", "content": "This article discusses the integration of LangChain with OpenAI and S3 Loader...", "url": "https://blog.min.io/langchain-openai-s3-loader/", "customEmbeddings": [0.4, 0.3, 0.2, 0.1] } }, { "class": "Article", "properties": { "title": "MinIO Webhook Event Notifications", "content": "Exploring the webhook event notification system in MinIO...", "url": "https://blog.min.io/minio-webhook-event-notifications/", "customEmbeddings": [0.1, 0.2, 0.3, 0.4] } }, { "class": "Article", "properties": { "title": "MinIO Postgres Event Notifications", "content": "An in-depth look at Postgres event notifications in MinIO...", "url": "https://blog.min.io/minio-postgres-event-notifications/", "customEmbeddings": [0.3, 0.4, 0.1, 0.2] } }, { "class": "Article", "properties": { "title": "From Docker to Localhost", "content": "A guide on transitioning from Docker to localhost environments...", "url": "https://blog.min.io/from-docker-to-localhost/", "customEmbeddings": [0.4, 0.1, 0.2, 0.3] } } ]

नमूना डेटा युक्त लेख


कर्ल के साथ सेटअप करना

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


वेविएट स्कीमा बनाना

एक सरल कर्ल कमांड के माध्यम से, तथा हमारी नमूना फाइलों को स्थानीय रूप से हमारी वर्तमान कार्यशील निर्देशिका में क्लोन करके; हम अपने स्कीमा.json को सीधे वीविएट पर पोस्ट कर सकते हैं, तथा उन नियमों और संबंधों को निर्धारित कर सकते हैं जिनका हमारा डेटा पालन करेगा।


 curl -X POST -H "Content-Type: application/json" \ --data @schema.json http://localhost:8080/v1/schema

कर्ल: बनाएं


स्कीमा भरना: डेटा अनुक्रमित करना

हमारी स्कीमा के साथ, अगला चरण इसमें वास्तविक डेटा भरना शामिल है। एक अन्य कर्ल कमांड का उपयोग करके, हम अपने data.json को स्कीमा में इंडेक्स करते हैं।


 curl -X POST -H "Content-Type: application/json" \ --data @data.json http://localhost:8080/v1/objects

कर्ल: सूचकांक


डेटा स्थायित्व सुनिश्चित करना: मिनियो के साथ बैकअप लेना

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


 curl -X POST 'http://localhost:8080/v1/backups/s3' -H 'Content-Type:application/json' -d '{ "id": "backup-id", "include": [ "Article", "Author" ] }'

कर्ल: बैकअप-s3


अपेक्षा करना:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

सफल बैकअप-S3 प्रतिक्रिया


यह आउटपुट JSON ऑब्जेक्ट के रूप में स्वरूपित है। इसमें उपयोग किया गया बैकएंड (इस मामले में, 's3' ), बैकअप में शामिल कक्षाओं की सूची ( 'Article' , 'Author' ), बैकअप को दिया गया विशिष्ट पहचानकर्ता आईडी ( 'backup-id' ), S3 बकेट के भीतर बैकअप कहाँ संग्रहीत है, यह इंगित करने वाला पथ ( s3://weaviate-backups/backup-id ), और ऑपरेशन की स्थिति ( 'SUCCESS' ) शामिल है।


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


डेटा पुनर्स्थापना प्रक्रिया

वीविएट इकोसिस्टम के भीतर डेटा की बहाली एक संरचित API कॉल के माध्यम से सुगम होती है, जो बैकअप-आईडी द्वारा पहचाने गए /v1/backups/s3/backup-id/restore एंडपॉइंट को लक्षित करने वाले POST अनुरोध के माध्यम से होती है। यह कर्ल कॉल न केवल खोए हुए या संग्रहीत डेटा को पुनर्स्थापित करता है बल्कि आपको निरंतरता बनाए रखने की अनुमति देता है।


 curl -X POST 'http://localhost:8080/v1/backups/s3/backup-id/restore' \ -H 'Content-Type:application/json' \ -d '{ "id": "backup-id", "exclude": ["Author"] }'

कर्ल: पुनर्स्थापित करें


अपेक्षा करना:

 { "backend": "s3", "classes": ["Article"], "id": "backup-id", "path": "s3://weaviate-backups/backup-id", "status": "SUCCESS" }

सफल बहाली प्रतिक्रिया


इनमें से प्रत्येक कमांड को आपके विशिष्ट सेटअप और आवश्यकताओं के आधार पर अनुकूलित किया जाना चाहिए। आपको आवश्यकतानुसार एंडपॉइंट URL, डेटा फ़ाइल पथ और अन्य पैरामीटर संशोधित करने की आवश्यकता हो सकती है। साथ ही, सुनिश्चित करें कि आवश्यक फ़ाइलें (schema.json, data.json) और कॉन्फ़िगरेशन आपके वातावरण में उपलब्ध हैं।

वेविएट के बारे में अतिरिक्त नोट्स

GitOps के साथ स्वचालन

Git में सब कुछ कोड करके, टीमें आसानी से परिवर्तनों को ट्रैक कर सकती हैं, पिछली स्थितियों में वापस आ सकती हैं, और वातावरण में स्थिरता सुनिश्चित कर सकती हैं। GitOps वर्कफ़्लो को निरंतर एकीकरण/निरंतर परिनियोजन (CI/CD) टूल और Kubernetes के साथ एकीकृत किया जा सकता है, जिससे कंटेनरीकृत अनुप्रयोगों और बुनियादी ढांचे के प्रबंधन के ऑर्केस्ट्रेशन को और सरल बनाया जा सकता है। हम भविष्य की पोस्ट में GitOps का उपयोग करके स्वचालित करने के तरीके के बारे में विस्तार से जानेंगे।

आंशिक बैकअप और पुनर्स्थापना

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


बहु-नोड बैकअप: बहु-नोड सेटअप के लिए, विशेष रूप से कुबेरनेट्स वातावरण में, सुनिश्चित करें कि आपका कॉन्फ़िगरेशन बैकअप मॉड्यूल (जैसे मिनिओ के लिए बैकअप-एस 3) और संबंधित वातावरण चर को सही ढंग से निर्दिष्ट करता है।

समस्या निवारण

यदि आपको बैकअप या रीस्टोर के दौरान समस्याएँ आती हैं, तो अपने एनवायरनमेंट वैरिएबल कॉन्फ़िगरेशन की जाँच करें, विशेष रूप से S3-संगत स्टोरेज जैसे कि MinIO के लिए SSL सेटिंग्स से संबंधित। SSL ( BACKUP_S3_USE_SSL: false ) को अक्षम करने से कुछ कनेक्शन समस्याएँ हल हो सकती हैं।

मिनियो के साथ वेविएट के लिए एक मजबूत और स्केलेबल बैकअप समाधान

Docker Compose का उपयोग करके Weaviate को MinIO के साथ एकीकृत करने के इस अन्वेषण को समाप्त करते हुए, यह स्पष्ट है कि यह संयोजन केवल एक तकनीकी समाधान नहीं है, बल्कि डेटा प्रबंधन के लिए एक रणनीतिक वृद्धि है। यह एकीकरण, Weaviate की AI-संचालित क्षमताओं द्वारा अब बढ़ाए गए स्केलेबल, सुरक्षित और उच्च-प्रदर्शन वाले डेटा स्टोरेज समाधान प्रदान करने की MinIO की प्रतिबद्धता के साथ पूरी तरह से संरेखित है। Docker Compose का उपयोग इस एकीकरण को और अधिक सुव्यवस्थित करता है, जो जटिल तकनीकों को सुलभ और प्रबंधनीय बनाने पर हमारे ध्यान पर जोर देता है।


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


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


हम वास्तव में आप जैसे समर्पित और भावुक डेवलपर्स के दिमाग से निकलने वाले उल्लेखनीय नवाचार से प्रेरित हैं। हमें अपना समर्थन देने और उन्नत समाधानों की खोज करने और अपने डेटा-संचालित प्रोजेक्ट्स में नई ऊंचाइयों तक पहुंचने की आपकी यात्रा का हिस्सा बनने के लिए उत्साहित करता है। कृपया, हमसे संपर्क करने में संकोच न करें ढीला चाहे आपके पास कोई प्रश्न हो या आप सिर्फ नमस्ते कहना चाहते हों।