ملوس میں 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()