ল্যান্সের উপর নির্মিত, একটি ওপেন-সোর্স কলামার ডেটা ফর্ম্যাট, ল্যান্সডিবি-তে কিছু আকর্ষণীয় বৈশিষ্ট্য রয়েছে যা এটিকে AI/ML-এর জন্য আকর্ষণীয় করে তোলে। উদাহরণস্বরূপ, LanceDB বিভিন্ন ধরনের ডেটা পরিচালনা করার ক্ষমতা সহ স্পষ্ট এবং অন্তর্নিহিত ভেক্টরাইজেশন সমর্থন করে। LanceDB নেতৃস্থানীয় ML ফ্রেমওয়ার্কের সাথে একীভূত হয় যেমন
LanceDB S3-সামঞ্জস্যপূর্ণ অবজেক্ট স্টোরেজে ডেটা অনুসন্ধান করতে সক্ষম। এই সমন্বয় উচ্চ-কর্মক্ষমতা, মাপযোগ্য, এবং ক্লাউড-নেটিভ ML ডেটা স্টোরেজ এবং পুনরুদ্ধার সিস্টেম তৈরির জন্য সর্বোত্তম। MinIO সমীকরণে বিভিন্ন হার্ডওয়্যার, অবস্থান এবং ক্লাউড পরিবেশ জুড়ে কর্মক্ষমতা এবং অতুলনীয় নমনীয়তা নিয়ে আসে, এটি এই ধরনের স্থাপনার জন্য প্রাকৃতিক পছন্দ করে তোলে।
এই টিউটোরিয়ালটি শেষ করার পরে, আপনি যেকোন ডেটা চ্যালেঞ্জের সাথে লড়াই করতে LanceDB এবং MinIO ব্যবহার করতে প্রস্তুত থাকবেন।
দ্য
এর একটি
LanceDB-এর মতো ভেক্টর ডেটাবেসগুলি AI এবং মেশিন লার্নিং অ্যাপ্লিকেশনগুলির জন্য স্বতন্ত্র সুবিধাগুলি অফার করে, তাদের দক্ষতার জন্য ধন্যবাদ
প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP):
শব্দার্থিক অনুসন্ধান: শুধু কীওয়ার্ড নয়, অর্থের উপর ভিত্তি করে একটি প্রশ্নের অনুরূপ নথি বা প্যাসেজ খুঁজুন। এটি চ্যাটবট প্রতিক্রিয়া, ব্যক্তিগতকৃত বিষয়বস্তু সুপারিশ এবং জ্ঞান পুনরুদ্ধার সিস্টেমকে ক্ষমতা দেয়।
প্রশ্নের উত্তর: শব্দার্থগত মিলের উপর ভিত্তি করে প্রাসঙ্গিক পাঠ্য প্যাসেজ খুঁজে জটিল প্রশ্নগুলি বুঝুন এবং উত্তর দিন।
টপিক মডেলিং: ডকুমেন্ট ক্লাস্টারিং এবং প্রবণতা বিশ্লেষণের জন্য দরকারী বৃহৎ পাঠ্য সংগ্রহে সুপ্ত বিষয়গুলি আবিষ্কার করুন।
কম্পিউটার ভিশন:
ছবি এবং ভিডিও পুনরুদ্ধার: ভিজ্যুয়াল বিষয়বস্তুর উপর ভিত্তি করে অনুরূপ ছবি বা ভিডিও অনুসন্ধান করুন, বিষয়বস্তু-ভিত্তিক চিত্র পুনরুদ্ধার, পণ্য অনুসন্ধান এবং ভিডিও বিশ্লেষণের জন্য গুরুত্বপূর্ণ।
অবজেক্ট ডিটেকশন এবং শ্রেণীবিভাগ: দক্ষতার সাথে অনুরূপ প্রশিক্ষণ ডেটা পুনরুদ্ধার করে বস্তু সনাক্তকরণ এবং শ্রেণীবিভাগের মডেলগুলির নির্ভুলতা উন্নত করুন।
ভিডিও সুপারিশ : পূর্বে দেখা ভিডিওগুলির ভিজ্যুয়াল বিষয়বস্তুর উপর ভিত্তি করে অনুরূপ ভিডিওগুলির সুপারিশ করুন৷
বাজারে ভেক্টর ডাটাবেসের আধিক্যের মধ্যে, ল্যান্সডিবি AI এবং মেশিন লার্নিংয়ের জন্য বিশেষভাবে উপযুক্ত, কারণ এটি S3- সামঞ্জস্যপূর্ণ স্টোরেজের অনুসন্ধান সমর্থন করে। আপনার ডেটা সর্বত্র রয়েছে, আপনার ডাটাবেসও সর্বত্র হওয়া উচিত।
LanceDB এর সাথে MinIO ব্যবহার করা বিভিন্ন সুবিধা প্রদান করে, যার মধ্যে রয়েছে:
MinIO এবং LanceDB-এর সংমিশ্রণ বৃহৎ-স্কেল ML ডেটাসেটগুলি পরিচালনা এবং বিশ্লেষণ করার জন্য একটি উচ্চ-কর্মক্ষমতা মাপযোগ্য ক্লাউড-নেটিভ সমাধান প্রদান করে।
এই টিউটোরিয়ালটি অনুসরণ করতে, আপনাকে ব্যবহার করতে হবে
নিম্নলিখিত কমান্ডটি চালিয়ে ডকার কম্পোজ ইনস্টল করা আছে তা নিশ্চিত করুন:
docker compose version
আপনাকে পাইথন ইনস্টল করতে হবে। আপনি পাইথন থেকে ডাউনলোড করতে পারেন
ঐচ্ছিকভাবে, আপনি একটি ভার্চুয়াল পরিবেশ তৈরি করতে বেছে নিতে পারেন। নির্ভরতা বিচ্ছিন্ন করার জন্য একটি ভার্চুয়াল পরিবেশ তৈরি করা ভাল অনুশীলন। এটি করতে, একটি টার্মিনাল খুলুন এবং চালান:
python -m venv venv
ভার্চুয়াল পরিবেশ সক্রিয় করতে:
উইন্ডোজে:
.\venv\Scripts\activate
macOS/Linux-এ:
source venv/bin/activate
থেকে প্রজেক্ট ক্লোন করে শুরু করুন
docker-compose up minio
এটি MinIO কন্টেইনার শুরু করবে। আপনি 'এ নেভিগেট করতে পারেন
ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়ে লগ ইন করুন minioadmin:minioadmin
।
এর পরে, lance
নামে একটি MinIO বাকেট তৈরি করতে নিম্নলিখিত কমান্ডটি চালান।
docker compose up mc
এই কমান্ড একটি সিরিজ সঞ্চালিত
এখানে প্রতিটি কমান্ডের একটি ব্রেকডাউন রয়েছে:
যতক্ষণ না (/usr/bin/mc কনফিগারেশন হোস্ট যোগ করুন minio http://minio:9000 minioadmin minioadmin) ইকো করুন '...waiting...' && sleep 1; সম্পন্ন ;: সফল না হওয়া পর্যন্ত এই কমান্ডটি বারবার নির্দিষ্ট পরামিতি (এন্ডপয়েন্ট, অ্যাক্সেস কী এবং গোপন কী) সহ minio
নামে একটি MinIO হোস্ট কনফিগার করার চেষ্টা করে। প্রতিটি প্রচেষ্টার সময়, এটি একটি অপেক্ষার বার্তা প্রতিধ্বনিত করে এবং 1 সেকেন্ডের জন্য বিরতি দেয়।
/usr/bin/mc rm -r --force minio/lance;: এই কমান্ডটি জোরপূর্বক MinIO-তে lance
বাকেটের মধ্যে থাকা সমস্ত বিষয়বস্তু সরিয়ে দেয় (মুছে দেয়)।
/usr/bin/mc mb মিনিও/ল্যান্স; : এই কমান্ডটি MinIO-তে lance
নামে একটি নতুন বালতি তৈরি করে।
/usr/bin/mc নীতি সেট পাবলিক মিনিও/ল্যান্স; : এই কমান্ডটি পাবলিকের জন্য lance
বাকেটের নীতি নির্ধারণ করে, পাবলিক পড়ার অ্যাক্সেসের অনুমতি দেয়।
প্রস্থান 0; : এই কমান্ডটি নিশ্চিত করে যে স্ক্রিপ্টটি 0 এর একটি স্ট্যাটাস কোড সহ প্রস্থান করে, যা সফল সম্পাদনের ইঙ্গিত দেয়।
দুর্ভাগ্যবশত, LanceDB-এর নেটিভ S3 সমর্থন নেই, এবং ফলস্বরূপ, আপনার তৈরি MinIO কন্টেইনারে সংযোগ করতে আপনাকে boto3 এর মতো কিছু ব্যবহার করতে হবে। LanceDB পরিপক্ক হওয়ার সাথে সাথে আমরা নেটিভ S3 সমর্থনের জন্য অপেক্ষা করছি যা ব্যবহারকারীর অভিজ্ঞতাকে আরও ভাল করে তুলবে।
নীচের নমুনা স্ক্রিপ্ট আপনাকে শুরু করবে।
পিপ ব্যবহার করে প্রয়োজনীয় প্যাকেজ ইনস্টল করুন। নিম্নলিখিত বিষয়বস্তু সহ requirements.txt নামে একটি ফাইল তৈরি করুন:
lancedb~=0.4.1 boto3~=1.34.9 botocore~=1.34.9
তারপর প্যাকেজগুলি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
pip install -r requirements.txt
যদি আপনার MinIO কন্টেইনার তৈরির পদ্ধতি উপরে উল্লিখিত একটি থেকে ভিন্ন হয় তাহলে আপনাকে আপনার শংসাপত্রগুলি পরিবর্তন করতে হবে।
নিচের স্ক্রিপ্টটি একটি ফাইলে সংরক্ষণ করুন, যেমন, 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()
এই স্ক্রিপ্টটি এলোমেলোভাবে উৎপন্ন ডেটা থেকে একটি ল্যান্স টেবিল তৈরি করবে এবং এটি আপনার MinIO বালতিতে যোগ করবে। আবার, যদি আপনি একটি বালতি তৈরি করতে পূর্ববর্তী বিভাগে পদ্ধতিটি ব্যবহার না করেন তবে স্ক্রিপ্ট চালানোর আগে আপনাকে এটি করতে হবে। আপনি আপনার MinIO বালতিটির নাম কী তা মেলাতে উপরের নমুনা স্ক্রিপ্টটি পরিবর্তন করতে ভুলবেন না।
অবশেষে, স্ক্রিপ্টটি টেবিলটি খোলে, এটিকে MinIO এর বাইরে না সরিয়ে, এবং একটি অনুসন্ধান করতে এবং ফলাফল মুদ্রণ করতে পান্ডাস ব্যবহার করে।
স্ক্রিপ্টের ফলাফল নীচের মত দেখতে হবে। মনে রাখবেন যে ডেটা নিজেই প্রতিবার এলোমেলোভাবে তৈরি হয়।
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
পারফরম্যান্ট, স্কেলেবল এবং ভবিষ্যত-প্রুফ এমএল/এআই আর্কিটেকচার তৈরি করার জন্য এই টিউটোরিয়ালে দেওয়া এই ফাউন্ডেশনে তৈরি করার অনেক উপায় রয়েছে। আপনার অস্ত্রাগারে দুটি অত্যাধুনিক এবং ওপেন-সোর্স বিল্ডিং ব্লক রয়েছে - MinIO অবজেক্ট স্টোরেজ এবং LanceDB ভেক্টর ডেটাবেস - এটিকে ML/AI-তে আপনার বিজয়ী টিকিট বিবেচনা করুন
এখানে থামবেন না। LanceDB এর বিস্তৃত পরিসর অফার করে
অনুগ্রহ করে আমাদের দেখান আপনি কি নির্মাণ করছেন এবং আপনার মহৎ অনুসন্ধানের বিষয়ে নির্দেশিকা প্রয়োজন হলে আমাদেরকে [email protected]এ ইমেল করতে দ্বিধা করবেন না বা আমাদের রাউন্ড টেবিলে যোগ দিন