ভেক্টর ইন্ডেক্স তৈরি

এই গাইডটি বর্ণনা করে কিভাবে Milvus এ ভেক্টর ইন্ডেক্স তৈরি করতে হয়।

ভেক্টর ইন্ডেক্স হল ভেক্টর সাদৃশ্য অনুসন্ধান ত্বরণের জন্য ব্যবহৃত মেটাডেটা সংগঠন ইউনিট। ভেক্টর উপর ইন্ডেক্স না তৈরি করলে Milvus ভেক্টরের ছাদ অনুসন্ধান করবে।

ডিফল্টভাবে, Milvus যদি ১,০২৪-এর কম সঙ্গে সেগমেন্টগুলির উপর ইন্ডেক্স না তৈরি করে।

নীচের উদাহরণে দেখানো হয়েছে যেভাবে একটি IVF_FLAT ইন্ডেক্স তৈরি করা হয় ১,০২৪ ক্লাস্টার ব্যবহার করে ইউক্লিডিয়ান দূরত্ব (L2)। আপনি আপনার পরিস্থিতিতে যে ইন্ডেক্স এবং মেট্রিক টাইপ বেছে নিতে পারেন।

ইন্ডেক্স প্যারামিটার প্রস্তুত করুন

নিম্নলিখিত পদক্ষেপ গুলি অনুসরণ করুন ইন্ডেক্স প্যারামিটার প্রস্তুত করার জন্য:

index_params = {
  "metric_type":"L2",
  "index_type":"IVF_FLAT",
  "params":{"nlist":1024}
}
প্যারামিটার বর্ণনা অপশন
metric_type ভেক্টর সাদৃশ্য মাপার জন্য ব্যবহৃত মেট্রিক প্রকার। ফ্লোটিং-পয়েন্ট ভেক্টর:- L2 (ইউক্লিডিয়ান দূরত্ব)- IP (অন্তর্নিহিত গুণ)- COSINE (কোসাইন সাদৃশ্য)বাইনারি ভেক্টর:- JACCARD (জাকার্ড দূরত্ব)- HAMMING (হ্যামিং দূরত্ব)
index_type ভেক্টর অনুসন্ধান ত্বরণের জন্য ব্যবহৃত ইন্ডেক্সের প্রকার। ফ্লোটিং-পয়েন্ট ভেক্টর:- FLAT (ফ্ল্যাট)- IVF_FLAT (IVF_FLAT)- IVF_SQ8 (IVF_SQ8)- IVF_PQ (IVF_PQ)- GPU_IVF_FLAT* (GPU_IVF_FLAT)- GPU_IVF_PQ*> (GPU_IVF_PQ)- HNSW (HNSW)- DISKANN* (DISKANN)বাইনারি ভেক্টর:- BIN_FLAT (BIN_FLAT)- BIN_IVF_FLAT (BIN_IVF_FLAT)
params ইন্ডেক্সের নির্দিষ্ট নির্মাণ প্যারামিটার। বিস্তারিত জানতে, দেখুন ইন-মেমোরি এবং অন-ডিস্ক ইন্ডেক্সিং।
  • DISKANN এর কিছু প্রাথমিক অনুশীলন আছে। বিস্তারিত জানতে, দেখুন অন-ডিস্ক ইন্ডেক্সিং।
  • GPU_IVF_FLAT এবং GPU_IVF_PQ কেবল মিলভুস ইনস্টলেশানে উপলব্ধ যেখানে GPU সমর্থন সক্রিয় আছে।

ইন্ডেক্স তৈরি করুন

ইন্ডেক্স তৈরি করুন সূচক ফিল্ডের নাম এবং ইন্ডেক্স প্যারামিটার নির্ধারণ করে।

from pymilvus import Collection, utility
collection = Collection("book")
collection.create_index(
  field_name="book_intro",
  index_params=index_params
)

utility.index_building_progress("book")

প্যারামিটার বর্ণনা
field_name সেটার নাম যার উপর ইন্ডেক্স তৈরি করা হয়েছে।
index_params তৈরি করার ইন্ডেক্সের প্যারামিটার।

স্কেলার ইন্ডেক্স তৈরি

ভেক্টরের বিরুদ্ধে, স্কেলারগুলির মাত্রা এবং কোন দিক নেই। Milvus, ব্যক্তিগুলি ও স্ট্রিংগুলি একের পর এক হিসাবে মনে করে। মিলভুসে স্কেলার ফিল্ডের জন্য উপলব্ধ ডেটা টাইপ লিস্ট নিচে দেয়া হলো।

Milvus v2.1.0 থেকে পাথর অনুসন্ধানে গুণসমূহ ত্বরণের জন্য, আপনি স্কেলার ফিল্ডে ইন্ডেক্স তৈরি করতে পারেন। এইখানে স্কেলার ফিল্ড ইন্ডেক্সিং সম্পর্কে আরও পড়তে পারেন এই লিঙ্কে।

নোট: "এখানে" এর লিঙ্কটি মূল নথিতে উল্লেখিত লিঙ্কের সাথে প্রতিস্থাপন করা হওয়া উচিত।

ইন্ডেক্স তৈরি

স্কেলার ফিল্ডে ইন্ডেক্স তৈরি করার সময়, আপনাকে কোন ইন্ডেক্স প্যারামিটার সেট করতে দরকার হয় না। স্কেলার ফিল্ডের ইন্ডেক্সের ডিফল্ট মান হল ডিফল্ট_idx, পরে ইন্ডেক্স করা ফিল্ডের নাম দ্বারা। আপনি যদি চান, তবে আপনি অন্য উপযুক্ত মান সেট করতে পারেন।

নিম্নলিখিত ধারণাগুলি মনে করুন যে নাম book নামে একটি সংগ্রহ ইতিমধ্যে অস্তিত্বায়িত আছে এবং স্ট্রিং ফিল্ড book_intro একটি ইন্ডেক্স তৈরি করার প্রয়োজন।

from pymilvus import Collection

collection = Collection("book")   
collection.create_index(
  field_name="book_name", 
  index_name="scalar_index",
)
collection.load()

একবার ইন্ডেক্স তৈরি হয়ে গেলে, আপনি এই স্ট্রিংগ ফিল্ডের জন্য বুলিয়ান অভিব্যক্তি সংযুক্ত করতে পারেন। যেমন:

search_param = {
  "data": [[0.1, 0.2]],
  "anns_field": "book_intro",
  "param": {"metric_type": "L2", "params": {"nprobe": 10}},
  "limit": 2,
  "expr": "book_name like \"Hello%\"", 
}
res = collection.search(**search_param)

ইন্ডেক্স মুছুন

from pymilvus import Collection
collection = Collection("book")      # অস্তিত্বায় একটি সংগ্রহ পান।
collection.drop_index()