এই অধ্যায়টি কিভাবে Qdrant ভেক্টর ডাটাবেসের দ্রুত শুরু করতে হয় এবং RESTful API-র ভিত্তিতে ভেক্টর ডাটাবেস চালানোর বিষয়ে পরিচিতি দেয়।
Qdrant ইনস্টল করা
নোট: এই টিউটোরিয়ালটি Qdrant ডাটাবেসটি Docker ব্যবহার করে ইনস্টল করার উপর ভিত্তি রেখে তৈরি করা। অনুগ্রহ করে অ্যাপ্লিকেশন চালিয়ে পূর্বপর্তি Docker ইনস্টল করুন।
Qdrant ইমেজ ডাউনলোড করুন
docker pull qdrant/qdrant
শুরু করুন Qdrant ভেক্টর ডাটাবেস সার্ভিস
docker run -p 6333:6333 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
ডিফল্টভাবে, আমরা স্থানীয় ফাইল ডিরেক্টরিটি কন্টেনারে ম্যাপ করি, এবং সমস্ত ডেটা এ ./qdrant_storage ডিরেক্টরিতে সংরক্ষিত থাকে।
এখানে আপনি localhost:6333 এর মাধ্যমে Qdrant-এ অ্যাক্সেস করতে পারেন।
Qdrant ভেক্টর ডাটাবেস RESTful API সমর্থন করে, এবং এছাড়া পাইথন, Go ইত্যাদি প্রোগ্রামিং ভাষার জন্য এসডিকে (SDK) সমর্থন করে। এই টিউটোরিয়ালটি প্রধানত এমন আপিলে ব্যবহারের নির্দেশ দেয়।
API-তে অ্যাক্সেস এর উদাহরণ
curl -X PUT 'http://localhost:6333/collections/test_collection' \
-H 'Content-Type: application/json' \
--data-raw '{
"vectors": {
"size": 4,
"distance": "Dot"
}
}'
Qdrant Web UI
ঠিকানা http://localhost:6333/dashboard এর মাধ্যমে ওয়েব UI-তে অ্যাক্সেস করুন
কালেকশন তৈরি
Qdrant ভেক্টর ডাটাবেসে কালেকশনের ধারণাটি MYSQL-র টেবিল কর্ণীর সাথে তুলনা করা যায়, যা একই ধরণের ভেক্টর ডাটা সংরক্ষণ করার জন্য ব্যবহৃত হয়। কালেকশনে সংরক্ষিত প্রতিটি ডেটা, যা Qdrant-এ পয়েন্ট হিসেবে বিবেচনা করা হয়, গাণিতিক জ্যামিতি স্পেসে ভেক্টরের প্রতিনিধিত্ব করে, বর্ণনার অর্থ হল ডেটাটির উপস্থিতি।
PUT /collections/{collection_name}
{
"vectors": {
"size": 300,
"distance": "Cosine"
}
}
প্যারামিটার ব্যাখ্যা:
প্যারামিটার | বর্ণনা |
---|---|
collection_name | কালেকশনের নাম (প্রয়োজনীয়) |
vectors | ভেক্টর প্যারামিটারের সংজ্ঞা (প্রয়োজনীয়) |
vectors.size | ভেক্টরের আকার বর্ণনা করে (বা ভেক্টরের মাত্রা) |
vectors.distance | ভেক্টর সাদৃশ্য ক্যালকুলেট করার ক্ষুদ্রতম মান, প্রধানত তিনটি অ্যালগোরিদম ক্ষেত্রে অবস্থিত: "Cosine," "Euclid," "Dot" |
ভেক্টর যোগ করা
কালেকশন তৈরির পরে, আমরা কালেকশনে ভেক্টর ডাটা যুক্ত করতে পারি। Qdrant-এ, ভেক্টর ডাটা পয়েন্ট দ্বারা প্রতিনিধিত করা হয়, যেখানে প্রতিটি পয়েন্ট ডাটা তিন অংশে বিভক্ত: আইডি, পেয়লোড (সংযুক্তি প্রয়োজনীয় ডাটা), এবং ভেক্টর ডাটা।
উদাহরণ
PUT /collections/{collection_name}/points
{
"points": [
{
"id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // আইডি
"payload": {"color": "red"}, // সংযুক্ত গুণাবলী ডেটা, সাধারণভাবে সম্পর্কিত ব্যবসায়িক গুনাবলী, উদাহরণস্বরূপ: আদেশ আইডি, পণ্য আইডি, খেলার নাম, ইত্যাদি।
"vector": [0.9, 0.1, 0.1] // বর্তমান ব্যবসা ডাটার বৈশিষ্ট্য প্রতিনিধিক ভেক্টর ডাটা
}
]
}
ভেক্টর অনুসন্ধান
ভেক্টর ডাটা যোগ করার পর, আমরা ভেক্টরের এককারে অনুসন্ধান করতে পারি।
উদাহরণ
// collection_name - কালেকশনের নাম
POST /collections/{collection_name}/points/search
{
"vector": [0.2, 0.1, 0.9, 0.7], // ভেক্টর প্যারামিটার
"limit": 3 // উচ্চতম সাদৃশ্যতায় শীর্ষ 3 ডেটা ফেরত দেওয়া হবে
}
প্যারামিটারের ব্যাখ্যা:
- vector: ভেক্টর প্যারামিটার এই ভেক্টরের সাদৃশ্যের ধরন করার জন্য ব্যবহৃত হয়। উদাহরণ: ব্যবহারকারীরা যারা খুঁজে পাওয়ার জন্য কীওয়ার্ডগুলি ভেক্টরে রূপান্তর করে তারা ইনপুটগুলির সংবাদের সাথে সংবাদ খুঁজে এবং তারা সম্পর্কিত সামগ্রী খুঁজে।
গুণগত ফিল্টারিং
ডেটা অনুসন্ধান করার সময়, ভেক্টর ব্যবহার করে সাদৃশ্য অনুসন্ধান পাশাপাশি, আমাদের কিছু ধরনের গুণগত ফিল্টারিং বা SQL-এর WHERE ক্লসের মতো অ্যাট্রিবিউট ফিল্টারিং অনুষ্ঠান করতে চাইতে পারে. কিউড্রান্ট, পয়েন্ট পেলোয়ার এসোসিয়েটেড অ্যাট্রিবিউট ফিল্টারিং সমর্থন করে।
উদাহরণ
// collection_name - সংগ্রহের নাম
POST /collections/{collection_name}/points/search
{
"filter": { // এটা প্রধানত পেলোয়ার এসোসিয়েটেড অ্যাট্রিবিউট ফিল্টারিং করার জন্য, এবং মোটামুটি সিনট্যাক্স ফরম্যাট অধীন এলাস্টিকসার্চ সিনট্যাক্সের মতো। এই প্যারামিটারটি ঐচ্ছিক।
"must": [ // রঙ=লাল এর সাথে পয়েন্ট ডেটা ফিল্টার করুন
{
"key": "color",
"match": {
"value": "red"
}
}
]
},
"vector": [0.2, 0.1, 0.9, 0.7], // ভেক্টর প্যারামিটার
"limit": 3
}
আরো বিস্তারিত টিউটোরিয়ালের জন্য, অনুগ্রহ করে নিম্নলিখিত অধ্যায়গুলি দেখুন।