ওয়েভিয়েট হল একটি অগ্রগামী, ওপেন সোর্স ভেক্টর ডাটাবেস, যা মেশিন লার্নিং মডেলগুলির ব্যবহারের মাধ্যমে শব্দার্থিক অনুসন্ধানকে উন্নত করার জন্য ডিজাইন করা হয়েছে। প্রথাগত সার্চ ইঞ্জিনগুলির বিপরীতে যা কীওয়ার্ড মিলের উপর নির্ভর করে, ওয়েভিয়েট শব্দার্থগত সাদৃশ্য নীতি নিয়োগ করে। এই উদ্ভাবনী পদ্ধতিটি ডেটার বিভিন্ন রূপকে (টেক্সট, চিত্র এবং আরও অনেক কিছু) ভেক্টর উপস্থাপনায় রূপান্তরিত করে, সংখ্যাসূচক ফর্ম যা ডেটার প্রসঙ্গ এবং অর্থের সারমর্মকে ক্যাপচার করে। এই ভেক্টরগুলির মধ্যে সাদৃশ্যগুলি বিশ্লেষণ করে, Weaviate অনুসন্ধান ফলাফলগুলি সরবরাহ করে যা ব্যবহারকারীর অভিপ্রায়কে সত্যিকার অর্থে বোঝে, যা কীওয়ার্ড-ভিত্তিক অনুসন্ধানগুলির সীমাবদ্ধতার বাইরে একটি উল্লেখযোগ্য লিপ অফার করে৷
এই নির্দেশিকাটির লক্ষ্য MinIO এবং Weaviate- এর নিরবচ্ছিন্ন একীকরণ প্রদর্শন করা, Kubernetes-নেটিভ অবজেক্ট স্টোরেজ এবং AI-চালিত শব্দার্থিক অনুসন্ধান ক্ষমতার সর্বোত্তম ব্যবহার করা। কনটেইনার অর্কেস্ট্রেশনের জন্য ডকার কম্পোজের সুবিধা, এই নির্দেশিকা একটি শক্তিশালী, মাপযোগ্য, এবং দক্ষ ডেটা ম্যানেজমেন্ট সিস্টেম তৈরি করার জন্য একটি কৌশলগত পদ্ধতি প্রদান করে। আমরা কীভাবে ডেটা সঞ্চয়, অ্যাক্সেস এবং পরিচালনা করি তার লক্ষ্যে, এই সেটআপটি ডেভেলপার, DevOps ইঞ্জিনিয়ার এবং ডেটা বিজ্ঞানীদের জন্য একটি গেম-চেঞ্জার যা আধুনিক স্টোরেজ সলিউশন এবং AI-চালিত ডেটা পুনরুদ্ধারের শক্তিকে কাজে লাগাতে চাইছে।
এই প্রদর্শনীতে, আমরা ডকার ব্যবহার করে MinIO বালতিগুলির সাথে Weaviate ব্যাক আপ করার দিকে মনোনিবেশ করব। এই সেটআপটি আমাদের AI-বর্ধিত অনুসন্ধান এবং বিশ্লেষণ প্রকল্পগুলিতে ডেটা অখণ্ডতা এবং অ্যাক্সেসযোগ্যতা নিশ্চিত করে।
এই প্রদর্শনীর লক্ষ্য হল ডকার ব্যবহার করে MinIO এবং Weaviate-এর নিরবচ্ছিন্ন একীকরণ হাইলাইট করা, AI-বর্ধিত অনুসন্ধান এবং বিশ্লেষণ সিস্টেমগুলির ব্যাক আপ করার জন্য একটি নির্ভরযোগ্য পদ্ধতি প্রদর্শন করা।
এখানে প্রদত্ত docker-compose.yaml
ফাইলটি সুবিন্যস্ত এবং দক্ষ ডেটা ব্যবস্থাপনার প্রতি আমাদের প্রতিশ্রুতিকে হাইলাইট করে, Weaviate-এর জন্য একটি নিরবচ্ছিন্ন সেটআপ স্থাপনের জন্য তৈরি করা হয়েছে। এই কনফিগারেশনটি একটি শক্তিশালী পরিবেশ সক্ষম করে যেখানে MinIO একটি সুরক্ষিত স্টোরেজ পরিষেবা হিসাবে কাজ করে এবং উন্নত ভেক্টর অনুসন্ধান ক্ষমতার জন্য Weaviate এই স্টোরেজটি ব্যবহার করে।
দ্য
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
ডকার-কম্পোজ: backups-s3
মডিউল সক্ষম এবং play.min.io
MinIO সার্ভার সহ 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
: 'minioadmin'BACKUP_S3_SECRET_ACCESS_KEY
: 'minioadmin'BACKUP_S3_USE_SSL
: 'সত্য'PERSISTENCE_DATA_PATH
: '/var/lib/weaviate'CLUSTER_NAME
: 'নোড1'
এই ডকার-কম্পোজের ওয়েভিয়েট পরিষেবাটি ডেটা স্থিরতার জন্য মাউন্ট করা ভলিউমগুলি ব্যবহার করার জন্য সেট আপ করা হয়েছে; এটি নিশ্চিত করে যে আপনার ডেটা সেশন এবং অপারেশন জুড়ে টিকে থাকে।
দ্রষ্টব্য: MinIO বালতিটি আগে থেকেই থাকা দরকার, Weaviate আপনার জন্য বালতি তৈরি করবে না।
ডকার কম্পোজ ব্যবহার করে আপনার প্রকল্পে MinIO এবং Weaviate সংহত করতে, এই বিস্তারিত পদ্ধতি অনুসরণ করুন:
ডকার কম্পোজ ফাইল সংরক্ষণ বা আপডেট করা হচ্ছে
একবার docker-compose.yaml ফাইলটি জায়গায় হয়ে গেলে, আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করুন বা স্থাপনা শুরু করতে কমান্ড প্রম্পটে:
docker-compose up -d --build
এই কমান্ডটি ওয়েভিয়েট পরিষেবাগুলিকে বিচ্ছিন্ন মোডে শুরু করবে, সেগুলিকে আপনার সিস্টেমের পটভূমিতে চালাবে।
বিল্ড এবং এক্সিকিউশন প্রক্রিয়া চলাকালীন, ডকার কম্পোজ একটি স্থায়ী ডিরেক্টরি তৈরি করবে যা docker-compose.yaml ফাইলে উল্লেখ করা হয়েছে। এই ডিরেক্টরিটি ( ./weaviate/data
for Weaviate) অবিরামভাবে ডেটা সংরক্ষণ করার জন্য ব্যবহার করা হয়, নিশ্চিত করে যে আপনার ডেটা কন্টেইনার রিস্টার্ট এবং স্থাপনা জুড়ে অক্ষত থাকে।
ক্রমাগত সঞ্চয়স্থান আরও স্থিতিশীল পরিবেশের জন্য অনুমতি দেয় যেখানে কন্টেইনার পুনরায় চালু হলে ডেটা হারিয়ে যায় না।
একবার আপনি আপনার ডকার-কম্পোজ স্থাপন করার পরে আপনি একটি ব্রাউজারে আপনার Weaviate সার্ভারের 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]...}
weaviate-backups
বাকেটের জন্য অ্যাক্সেস নীতি MinIO-এর সাথে Weaviate সংহত করার জন্য, MinIO-তে ব্যাকআপ বালতিটি যথাযথভাবে জনসাধারণের কাছে মনোনীত ব্যাকআপ বাকেট, যথা weaviate-backups
এর অ্যাক্সেস নীতি প্রয়োজন। ব্যাকআপ ক্রিয়াকলাপের জন্য MinIO বাকেটের সাথে সফলভাবে ইন্টারঅ্যাক্ট করার জন্য Weaviate backup-s3 মডিউলকে প্রয়োজনীয় অনুমতি প্রদানের জন্য এই সমন্বয় প্রয়োজন।
দ্রষ্টব্য: একটি উত্পাদন পরিবেশে আপনাকে সম্ভবত এটি লক করতে হবে, যা এই টিউটোরিয়ালের সুযোগের বাইরে।
একটি বালতিকে " সর্বজনীন " তে সেট করার নিরাপত্তার প্রভাব সম্পর্কে স্পষ্ট বোঝার সাথে এই কনফিগারেশনের সাথে যোগাযোগ করা অপরিহার্য। যদিও এই সেটআপটি একটি উন্নয়ন পরিবেশে ব্যাকআপ প্রক্রিয়াটিকে সহজতর করে, ডেটা সুরক্ষা এবং অখণ্ডতা বজায় রাখার জন্য উত্পাদন সিস্টেমের জন্য বিকল্প পদ্ধতিগুলি বিবেচনা করা উচিত। আইএএম নীতি বা " নির্ধারিত " ইউআরএলগুলির মতো সূক্ষ্ম অ্যাক্সেস নিয়ন্ত্রণগুলি নিয়োগ করা।
এই প্রদর্শনের শেষে আপনি backup-s3
মডিউল ব্যবহার করার সময় পুরো প্রক্রিয়া জুড়ে যে বালতি অবজেক্ট তৈরি করে তা দেখতে সক্ষম হবেন।
Weaviate এ S3 ব্যাকআপ সক্ষম করতে, আপনার docker-compose.yaml ফাইলে প্রয়োজনীয় পরিবেশ ভেরিয়েবল সেট করুন। এটি ব্যাকআপ মডিউল এবং MinIO বালতির বিবরণের জন্য সেটিংস জড়িত, ব্যাকআপ গন্তব্য হিসাবে MinIO ব্যবহার করার জন্য Weaviate-কে নির্দেশ দেয়।
প্রযুক্তিগত ক্রিয়াকলাপগুলিতে ডুব দেওয়ার আগে আমি বলতে চাই যে আমি এখানে উপলব্ধ একটি নোটবুকে আমাদের পাইপলাইনকে এনক্যাপসুলেট করার অতিরিক্ত সুবিধার জন্য একটি JupyterLab পরিবেশে নিম্নলিখিত পদক্ষেপগুলি প্রদর্শন করছি৷
প্রথম ধাপে pip
সহ পাইথনের জন্য weaviate-client
লাইব্রেরি ইনস্টল করে পরিবেশ সেট আপ করা জড়িত। এই পাইথন প্যাকেজটি Weaviate-এর RESTful API-এর সাথে আরও Pythonic উপায়ে ইন্টারফেস করার জন্য অপরিহার্য, যা স্কিমা তৈরি, ডেটা ইন্ডেক্সিং, ব্যাকআপ এবং পুনরুদ্ধারের মতো ক্রিয়াকলাপের জন্য ডাটাবেসের সাথে নিরবচ্ছিন্ন মিথস্ক্রিয়া করার অনুমতি দেয়। প্রদর্শনের জন্য, আমরা 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(`
এই বার্তাটি একটি সতর্কতা ব্যানার এবং উপেক্ষা করা যেতে পারে, আরও তথ্যের জন্য আপনি এটি দেখতে পারেন৷
!pip install weaviate-client
এই বিভাগটি 'আর্টিকেল' এবং 'লেখক' ক্লাসের জন্য ডেটা স্ট্রাকচার এবং স্কিমা প্রবর্তন করে, কীভাবে ডেটা সংগঠিত হবে তার ভিত্তি স্থাপন করে। এটি প্রদর্শন করে যে কীভাবে প্রোগ্রামেটিকভাবে Weaviate-এর মধ্যে স্কিমাকে সংজ্ঞায়িত এবং পরিচালনা করতে হয়, নির্দিষ্ট অ্যাপ্লিকেশনের প্রয়োজন অনুসারে তৈরি করা বিভিন্ন ডেটা মডেলের সাথে মানিয়ে নেওয়ার জন্য Weaviate-এর নমনীয়তা এবং শক্তি প্রদর্শন করে।
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)
পাইথন: স্কিমা ক্লাস তৈরি করুন
স্কিমা সংজ্ঞায়িত করার পরে, নোটবুকটি উইভিয়েট ক্লায়েন্ট শুরু করার মাধ্যমে, ওয়েভিয়েট দৃষ্টান্তে স্কিমা তৈরি করে এবং ডেটা ইন্ডেক্স করার মাধ্যমে গাইড করে। এই প্রক্রিয়াটি ডাটাবেসকে প্রারম্ভিক ডেটা সেটের সাথে পূর্ণ করে, যা উইভিয়েটের ভেক্টর অনুসন্ধান ক্ষমতার অন্বেষণকে সক্ষম করে। এটি একটি ভেক্টরাইজড বিন্যাসে ডেটা সংরক্ষণ এবং অনুসন্ধানের জন্য 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"] )
পাইথন: শ্রেণী অনুসারে সূচক ডেটা
ডেটা সূচীকরণের সাথে, ফোকাস ব্যাকআপের মাধ্যমে ডাটাবেসের অবস্থা সংরক্ষণে স্থানান্তরিত হয়। নোটবুকের এই অংশটি দেখায় কিভাবে MinIO-তে একটি ব্যাকআপ অপারেশন ট্রিগার করতে হয়।
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'}
সফল ব্যাকআপ প্রতিক্রিয়া
পুনরুদ্ধারের সাথে এগিয়ে যাওয়ার আগে, মাঝে মাঝে বিদ্যমান স্কিমাটি মুছে ফেলা প্রয়োজন। এই বিভাগটি একটি পরিষ্কার পুনরুদ্ধার প্রক্রিয়ার পদক্ষেপগুলি দেখায়৷ এটি নিশ্চিত করে যে পুনরুদ্ধার করা ডেটা ডাটাবেসের মধ্যে বিদ্যমান স্কিমা বা ডেটার সাথে দ্বন্দ্ব করে না।
client.schema.delete_class("Article") client.schema.delete_class("Author")
এই বিভাগটি ব্যাখ্যা করে যে কীভাবে পূর্বে ব্যাক-আপ করা ডেটা পুনরুদ্ধার করা যায়, ডাটাবেসটিকে একটি পরিচিত ভাল অবস্থায় ফিরিয়ে আনা যায়।
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]...}
নোটবুকের প্রতিটি বিভাগ ওয়েভিয়েটে ডেটা ম্যানেজমেন্টের জীবনচক্রের মাধ্যমে একটি বিস্তৃত নির্দেশিকা প্রদান করে, প্রাথমিক সেটআপ এবং ডেটা জনসংখ্যা থেকে শুরু করে ব্যাকআপ, পুনরুদ্ধার এবং যাচাইকরণ পর্যন্ত, সবই Weaviate-ক্লায়েন্ট লাইব্রেরি ব্যবহার করে পাইথন ইকোসিস্টেমের মধ্যে সম্পাদিত হয়।
এখন পর্যন্ত আমরা আপনাকে দেখিয়েছি কিভাবে এটি পাইথনিক পদ্ধতিতে করা যায়। আমরা ভেবেছিলাম কিভাবে একটি স্ক্রিপ্ট না লিখে একই ক্রিয়াকলাপগুলি অর্জন করা যেতে পারে তা CURL
এর মাধ্যমে অভ্যন্তরীণভাবে দেখানো সহায়ক হবে৷
একটি স্কিমা তৈরি করা, ডেটা ইন্ডেক্স করা, ব্যাকআপ করা এবং ডেটা পুনরুদ্ধার করার মতো কাজের জন্য একটি Weaviate উদাহরণের সাথে ইন্টারঅ্যাক্ট করতে, নির্দিষ্ট কার্ল কমান্ড ব্যবহার করা যেতে পারে। এই কমান্ডগুলি Weaviate এর REST API-এ HTTP অনুরোধ করে। উদাহরণস্বরূপ, একটি স্কিমা তৈরি করতে, স্কিমার বিবরণ সহ একটি POST অনুরোধ Weaviate এর স্কিমা এন্ডপয়েন্টে পাঠানো হয়। একইভাবে, ডেটা ইনডেক্স করার জন্য, অবজেক্ট এন্ডপয়েন্টে ডেটা পেলোড সহ একটি POST অনুরোধ করা হয়।
ব্যাকআপগুলি ব্যাকআপ এন্ডপয়েন্টে একটি POST অনুরোধের মাধ্যমে ট্রিগার করা হয় এবং পুনরুদ্ধার একটি POST অনুরোধের মাধ্যমে শেষ পয়েন্টে পুনরুদ্ধার করা হয়৷ এই অপারেশনগুলির প্রতিটির জন্য উপযুক্ত JSON পেলোড প্রয়োজন, সাধারণত @
চিহ্ন ব্যবহার করে কার্ল কমান্ডে একটি ফাইল রেফারেন্স হিসাবে সরবরাহ করা হয়।
Weaviate বাস্তবায়ন করার জন্য আমাদের অবশ্যই নমুনা ডেটার সাথে কাজ করতে হবে, যা
আমি নিম্নলিখিত অন্তর্ভুক্ত করেছি:
schema.json
আমরা যে ডেটা সূচী করতে চাই তার গঠন রূপরেখা দেয়।
data.json
হল যেখানে আমাদের প্রকৃত ডেটা চলে আসে, এর গঠনটি schema.json ফাইলের ক্লাসের সাথে সারিবদ্ধ হয়।
schema.json এবং data.json ফাইলগুলি MinIO ব্লগ-সম্পদ সংগ্রহস্থলে উপলব্ধ
{ "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"} ] } ] }
প্রবন্ধ এবং লেখকের জন্য স্কিমা ক্লাসের উদাহরণ
দ্য
অন্যদিকে, দ
[ { "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] } } ]
নিবন্ধ ধারণকারী নমুনা তথ্য
স্কিমা আমাদের ডেটা ম্যানেজমেন্ট সিস্টেমের কাঠামোগত মেরুদণ্ড হিসাবে কাজ করে, ডেটা কীভাবে সংগঠিত, সূচীকৃত এবং জিজ্ঞাসা করা হয় তা সংজ্ঞায়িত করে।
একটি সাধারণ কার্ল কমান্ডের মাধ্যমে, এবং আমাদের নমুনা ফাইলগুলিকে স্থানীয়ভাবে আমাদের বর্তমান কার্যকারী ডিরেক্টরিতে ক্লোন করা হয়েছে; আমরা আমাদের schema.json সরাসরি Weaviate-এ পোস্ট করতে পারি, আমাদের ডেটা মেনে চলার নিয়ম এবং সম্পর্ক স্থাপন করে।
curl -X POST -H "Content-Type: application/json" \ --data @schema.json http://localhost:8080/v1/schema
CURL: তৈরি করুন
আমাদের স্কিমা ঠিক রেখে, পরবর্তী ধাপে এটিকে প্রকৃত ডেটা দিয়ে পপুলেট করা জড়িত। আরেকটি কার্ল কমান্ড ব্যবহার করে, আমরা আমাদের data.json কে স্কিমাতে সূচী করি।
curl -X POST -H "Content-Type: application/json" \ --data @data.json http://localhost:8080/v1/objects
CURL: সূচক
আমাদের একটি অনন্য শনাক্তকারী বা "ব্যাকআপ-আইডি" বরাদ্দ করতে হবে। এই শনাক্তকারী শুধুমাত্র ব্যাকআপ সেটগুলির সুনির্দিষ্ট ট্র্যাকিং এবং পুনরুদ্ধারের সুবিধা দেয় না বরং প্রতিটি ডেটাসেট সংস্করণ নিয়ন্ত্রিত হয় তাও নিশ্চিত করে।
curl -X POST 'http://localhost:8080/v1/backups/s3' -H 'Content-Type:application/json' -d '{ "id": "backup-id", "include": [ "Article", "Author" ] }'
CURL: backup-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"] }'
CURL: পুনরুদ্ধার করুন
প্রত্যাশা:
{ "backend": "s3", "classes": ["Article"], "id": "backup-id", "path": "s3://weaviate-backups/backup-id", "status": "SUCCESS" }
সফল পুনরুদ্ধার প্রতিক্রিয়া
এই কমান্ডগুলির প্রতিটি আপনার নির্দিষ্ট সেটআপ এবং প্রয়োজনীয়তার উপর ভিত্তি করে অভিযোজিত করা উচিত। প্রয়োজন অনুযায়ী আপনাকে এন্ডপয়েন্ট ইউআরএল, ডেটা ফাইল পাথ এবং অন্যান্য প্যারামিটার পরিবর্তন করতে হতে পারে। এছাড়াও, নিশ্চিত করুন যে প্রয়োজনীয় ফাইলগুলি (schema.json, data.json) এবং কনফিগারেশনগুলি আপনার পরিবেশে উপলব্ধ।
Git-এ সমস্ত কিছু কোডিফাই করে, দলগুলি সহজেই পরিবর্তনগুলি ট্র্যাক করতে পারে, পূর্ববর্তী রাজ্যগুলিতে রোলব্যাক করতে পারে এবং পরিবেশ জুড়ে ধারাবাহিকতা নিশ্চিত করতে পারে। GitOps ওয়ার্কফ্লোগুলিকে ক্রমাগত ইন্টিগ্রেশন/কন্টিনিউয়াস ডিপ্লয়মেন্ট (CI/CD) টুলস এবং কুবারনেটসের সাথে একীভূত করা যেতে পারে, যা কনটেইনারাইজড অ্যাপ্লিকেশন এবং অবকাঠামো পরিচালনার অর্কেস্ট্রেশনকে আরও সহজ করে তোলে। গিটঅপস ব্যবহার করে কীভাবে স্বয়ংক্রিয় করা যায় সে সম্পর্কে আমরা ভবিষ্যতের একটি পোস্টে বিস্তারিত জানাব।
ওয়েভিয়েট নির্দিষ্ট ক্লাসের ব্যাক আপ বা পুনরুদ্ধার করার অনুমতি দেয়, যা আংশিক ডেটা মাইগ্রেশন বা ডেভেলপমেন্ট টেস্টিংয়ের মতো ক্ষেত্রে উপযোগী।
মাল্টি-নোড ব্যাকআপ: মাল্টি-নোড সেটআপের জন্য, বিশেষ করে কুবারনেটস পরিবেশে, নিশ্চিত করুন যে আপনার কনফিগারেশন সঠিকভাবে ব্যাকআপ মডিউল (যেমন MinIO-এর জন্য ব্যাকআপ-s3) এবং সম্পর্কিত পরিবেশ ভেরিয়েবলগুলি নির্দিষ্ট করে।
আপনি যদি ব্যাকআপ বা পুনরুদ্ধারের সময় সমস্যার সম্মুখীন হন, তাহলে আপনার পরিবেশ পরিবর্তনশীল কনফিগারেশন পরীক্ষা করুন, বিশেষ করে MinIO-এর মতো S3-সামঞ্জস্যপূর্ণ স্টোরেজের জন্য SSL সেটিংস সম্পর্কিত। SSL অক্ষম করা ( BACKUP_S3_USE_SSL: false
) কিছু সংযোগ সমস্যা সমাধান করতে পারে৷
যখন আমরা ডকার কম্পোজ ব্যবহার করে MinIO-এর সাথে Weaviate সংহত করার এই অন্বেষণটি শেষ করি, তখন এটা স্পষ্ট যে এই সমন্বয়টি কেবল একটি প্রযুক্তিগত সমাধান নয়, কিন্তু ডেটা ব্যবস্থাপনার একটি কৌশলগত উন্নতি। এই ইন্টিগ্রেশনটি স্কেলযোগ্য, নিরাপদ, এবং উচ্চ-পারফর্মিং ডেটা স্টোরেজ সমাধান প্রদানের জন্য MinIO-এর প্রতিশ্রুতির সাথে পুরোপুরি সারিবদ্ধ, যা এখন Weaviate-এর AI-চালিত ক্ষমতা দ্বারা প্রসারিত। ডকার কম্পোজের ব্যবহার এই ইন্টিগ্রেশনকে আরও স্ট্রীমলাইন করে, জটিল প্রযুক্তিগুলিকে অ্যাক্সেসযোগ্য এবং পরিচালনাযোগ্য করার উপর আমাদের ফোকাসকে জোর দেয়।
বরাবরের মতো, MinIO টিম ডেটা ম্যানেজমেন্টের ক্ষেত্রে উদ্ভাবনের জন্য প্রতিশ্রুতিবদ্ধ। ডেটা সঞ্চয়, অ্যাক্সেস এবং বিশ্লেষণ করার পদ্ধতিকে উন্নত এবং স্ট্রিমলাইন করার জন্য আমাদের উত্সর্গ আমাদের মিশনের মূলে রয়েছে।
MinIO দ্বারা প্রদত্ত শক্তিশালী স্টোরেজ সমাধানগুলির সাথে Weaviate-এর উন্নত ভেক্টর ডেটাবেস ক্ষমতাগুলিকে একত্রিত করে, ব্যবহারকারীদের তাদের ডেটার সম্পূর্ণ সম্ভাবনা আনলক করার ক্ষমতা দেওয়া হয়। এর মধ্যে রয়েছে লিভারেজিং সিমান্টিক সার্চ কার্যকারিতা যা শুধুমাত্র ডেটার অ্যাক্সেসযোগ্যতাই নিশ্চিত করে না বরং ভিত্তিগত স্তরে এর নিরাপত্তাও নিশ্চিত করে।
আমরা সত্যিই অসাধারণ উদ্ভাবন দ্বারা অনুপ্রাণিত যা আপনার মত নিবেদিত এবং উত্সাহী বিকাশকারীদের মন থেকে উদ্ভূত। এটি আমাদের সহায়তা প্রদান করতে এবং উন্নত সমাধানগুলি অন্বেষণ এবং আপনার ডেটা-চালিত প্রকল্পগুলিতে নতুন উচ্চতায় পৌঁছানোর দিকে আপনার যাত্রার অংশ হতে আমাদেরকে উত্তেজিত করে৷ অনুগ্রহ করে, আমাদের সাথে যোগাযোগ করতে দ্বিধা করবেন না