ملوس میں Collection کلاس مائی اس کے ساتھ مشابہ ہے جیسے کے MySQL میں ایک ٹیبل ہوتا ہے، جس کا استعمال ڈیٹا کو منظم کرنے کے لیے کیا جاتا ہے اور ایک سے زیادہ پارٹیشنوں پر مشتمل ہوتا ہے۔

Collection تخلیق کرنا

ایک کلیکشن ایک یا ایک سے زیادہ پارٹیشنز پر مشتمل ہوتا ہے۔ نیا کلیکشن تخلیق کرتے وقت، ملوس _default نام کا ایک ڈیفالٹ پارٹیشن بناتا ہے۔ مزید معلومات کے لیے، صرف کلیکشن سے متعلق اصطلاحات کی وضاحت کے لیے دیکھیں۔

ذیل مثال میں book نام کا ایک کلیکشن بنایا جائے گا، جس میں دو پارٹیشنز شامل ہوں گے، ایک پرائمری کی فیلڈ نامکردہ book_id، ایک INT64 اسکالر فیلڈ نامکردہ word_count، اور ایک دو بعدی فلوٹنگ پوائنٹ ویکٹر فیلڈ نامکردہ book_intro۔ واقعی ایپلیکیشنز عام طور پر مثال سے زیادہ ڈھائی چونچ کے ویکٹر استعمال کرتے ہیں۔

تیاری کا موڈ

یہ موڈ ایک MYSQL ٹیبل کی ساخت کی طرح ہے۔

بنانے والی مجموعہ میں ایک پرائمری کی فیلڈ اور ایک ویکٹر فیلڈ ہونا ضروری ہے۔ پرائمری کی فیلڈ میں INT64 اور VarChar ڈیٹا ٹائپ کا سپورٹ ہوتا ہے۔

سب سے پہلے ضروری پیرامیٹر تیار کریں، جیسے فیلڈ سکیما، مجموعہ سکیما، اور مجموعہ کا نام۔

مجموعہ سکیما کی تعریف سے پہلے، مجموعہ میں ہر فیلڈ کے لئے سکیما تیار کریں۔ ڈیٹا داخل کرنے کی پیچیدگی کو کم کرنے کے لئے، Milvus آپ کو ہر سکیلر فیلڈ (صرف پرائمری کی فیلڈ کے علاوہ) کے لئے ایک دیفالٹ قیمت مخصوص کرنے کی اجازت دیتا ہے۔ یعنی اگر آپ ڈیٹا داخل کرتے وقت کسی فیلڈ کو خالی چھوڑ دیتے ہیں تو سکیما تیار کرتے وقت فیلڈ سکیما تیار کرتے وقت مخصوص کردہ دیفالٹ قیمت استعمال ہوگی۔

from pymilvus import CollectionSchema, FieldSchema, DataType
book_id = FieldSchema(
  name="book_id",
  dtype=DataType.INT64,
  is_primary=True,
)
book_name = FieldSchema(
  name="book_name",
  dtype=DataType.VARCHAR,
  max_length=200,
  default_value="Unknown"  # دیفالٹ قیمت "Unknown" ہے
)
word_count = FieldSchema(
  name="word_count",
  dtype=DataType.INT64,
  default_value=9999  # دیفالٹ قیمت 9999 ہے
)
book_intro = FieldSchema(
  name="book_intro",
  dtype=DataType.FLOAT_VECTOR,
  dim=2
)
schema = CollectionSchema(
  fields=[book_id, book_name, word_count, book_intro],
  description="Test book search",  # تفصیل "Test book search" ہے
  enable_dynamic_field=True  # ڈائنامک سکیما کو فعال کریں
)
collection_name = "book"

سکیما قسم پیرامیٹر تفصیل چار خیارات
FieldSchema name بنانے والے فیلڈ کا نام۔ N/A
dtype بنانے والے فیلڈ کا ڈیٹا ٹائپ۔ پرائمری کی فیلڈ: - DataType.INT64 (numpy.int64) - DataType.VARCHAR (VARCHAR) سکیلر فیلڈز: - DataType.BOOL (Boolean) - DataType.INT8 (numpy.int8) - DataType.INT16 (numpy.int16) - DataType.INT32 (numpy.int32) - DataType.INT64 (numpy.int64) - DataType.FLOAT (numpy.float32) - DataType.DOUBLE (numpy.double) - DataType.VARCHAR (VARCHAR) - DataType.JSON (JSON) ویکٹر فیلڈز: - BINARY_VECTOR (Binary vector) - FLOAT_VECTOR (Float vector)
is_primary ایک اسویچ جو کہتا ہے کہ فیلڈ پرائمری ہے یا نہیں۔ یہ پیرامیٹر پرائمری کی فیلڈ کے لئے مخصوص کرنا ضروری ہے۔ True یا False
auto_id ایک اسویچ جو آٹومیٹک آئی ڈی (پرائمری کی) تفویض کو فعال یا غیر فعال کرتا ہے۔ یہ پیرامیٹر پرائمری کی فیلڈز کے لئے مخصوص ہے اور اس کی دیفالٹ قیمت False ہوتی ہے۔ True یا False
max_length (VARCHAR فیلڈز کے لئے ضروری ہے) داخل ہونے والی سٹرنگ کی زیادہ سے زیادہ لمبائی۔ [1, 65,535]
default_value فیلڈ کی دیفالٹ قیمت۔ یہ پیرامیٹر صرف غیر آرایہ اور غیر JSON اسکیلر فیلڈز کے لئے مخصوص ہے۔ پرائمری کی فیلڈ کے لئے دیفالٹ قیمت کو مخصوص کرنا ممکن نہیں ہے۔ ذیادہ معلومات کے لئے، برائے کرم، default_value پیرامیٹر پر مراجعہ کریں۔ N/A
dim (ویکٹر فیلڈز کے لئے ضروری ہے) سمتھت ویکٹر کی آبادی۔ [1, 32,768]
description (اختیاری) فیلڈ کی تفصیل۔ N/A
CollectionSchema fields مجموعہ کے لئے تیار کئے جانے والے فیلڈز۔ N/A
description (اختیاری) تیار کئے جانے والے مجموعے کی تفصیل۔ N/A
enable_dynamic_field کیا ڈائنامک سکیما کو فعال کرنا ہے۔ ڈیٹا ٹائپ: بولین (true یا false)، اختیاری، ڈیفالٹ False ہے۔ زیادہ معلومات کے لئے ڈائنامک سکیما اور مجموعہ مینجمنٹ کے استعمال کی سمجھ کے لئے صارف گائیڈ پر مراجعہ کریں۔
collection_name تیار کئے جانے والے مجموعے کا نام۔ N/A

سکیما کے ساتھ ایک کالیکشن بنائیں

اب، مخصوص سکیما کے ساتھ ایک کالیکشن بنائیں۔

from pymilvus import Collection
collection = Collection(
    name=collection_name,
    schema=schema,
    using='default',
    shards_num=2
    )
پیرامیٹر تفصیل اختیارات
using (اختیاری) سرور کا عرقیہ مخصوص کریں یہاں، اور منتخب کریں کہ کالیکشن کو Milvus سرور کے کہاں بنانا ہے۔ نیاز نہیں
shards_num (اختیاری) بنانے والی کالیکشن کے شارڈ کی تعداد۔ [1,16]
num_partitions (اختیاری) بنانے والی کالیکشن کے لوجکل تقسیم کی تعداد۔ [1,4096]
*kwargs: collection.ttl.seconds (اختیاری) کالیکشن کا TTL کالیکشن کا میعاد ختم ہونے کا وقت ہے۔ ختم ہونے والی کالیکشن میں ڈیٹا صاف کیا جائے گا اور تلاشات یا کوئیریوں میں شرکت نہیں کرے گا۔ TTL کو سیکنڈوں میں تعین کریں۔ قیمت 0 یا اس سے زیادہ ہونی چاہئے۔ 0 کا مطلب ہے کہ TTL غیر فعال ہوگا۔

محدودیتیں

سرگرمی تشکیل

خصوصیت زیادہ سرحد
کالیکشن کا نام لمبائی 255 حروف
کالیکشن میں تقسیموں کی تعداد 4,096
کالیکشن میں فیلڈوں کی تعداد 64
کالیکشن میں شارٹ کی تعداد 16

default_value پیرامیٹر

  • default_value صرف غیر مصرف اور غیر جیسن کو پہنچانا۔
  • default_value ابتدائی کارئی کے لئے نہیں ہے۔
  • default_value کا ڈیٹا نوع dtype میں ہونا ضروری ہے۔ ورنہ، غلطیاں ہو سکتی ہیں۔
  • auto_id کے معاملے میں، بقایا تمام فیلڈ کو ڈیفالٹ قیمت استعمال کرنے کی اجازت نہیں ہے۔ دوسرے الفاظ میں، داخل یا اپ ڈیٹ عمل کرتے وقت، کم از کم ایک فیلڈ کی قیمت کا تفصیل ضروری ہوگا۔ ورنہ، غلطیاں ہو سکتی ہیں۔

کالیکشن کا نام تبدیل کرنا

اگر آپ کسی کالیکشن کا نام تبدیل کرنا چاہتے ہیں، تو آپ میلوس کے کالیکشن تبدیلی API کے ذریعہ اس سے منسلک ہو سکتے ہیں۔ یہ ہدایت آپ کو یہ سمجھنے میں مدد کرے گی کہ آپ نے اپنے منتخب کردہ SDK کو استعمال کرتے ہوئے ایک موجودہ کالیکشن کا نام تبدیل کرنے کے لئے کس طرح استعمال کرنا ہے۔

مندرجہ ذیل کوڈ کی مثال میں، ہم نے ایک کالیکشن بنایا اور اس کا نام old_collection رکھا، پھر اسے new_collection کا نام دیا۔

from pymilvus import Collection, FieldSchema, CollectionSchema, DataType, connections, utility
connections.connect(alias="default")
schema = CollectionSchema(fields=[
...     FieldSchema("int64", DataType.INT64, description="int64", is_primary=True),
...     FieldSchema("float_vector", DataType.FLOAT_VECTOR, is_primary=False, dim=128),
... ])
collection = Collection(name="old_collection", schema=schema)
utility.rename_collection("old_collection", "new_collection") # Output: True
utility.has_collection("new_collection") # Output: False

کالیکشن کو تبدیل کرنا

موجودہ طور پر، TTL خصوصیت صرف پایتھن میں دستیاب ہے۔

collection.set_properties(properties={"collection.ttl.seconds": 1800})

موجودہ مثال میں کالیکشن کی TTL کو 1800 سیکنڈ میں تبدیل کرتا ہے۔

چیک کریں کہ کالیکشن موجود ہے

تصدیق کریں کہ کیا کالیکشن Milvus میں موجود ہے۔

from pymilvus import utility
utility.has_collection("book")

کالیکشن کی تفصیلات چیک کریں

from pymilvus import Collection
collection = Collection("book")  # میسر کالیکشن ہے۔

collection.schema                # کالیکشن کی CollectionSchema واپس کرتا ہے۔
collection.description           # کالیکشن کی تفصیلات واپس کرتا ہے۔
collection.name                  # کالیکشن کا نام واپس کرتا ہے۔
collection.is_empty              # کالیکشن خالی ہے یا نہیں واپس کرتا ہے۔
collection.num_entities          # کالیکشن میں موجودہ موجودہ انٹٹیوں کی تعداد واپس کرتا ہے۔
collection.primary_field         # پرائمری کی فیلڈ سکیما واپس کرتا ہے۔
collection.partitions            # [پارٹشن] کی ایک فہرست واپس کرتا ہے۔
collection.indexes               # [انڈیکس] کی ایک فہرست واپس کرتا ہے۔
collection.properties            # کالیکشن میں ڈیٹا کی ختم ہونے کی مصارف۔

تمام کالیکشنز کی فہرست

from pymilvus import utility
utility.list_collections()

کالیکشن کو ڈراپ کریں

from pymilvus import utility
utility.drop_collection("book")

کالیکشن کا عرقیہ بنائیں

from pymilvus import utility
utility.create_alias(
  collection_name = "book",
  alias = "publication"
)

کالیکشن عرقیہ کو ڈراپ کریں

from pymilvus import utility
utility.drop_alias(alias = "publication")

موجودہ کو الیس تبدیل کریں

موجودہ الیس کو مختلف کلیکشن کی طرف اشارہ کرنے کے لئے تبدیل کریں۔ مندرجہ ذیل مثال ایسی صورتحال پر مبنی ہے جہاں الیس publication پہلے سے کسی دوسرے کلیکشن کے لئے بنایا گیا تھا۔

from pymilvus import utility
utility.alter_alias(
  collection_name = "book",
  alias = "publication"
)

کلیکشن لوڈ کریں

تلاش یا سوال کارروائیاں کرنے سے پہلے کلیکشن کو میموری میں لوڈ کرنے کا طریقہ۔ ملوس میں، تمام تلاش اور سوال کارروائیاں میموری میں انجام دی جاتی ہیں۔

ملوس صارفین کو کلیکشنز کو مختلف ریپلیکے کے طور پر لوڈ کرنے کی اجازت دیتا ہے تاکہ سوال کے نوڈز کی اضافی CPU اور میموری وسائل کا استعمال کیا جا سکے۔ یہ خصوصیت کلیکشن کے لئے انڈیکس بنانے سے پہلے میموری کو بہرے کرتی ہے۔

from pymilvus import Collection, utility

collection = Collection("book")
collection.load(replica_number=2)

utility.load_state("book")

utility.loading_progress("book")

کلیکشن ریلیز کریں

تلاش یا سوال کارروائیوں کے بعد کلیکشن کو میموری استعمال کم کرنے کے لیے ریلیز کرنے کا طریقہ۔

from pymilvus import Collection
collection = Collection("book") 
collection.release()