সংগ্রহসমূহ
Qdrant ভেক্টর ডাটাবেসে সংগ্রহের ধারণাটি মাথার MYSQL এর তালিকা প্রস্তাবনার মত, যা একই ধরনের ভেক্টর ডাটা সমবিত ভাবে সংরক্ষণ করার জন্য ব্যবহার করা হয়। একটি সংগ্রহে সংরক্ষিত প্রতি তথ্যটি Qdrant এ একটি পয়েন্ট হিসাবে উল্লেখ করা হয়। এখানে, একটি পয়েন্ট হল গণিত জ্যামিতিক স্থানের ধারণার মত, জ্যামিতিক স্থানে ভেক্টরের প্রতিনিধিত্ব প্রদর্শন করে (এটি আপনি এটা একটি তথ্য ধরে নিতে চিন্তা করতে পারেন)।
একই সংগ্রহে, প্রতিটি পয়েন্টের ভেক্টরটি একই মাত্রায় হতে হবে এবং একটি মাত্রায় মিট্রিক ব্যবহার করে তুলনা করা হতে হবে। নিয়মিত ভেক্টর দিয়ে নামকরণ প্রযোজ্য, যেটি একটি একক পয়েন্টে একাধিক ভেক্টর অন্তর্ভুক্ত করার জন্য ব্যবহৃত হতে পারে, যেকোনো ভেক্টরই নিজের মাত্রা এবং মিট্রিকের প্রয়োজনীয়তা থাকবে।
ভেক্টর মধ্যে সাদৃশ্য পরিমাপের জন্য দূরত্ব মিট্রিক্স ব্যবহৃত হয়। মিট্রিক্স এর পছন্দটি ভেক্টরগুলি প্রাপ্ত করার উপায়ের উপর নির্ভর করে, বিশেষত নিউরাল নেটওয়ার্ক এনকোডার প্রশিক্ষণের জন্য ব্যবহৃত পদ্ধতি।
Qdrant সমর্থন করে নিম্নলিখিত জনপ্রিয় মিট্রিক্স টাইপগুলি:
- ডট প্রোডাক্ট: ডট
- কোসাইন সাদৃশ্য: কোসাইন
- ইউক্লিডিয়ান দূরত্ব: ইউক্লিড
অনুসন্ধানের দক্ষতা উন্নত করার জন্য, কোসাইন সাদৃশ্যতা প্রাপ্তি হয় নর্মলাইজড ভেক্টরের ডট প্রোডাক্ট নিয়ে। আপলোডের সাথে, ভেক্টরগুলি স্বয়ংক্রিয়ভাবে নর্মালাইজ হয়। মিট্রিক্স এবং ভেক্টর আকারের পাশাপাশি, প্রতিটি সংগ্রহ সংশোধন, ইনডেক্স নির্মাণ এবং পরিষ্কার নিয়ন্ত্রণ করার জন্য একটি নিজস্ব সেট প্যারামিটার ব্যবহার করে। এই সেটিংগগুলি যে কোন সময় সম্পর্কিত অনুরোধ মাধ্যমে পরিবর্তন করা যেতে পারে।
মাল্টি-টেনেন্সি সেটআপ
কতগুলি সংগ্রহ তৈরি করা উচিত? দ্বারা সংবিদ ভিত্তিক পার্টিশন করা। সাধারণত, আপনি মাল্টি-টেনেন্সি নামে এই পদ্ধতি দ্বারা কেবল একটি সিঙ্গেল সংগ্রহ ব্যবহার করতে পারেন। এটি ব্যবহারকারীদের জন্য দ্রুত কিন্তু অতিরিক্ত কনফিগারেশনের প্রয়োজন করে। মাল্টি-টেনেন্সি সেট আপ করার পদ্ধতি শেখা নিন।
কবে একাধিক সংগ্রহ তৈরি করা উচিত? যখন আপনার কিছু ব্যবহারকারী আছে এবং নিরীক্ষণের প্রয়োজন পরে। এই পদ্ধতি সমবেশী তার দিকে বলে, কিন্তু এটি সম্পূর্ণভাবে স্রোত বয়াদের চেষ্টা করা যেতে পারে, কারণ একাধিক সংগ্রহের নির্মাণ সম্পূর্ণ অতিরিক্ত উর্ধ্বতন উপকরণের পাল্টা যেতে পারে। এছাড়া, আপনাকে নিশ্চিত করা উচিত যে, তারা একে অপরকে কোনও উপায়ে প্রভাবিত না করে, বিশেষত দক্ষতার দিকে।
সংগ্রহ তৈরি করা
PUT /collections/{collection_name}
{
"vectors": {
"size": 300,
"distance": "Cosine"
}
}
প্রয়োজনীয় অপশনের পাশাপাশি, নিম্নলিখিত সংগ্রহ অপশনগুলির জন্য কাস্টম মানগুলি সুনির্দিষ্ট করা সম্ভব:
-
hnsw_config
- ইনডেক্স বিবরণের জন্য, ইনডেক্স অনুচ্ছেদ দেখুন। -
wal_config
- রাইট-এহেড লগিং সংশ্লিষ্ট কনফিগারেশন। WAL এর সম্পর্কিত বিস্তারিত তথ্যের জন্য দয়া করে অনুসরণ করুন। -
optimizers_config
- অপটিমাইজারের বিবরণের জন্য, অপ্টিমাইজার অনুচ্ছেদটি দেখুন। -
shard_number
- সংগ্রহে কতগুলি পানা থাকা উচিত, তার জন্য অংশগুলি সম্পর্কে সম্পূর্ণ তথ্যের জন্য দয়া করে যোগাযোগ করুন। -
on_disk_payload
- পেইলোড উপাত্ত স্টোর করার জন্য অবস্থান সুনির্দিষ্ট করে। যদিtrue
সেট করা হয়, তবে এটি মাত্র পেইলোডকে ডিস্কে সংরক্ষণ করবে। এটা বড় পরিমাণের ডেটা ব্যবচ্ছ করার সময় মেমোরি ব্যবহার সীমিত করার জন্য অত্যন্ত ব্যবহারি হতে পারে। -
quantization_config
- কোয়ান্টাইজেশনের বিস্তারিত তথ্যের জন্য, কোয়ান্টাইজেশনের অনুচ্ছেদটি দেখুন।
ঐচ্ছিক সংগ্রহ পরামিটারের ডিফল্ট প্যারামিটারগুলি ঋণাত্মক ফাইলে configuration file দৃষ্টিগোচর করা হয়।
সংগ্রহ এবং ভেক্টর প্যারামিটারের বিস্তারিত তথ্যের জন্য, দয়া করে স্কীমা ডেফিনিশন এবং configuration file দেখুন।
v1.2.0 থেকে উপলভ্য
এক্সেলিকা প্রাপ্ত করার জন্য ভেক্টরগুলি মেমোরিতে সংরক্ষণ করার জন্য র্যামে সংরক্ষণ করা হয়। on_disk
প্যারামিটারটি ভেক্টর কনফিগারেশনে সেট করা যেতে পারে। যদি সত্য হয়, তবে সমস্ত ভেক্টরগুলি ডিস্কে সংরক্ষিত হবে। এটা বড় পরিমাণের তথ্য আমদানি করার জন্য ব্যবহারিক।
অন্য সংগ্রহ থেকে সংগ্রহ তৈরি
*v1.0.0
মাল্টি-ভেক্টর সংগ্রহ
ভার্সন v0.10.0 থেকে উপলব্ধ
প্রতিটি রেকর্ডে একাধিক ভেক্টর থাকতে পারে। এই ফিচারটি কর্পোরেশনে একাধিক ভেক্টর সংরক্ষণের সুযোগ দেয়। আপনি কালেকশন তৈরি করার সময় রেকর্ডের মধ্যে ভেক্টরগুলি আলাদা ভাবে চিহ্নিত করতে পারেন। এই স্কিমা আওতাভুক্ত প্রতিটি নামকরণ ভেক্টরের নিজস্ব দূরত্ব এবং সাইজ থাকে।
PUT /collections/{collection_name}
{
"vectors": {
"image": {
"size": 4,
"distance": "ডট"
},
"text": {
"size": 8,
"distance": "কোসাইন"
}
}
}
কিছু বিশেষ ক্ষেত্রে, ভেক্টর সংরক্ষণ ছাড়া একটি কালেকশন তৈরি করা যায়।
ভার্সন v1.1.1 থেকে উপলব্ধ
প্রতিটি নামকরণ ভেক্টরের জন্য, আপনি বিকল্পভাবে hnsw_config
বা quantization_config
নির্ধারণ করতে পারেন, যা কালেকশন কনফিগারেশন হতে পারে না। এটি ভেক্টরের স্তরে অনুসন্ধান কার্যকরতা অপ্টিমাইজ করতে ব্যবহার করা যেতে পারে।
ভার্সন v1.2.0 থেকে উপলব্ধ
ভেক্টরগুলি মেমোরিতে সংরক্ষিত হয় দ্রুত অ্যাক্সেসের জন্য। প্রতিটি ভেক্টরের জন্য, on_disk
কে সত্য (true
) নেয়া যেতে পারে, যাতে সব ভেক্টর সার্ভকোনজন্য সব সময় ডিস্কে সংরক্ষিত থাকে। এটি বড় পরিমাণের তথ্য প্রবেশ করানোর জন্য উপযুক্ত।
কালেকশন মুছে ফেলা
DELETE /collections/{collection_name}
কালেকশন পরিমাপ আপডেট
ডাইনামিক প্যারামিটার আপডেট করা যেতে পারে, যেমন, ভেক্টরের চেহারা শুরুতে আরও দক্ষ লোডিং হতে পারে। উদাহরণস্বরূপ, আপলোডের সময় ইনডেক্সিং অক্ষম করে এবং আপলোড সমাপ্তির পরেই ইনডেক্সিং সক্রিয় করা যেতে পারে। এভাবে করে আপনি অতিরিক্ত গণনার সহায়তা করতে বিবেচনাধীন কম্পিউটেশনাল রিসোর্স বর্বরতা করবেন না।
নিম্নলিখিত কমান্ডটি ভেক্টরের সাবধান কনফিগারেশন থেকে বেশিরভাগ ।।।
PATCH /collections/{collection_name}
{
"optimizers_config": {
"indexing_threshold": 10000
}
}
নিম্নলিখিত প্রাসঙ্গিক প্যারামিটার আপডেট করা যেতে পারে:
-
optimizers_config
- অপ্টিমাইজারস এর বিস্তারিত বিবরণ দেখুন। -
hnsw_config
- ইনডেক্সের বিস্তারিত বিবরণ দেখুন। -
quantization_config
- কোয়ান্টাইজেশনের বিস্তারিত বিবরণ দেখুন। -
ভেক্টর
- নির্দিষ্ট ভেক্টরের বিন্যাস, তারারহসন্য কনফিগারেশন
,কোয়ান্টাইজেশন কনফিগারেশন
এবংঅন ডিস্ক
সেটিংস। -
params
- অন্যান্য কালেকশন প্যারামিটার, যার মধ্যেলেখা সম্বিন্ধিত মাধ্যম ফ্যাঁক্টর
এবংon_disk_payload
রয়েছে।
সম্পূর্ণ এপিআই স্পেসিফিকেশনটি স্কিমা ডিফিনিশনস এ অবস্থিত।
ভার্সন v1.4.0 থেকে উপলব্ধ
Qdrant 1.4 আপডেটতে কালেকশনের একাধিক প্যারামিটার সমর্থন যুক্ত হয়েছে। HNSW ইনডেক্স, কোয়ান্টাইজেশন, এবং ডিস্ক কনফিগারেশন এবং প্যারামিটার আপডেট করা যেতে পারে সাথেই নতুন তথ্যের দ্বারা বেকগ্রাউন্ডে নতুন ক্ষেত্রের সাথে মেলবে।
তথ্যসূত্র: https://qdrant.github.io/qdrant/redoc/index.html
সংগ্রহ তথ্য
Qdrant অবশ্যই কালেকশনের জন্য অনুমানেএ করে যে কোন বিদ্যমান কালেকশনের কনফিগারেশন প্যারামিটার নির্ধারণ করতে যা তথ্যের বিতরণ এবং ইনডেক্সিং পরিস্থিতি সর্বাধিক বুঝতে পারে।
GET /collections/{collection_name}
{
"result": {
"status": "green",
"optimizer_status": "ok",
"vectors_count": 1068786,
"indexed_vectors_count": 1024232,
"points_count": 1068786,
"segments_count": 31,
"config": {
"params": {
"vectors": {
"size": 384,
"distance": "Cosine"
},
"shard_number": 1,
"replication_factor": 1,
"write_consistency_factor": 1,
"on_disk_payload": false
},
"hnsw_config": {
"m": 16,
"ef_construct": 100,
"full_scan_threshold": 10000,
"max_indexing_threads": 0
},
"optimizer_config": {
"deleted_threshold": 0.2,
"vacuum_min_vector_number": 1000,
"default_segment_number": 0,
"max_segment_size": null,
"memmap_threshold": null,
"indexing_threshold": 20000,
"flush_interval_sec": 5,
"max_optimization_threads": 1
},
"wal_config": {
"wal_capacity_mb": 32,
"wal_segments_ahead": 0
}
},
"payload_schema": {}
},
"status": "ok",
"time": 0.00010143
}
যদি কোলেকশনে ভেক্টর ঢুকানো হয়, তবে status
ফিল্ডটি "yellow" হতে পারে অপটিমাইজেশন সময়ে এবং সমস্ত পয়েন্ট সফলভাবে প্রস্সেস হওয়ায় "green" হবে।
নিম্নলিখিত রং অবস্থা পাওয়া যাবে:
- ?
green
: কালেকশন প্রস্তুত - ?
yellow
: কালেকশন অপটিমাইজেশন ভুগতন - ?
red
: ইঞ্জিন অরিপ্যারেবল ত্রুটি অভিলব
কিছু অন্যান্য সম্পত্তির মধ্যে যা দাবি করা আছে:
-
points_count
- পাঁচাদেশ অবজেক্টের মোট সংখ্যা (ভেক্টর এবং তাদের পেলোড) আবদিত স্তক কইছে -
vectors_count
- কালেকশনে মোট ভেক্টর সংখ্যা। যদি প্রতিটি অবজেক্টের বহুগুন ভেক্টর থাকে তাহলে এটি পাঁচাদেশ সংখ্যা এর সমান না হবে। -
indexed_vectors_count
- হেঁশবিশ ইনডেক্সে সংরক্ষিত ভেক্টরের মোট সংখ্যা। Qdrant সমস্ত ভেক্টর ইনডেক্সে সংরক্ষণা না করে, শুধুমাত্র এই ভেক্টরগুলি যে কোনো কনফিগারেশনের ভিত্তিতে ইনডেক্স মন্ত্রন করতে পারে।
HNSW ইনডেক্সিং ভেক্টর
কিছু ক্ষেত্রে আপনি পাবেন যে indexed_vectors_count
এর মান বেশি হবে vectors_count
এর তুলনায়। এটি অপটিমাইজারের কনফিগারেশন উপর এমন করণাধর্মী। যদি এই কার্যকরি ভাবে স্বাগত না করে, তবে খাতির নতুন ইনডেক্স সেগমেন্ট তৈরি হবে যদি অই ভেক্টরের আকার ক্রমানুযাযী indexing_threshold
(কেবি) ছাড়ে। যদি আপনার কালেকশনটি খুব ছোট হয় অথবা ভেক্টর মাত্রা নিম্ন হয়, তাহলে HNSW সেগমেন্ট তৈরি হতে পারে না এবং indexed_vectors_count
শুনার্থ করে 0
হবে।
আপনি যদি কালেকশন প্যারামিটারে indexing_threshold
এর মান নিচে নামায়, তাহলে বিদ্যমান কালেকশনে নতুন ইনডেক্স সেগমেন্ট তৈরি করতে পারেন।
কালেকশন অ্যালিয়াস
একটি উৎপাদন পরিবেশে, ভেক্টরগুলির বিভিন্ন সংস্করণে সুবিধাপূর্বক সুইচ করার প্রয়োজন হতে পারে, উদাহরণস্বরূপ নিউরাল নেটওয়ার্কের একটি নতুন সংস্করণে আপগ্রেড করার জন্য।
এই ধরনের ক্ষেত্রে, সার্ভিস বন্ধ করা এবং নতুন ভেক্টরে ব্যবহার করে কালেকশনটি পুনঃগঠন করা সম্ভাবনা থাকতে পারে না। একটি অ্যালিয়াস হল একটি বিদ্যমান কালেকশনের জন্য অতিরিক্ত নাম। কিউয়ারিং চালিয়ে বাদ্ধবার্তা ডাটাবেসের কোনো নাম বিশেষ কালেকশনের নামের পরিবর্তন করা গেলে।
তাই, একটি দ্বিতীয় সংগ্রহও পিছনে তৈরি করার জন্য, এবং তারপরে অ্যালিয়াসটি পুরাতন সংগ্রহ থেকে নতুন সংগ্রহে সুইচ করা যেতে পারে। অ্যালিয়াস পরিবর্তন পরিপ্রেক্ষিত হন, মেলামেলির ফর্মানাইই প্রভাবিত করে না এবং সুইচিং প্রক্রিয়ার সময়ে সামলানো সম্ভাবনা না থাকলেও।
অ্যালিয়াস তৈরি করুন
POST /collections/aliases
{
"actions": [
{
"create_alias": {
"alias_name": "production_collection",
"collection_name": "example_collection"
}
}
]
}
অ্যালিয়াস মুছুন
POST /collections/aliases
{
"actions": [
{
"delete_alias": {
"alias_name": "production_collection"
}
}
]
}
সংগ্রহ সুইচ করুন
একাধিক অ্যালিয়াস অপারেশন অমূলবাদীভাবে নিষ্পাদন করা যেতে পারে। উদাহরণস্বরূপ, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার ভিতরী সংগ্রহটি পুণরায় সুইচ করতে পারেন।
POST /collections/aliases
{
"actions": [
{
"delete_alias": {
"alias_name": "production_collection"
}
},
{
"create_alias": {
"alias_name": "production_collection",
"collection_name": "new_collection"
}
}
]
}
তালিকা সংগ্রহ সহযোগিতা
GET /collections/{collection_name}/aliases
সব সহযোগিতা তালিকা
GET /aliases
সব সংগ্রহ তালিকা
GET /collections