সূচিপত্র
Qdrant এর একটি মৌলিক বৈশিষ্ট্য হল ভেক্টর সূচিকার এবং প্রথাগত সূচিকার কার্যকর সমন্বয়। এটা গুরুত্বপূর্ণ কারণ যে, শুধুমাত্র ভেক্টর সূচিকার থাকা সঠিক নয় ভেক্টর অনুসন্ধান বাছাই করতে। সাধারণ শব্দে, ভেক্টর সূচিকা ভেক্টর অনুসন্ধান গতিশীল করে, যখন পেইলোড সূচিকা বিচ্ছিন্নতা গণনা করে।
প্যারাগ্রাফের মধ্যে সূচী একবিন্দুীয় ভাবে বিদ্যমান, কিন্তু সূচী নিয়ের প্যারামিটারগুলি সাধারিত সেটের জন্য কনফিগার করা হয়। সব প্যারাগ্রাফ স্বয়ংক্রিয়ভাবে সূচী না থাকতে পারে। এটি অপটিমাইজেশন সেটিংসের প্রয়োজনের উপর নির্ভর করে এবং সাধারণভাবে সংরক্ষিত বিন্দুগুলির সংখ্যার উপর নির্ভর করে।
পেইলোড সূচিকা
Qdrant এর পেইলোড সূচিকা প্রাথমিক ডকুমেন্ট-অনুযায়ী ডাটাবেসের সূচিকার মতো। এই সূচিকা নির্দিষ্ট ক্ষেত্র এবং প্রকৃতির জন্য প্রয়োজনীয়, যাতে সম্পর্কিত ফিল্টার শর্তগুলির উপর ভিত্তি করে তাড়াতাড়ি বিন্দু পূর্বানুমান করা যায়।
এটি আসলেই প্রশ্ন পরিকল্পনা নির্বাচন করার সাহায্য করে, যা অনুসন্ধান রণনীতি নির্ধারণ করায়।
একটি সূচি তৈরি করতে অতিরিক্ত গাণনাযোগ্য উর্বরে সম্পদের স্মরণ করা প্রয়োজন, তাছাড়া, গুরত্বপূর্ণ ক্ষেত্রগুলি সূচিত করতে সতর্ক থাকা প্রয়োজন। Qdrant আপনার জন্য এই চয়ন করে না, বরং ব্যবহারকারীকে পরিবেশন করে।
একটি ফিল্ডকে সূচিত করার জন্য, নিম্নলিখিত পদ্ধতি ব্যবহার করা যেতে পারে:
PUT /collections/{collection_name}/index
{
"field_name": "সূচিত করতে ইচ্ছুক ক্ষেত্রের নাম",
"field_schema": "কী-মান"
}
উপলব্ধ ফিল্ড প্রকারগুলি হল:
-
কী-মান
- কী-মান পেইলোডের জন্য, মিলান ফিল্টার শর্তগুলির প্রভাব ফেলে। -
ইন্টিজার
- পূর্ণসংখ্যা পেইলোডের জন্য, মিলান এবং মান ফিল্টার শর্তগুলির প্রভাব ফেলে। -
ফ্লোট
- ফ্লোট পেইলোডের জন্য, বিরামচিহ্ন ফিল্টার শর্তগুলির প্রভাব ফেলে। -
বুল
- বুলিয়ান পেইলোডের জন্য, মিলান ফিল্টার শর্তগুলির প্রভাব ফেলে (অংশটি 1.4.0 থেকে উপলব্ধ)। -
ভূ-গঠিত
- ভৌগোিক পেইলোডের জন্য, ভৌগোিক বাউন্ডিং বক্স এবং ভৌগোিক ব্যাস ফিল্টার শর্তগুলির প্রভাব ফেলে। -
টেক্সট
- একটি বিশেষ সূচিপত্র প্রকার যা কী-মান/স্ট্রিং পেইলোডের জন্য উপযুক্ত, পূর্ণ-টেক্সট অনুসন্ধান ফিল্টার শর্তগুলির প্রভাব ফেলে।
পেইলোড সূচিগুলি অতিরিক্ত স্মৃতি সহন করতে পারে, তাই সূচিত করা ফিল্ডগুলির মধ্যে শুধুমাত্র ওয়ার্ডিং শর্তগুলিতে ব্যবহৃত হওয়া প্রয়োজন। যদি আপনি অনেক ফিল্ড দিয়ে ফিল্টার করতে চান এবং স্মৃতিসীমা অনুমোদন দেয় না সমস্যা, তবে এটি পরামর্শযোগ্য যে অনুসন্ধানের ফলাফলগুলির সীমাগুলি বেশি ফিল্ডগুলি চয়ন করা। সাধারণভাবে, যতটা অনন্য মানের একটি পেইলোড মান থাকে, সূচী ব্যবহারের ক্ষমতা ততটা বেড়ে যাবে।
পূর্ণ-টেক্সট সূচি
Available from version 0.10.0
Qdrant স্ট্রিং পেইলোডের জন্য পূর্ণ-টেক্সট অনুসন্ধান সমর্থন করে। পূর্ণ-টেক্সট সূচি আপনাকে শব্দ বা বাক্যের উপস্থিতির উপর ভিত্তি করে বিন্দু ফিল্টার করতে অনুমতি দেয়।
একটি পূর্ণ-টেক্সট সূচি কনফিগার করতে কিছুটা জটিল, কারণ আপনি টোকেনাইজেশন পরামিতি নির্দিষ্ট করতে পারেন। টোকেনাইজেশন হল স্ট্রিংকে টোকেনে ভাগ করার প্রক্রিয়া এবং তারপর এই টোকেনগুলির উল্টা সূচীত করার জন্য।
একটি পূর্ণ-টেক্সট সূচি তৈরি করতে, আপনি নিম্নলিখিত পদ্ধতিটি ব্যবহার করতে পারেন:
PUT /collections/{collection_name}/index
{
"field_name": "সূচি বানাতে চান ফিল্ডের নাম",
"field_schema": {
"type": "text",
"tokenizer": "ওয়ার্ড",
"min_token_len": 2,
"max_token_len": 20,
"lowercase": true
}
}
উপযোগী টোকেনাইজেশন পদ্ধতিগুলি হল:
-
ওয়ার্ড
- স্পেস, বিরামচিহ্ন এবং বিশেষ চিহ্নের উপর ভিত্তি করে স্ট্রিং আলাদা করে। -
হোয়াইটস্পেস
- স্পেসের ওপর ভিত্তি করে স্ট্রিং আলাদা করে। -
প্রিফিক্স
- স্পেস, বিরামচিহ্ন এবং বিশেষ চিহ্নের উপর ভিত্তি করে স্ট্রিং বিভাজন করে এবং পরে প্রতিটি শব্দের জন্য একটি প্রিফিক্স সূচি তৈরি করে। উদাহরণস্বরূপ, "hello" কে "h", "he", "hel", "hell", "hello" হিসাবে সূচী করা হবে। -
মাল্টিলিংগুয়াল
- একটি বিশেষ প্রকারের টোকেনাইজেশন যা charabia প্যাকেজের উপর ভিত্তি করে। এটি সঠিক টোকেনাইজেশন এবং বহুভাষী শব্দাডুলির সময়গুলির অনুরূপ করে, যেমন অক্ষরবিশেষ ছাড়া এবং অক্ষর সেপারেট
ভেক্টর ইন্ডেক্সিং
ভেক্টর ইন্ডেক্সিং হলো একটি ডেটা স্ট্রাকচার, যা ভেক্টর ভিত্তিক এবং নির্দিষ্ট গণিতমূলক মডেল দিয়ে নির্মিত। ভেক্টর ইন্ডেক্সিং এর মাধ্যমে, আমরা টার্গেট ভেক্টরের সাথে মিল ছাড়ানোর জন্য একাধিক ভেক্টর দ্রুততাপূর্বক জিজ্ঞাসা করতে পারি।
বর্তমানে, Qdrant শুধুমাত্র HNSW কে ভেক্টর ইন্ডেক্স হিসাবে ব্যবহার করে।
HNSW (হাইরারকিক্যাল ন্যাভিগেবল স্মাল ওয়ার্ল্ড গ্রাফ) হলো একটি গ্রাফ-ভিত্তিক ইন্ডেক্সিং এলগোরিদম। নির্দিষ্ট নিয়মগুলি অনুযায়ী, এটি গ্রাফের জন্য একটি বহুতল ন্যাভিগেশন গঠন তৈরি করে। এই গঠনে, উপরের তালিকা হলো এরপরাটার, যেখানে নোড গুলির মধ্যে বড় দূরত্ব রয়েছে। নীচের তালিকা গুলি অন্তর্ভুক্ত, যেখানে নোড গুলির মধ্যে ছোট দূরত্ব আছে। খোঁজ টারগেটের কাছাকাছির নোড খোঁজ শুরু হয় উপরের তালিকা থেকে, এবং তারপর আরেকটি অন্য একটি খোঁজের জন্য পরবর্তী তালিকায় ঢুকে যায়। একাধিক ইটারেশন পরে, এটি দ্রুততাপূর্বক টারগেট অবস্থানে পৌঁছে যাতে পারে।
কর্পোরেট উন্নতির জন্য, HNSW এ গ্রাফের প্রতিটি তালিকা এর সর্বাধিক ডিগ্রীতে নোডের সীমা রেখে ছাড়ছে এবং আপনি প্রতিটি টারগেটের জন্য খোঁজের সময় ef_construct
(ইন্ডেক্স নির্মাণ সময়ে) বা ef
(টারগেট খোঁজের সময়) ব্যবহার করে খোঁজের ব্যালু সীমা নির্ধারণ করতে পারেন।
এই প্যারামিটারগুলি কনফিগার করতে কনফিগারেশন ফাইলে:
storage:
hnsw_index:
m: 16
ef_construct: 100
full_scan_threshold: 10000
সংগ্রহ সৃষ্টি প্রসেসের সময়, ef
প্যারামিটারটি কনফিগার করা যায় এবং ডিফল্টভাবে ef_construct
এর সমান।
HNSW কয়েকটি কারণে নির্বাচিত হয়েছে। প্রথমভাবে, HNSW দ্বারা ফিল্টার চেঞ্জ করার জন্য Qdrant এর সাথে মিলভুত সহিতকারে সঙ্গত। দ্বিতীয়ভাবে, পাবলিক বেঞ্চমার্ক টেস্ট অনুসারে, এটি সবচেয়ে নির্ভুল এবং দ্রুততম এলগোরিদমের মাঝে একটি।
v1.1.1 থেকে উপলভ্য
HNSW প্যারামিটারগুলি ছাড়াও সংগ্রহ এবং নেম্ড ভেক্টরের জন্য খোঁজের কর্মক্ষমতা অপ্টাইজেশনের জন্য ফাইন-টিউন্ড করা যাতে পারে hnsw_config
সেট করে।
ফিল্টারযোগ্য ইন্ডেক্স
পৃথিবীর প্রচুর অংশেই বিভিন্ন ধরনের ফিল্টার ব্যবহার করা হয় খোঁজের জন্য এবং এগুলি ফিল্টারগুলির আগে বা পরে ভেক্টর ইন্ডেক্স ব্যবহারে জন্য ব্যাপিত হতে পারে। এখানে যেখানে ফিল্টারগুলি দৃঢ় তারতাজে হল, HNSW ইন্ডেক্স নিকটবর্তী হতে পারে। এখানে যেখানে ফিল্টারগুলি সখ্যিয়ানে মজবুত তারতাজে হল, পাওড ইন্ডেক্স ব্যবহার করা যাবে এবং সম্পূর্ণ পুনর্মূল্যায়িত হবে। তবে, ইন্টারমিডিয়েট মামলাগুলিতে, এই পদ্ধতি ব্যর্থ হতে পারে। এক প্রান্তে, আমাদের বহুমূল্যবাণীর জন্য অত্যন্ত ভার্সন পূর্ণ স্ক্যান করা করার সামর্থ্য নেই। এর বিপরীতে, যখন অত্যন্ত সখ্যিয়ানে মজবুত ফিল্টার ব্যবহার করা হয়, HNSW গ্রাফ ভেঙে যাওয়ার সূচনা করে।
অতিরিক্ত এজ আপনাকে ভেক্টর ইন্ডেক্স ব্যবহার করতে ভিজিটর প্রতিষ্ঠিত ভিজেক্টরগুলি খোঁজ করার সময় ফিল্টার প্রয়োগ করা এবং জ্রুক্ষণে শর্তাগুলি গণনা করার সুবিধা দেয়।
এই পদ্ধতি দ্বারা শর্ত পরীক্ষার ওভারহেডটি সর্বদা কমে যায়, কারণ আপনাকে খোঁজে অংশ নেয়ার জন্য টপটি বিভাগ পর্যন্ত ওয়ান্কন্ডিশনের গঠন করা দরকার হয় এবং পুনর্মূল্যায়নে অংশগুলির জন্য শুধুমাত্র ছোট বেশী পয়েন্টগুলির কোন্ডিশন গণনা করতে হয়।