انٹٹٹنگ انٹٹٹیٹیز

اس سیکشن میں بیان کیا گیا ہے کہ کیسے مستقل طور پر کلائنٹ سائیڈ کے ذریعے ملوس میں ڈیٹا کو داخل کیا جا سکتا ہے۔

آپ ملوس ڈی ایم کا بھی استعمال کر سکتے ہیں تاکہ ڈیٹا کو ملوس میں منتقل کیا جا سکے۔ ملوس ڈی ایم ایک اوپن سورس ٹول ہے جو خصوصی طور پر ملوس ڈیٹا کو درآمد اور نکالنے کے لئے تشکیل دیا گیا ہے۔

ملوس 2.1 سکالر فیلڈز پر VARCHAR ڈیٹا ٹائپ کا حمایت کرتا ہے۔ جب VARCHAR قسم کے سکالر فیلڈ کے لئے انڈیکس تخلیق کیا جاتا ہے، تو ڈیفالٹ انڈیکس قسم ایک ٹرائی ہوتی ہے۔

نیچے دیے گئے مثال میں 2,000 صفوں کے رینڈم جنریٹ کردہ ڈیٹا کو نمونہ ڈیٹا کے طور پر داخل کیا جاتا ہے (ملوس CLI مثال میں پہلے ہی تیار کردہ ریموٹ CSV فائل کا استعمال کرتا ہے جو مشابہ ڈیٹا ہوتا ہے)۔ حقیقی دنیا کے اطلاقات عام طور پر مثال کے مقابل زیادہ بعدی ویکٹروں کا استعمال کرتی ہیں۔ آپ اپنے خود کے ڈیٹا کو تیار کرکے نمونہ ڈیٹا کی جگہ استعمال کرسکتے ہیں۔

ڈیٹا تیاری

پہلے، داخل کرنے کیلئے ڈیٹا کی تیاری کریں۔ داخل ہونے والے ڈیٹا کا ٹائپ کالیکشن کے سکیما سے مشابہ ہونا چاہئے، ورنہ ملوس نے استثناء پھیلایا جائے گا۔

ملوس سکیما کو اندراجات کے لئے ڈیفالٹ قیمتوں کی حمایت فراہم کرتا ہے، ماسواۓ ابتدائی کلید فیلڈز کے۔ یہ یہ معنی ہے کہ ڈیٹا داخل یا اپ ڈیٹ کرنے کے دوران کچھ فیلڈ خالی چھوڑے جا سکتے ہیں۔ مزید معلومات کے لئے، "کالیکشن کی تشکیل" دیکھیں۔

ڈائنامک سکیما کو فعال کرنے کے بعد، آپ ڈیٹا کو ڈائنامک فیلڈز کو الحاق کرسکتے ہیں۔ تفصیلی معلومات کے لئے، دیکھیں ڈائنامک سکیما۔

import random
data = [
  [i for i in range(2000)],
  [str(i) for i in range(2000)],
  [i for i in range(10000, 12000)],
  [[random.random() for _ in range(2)] for _ in range(2000)],
  [], 
  None,
]

data.append([str("dy"*i) for i in range(2000)])

ملوس میں ڈیٹا داخل کرنا

کالیکشن میں ڈیٹا داخل کریں۔

partition_name کا تفصیلی طور پر مختصر کرتے ہوئے آپ اس کا اندراج کر سکتے ہیں کہ ڈیٹا کو کس پارٹیشن میں داخل کیا جائے۔

from pymilvus import Collection
collection = Collection("book")      # موجودہ کالیکشن حاصل کریں۔
mr = collection.insert(data)
پیرامیٹر تفصیل
data ملوس میں داخل کرنے والا ڈیٹا۔
partition_name (اختیاری) ڈیٹا کو داخل کرنے والے پارٹیشن کا نام۔

پہلے ہی انڈیکس شدہ کالیکشن میں انٹٹٹیز ڈالنے کے بعد، انڈیکس کی طرف خود بخود بنایا جائے گا، کیونکہ ملوس نے نئے ڈیٹا کے لئے خود انڈیکس تخلیق کرتا ہے۔ مزید معلومات کے لئے، دیکھیں کیا ڈائنامک فیلڈز کے بعد انڈیکس تخلیق کرا سکتے ہیں؟

ملوس میں ڈیٹا کو تازہ کرنا

جب ڈیٹا ملوس میں داخل کیا جاتا ہے، تو یہ سیگمنٹس میں داخل کیا جاتا ہے۔ سیگمنٹس کو بند اور انڈیکس کرنے کے لئے ایک مخصوص سائز تک پہنچنا ضروری ہوتا ہے۔ غیر مُچّل سیگمنٹس نے بہترین فورس تلاش کا استعمال کیا جائے گا۔ اس صورت میں، باقی ڈیٹا کے لئے 'flush ()' کو بلند کرنا بہترین ہوتا ہے۔ 'flush ()' کال کرنا انڈیکس کرنے والی اور میں موجود ڈیٹا کو بھیجنے کے لئے باقی سیگمنٹس کو بند کرے گا۔ اس بات کا خصوصی خیال ہے کہ یہ میتم انٹٹٹیشن سیشن کے آخر میں ہی فون کرنا چاہئے۔ اسے بہت زیادہ فریق سے کال کرنا، بعد میں صاف کرنے کی ضرورت ہوگی۔

محدودیتیں

خصوصیت زیادہ سے زیادہ حد
ویکٹر ڈائمنشن 32,768

En Upsert Entity

یوپرٹ اپ ڈیٹ ایک داخلہ اور حذف کرنے کی عمل کرنے ہے۔ ملوس ویکٹر ڈیٹا بیس کے سنسر میں، اپ ڈیٹ کرنا ایک ڈیٹا سطح کی عمل ہے۔ یہ اگر مخصوص فیلڈ کالیکشن میں موجود ہو تو موجودہ اینٹٹی کو اووررائٹ کرتا ہے، اور اگر مخصوص قیمت کالیکشن میں موجود نہ ہو تو نیو اینٹٹی ڈالتا ہے۔

نیچے دی گئی مثال میں 3,000 صفوں کے رینڈم جنریٹ کردہ ڈیٹا کو نمونہ ڈیٹا کے طور پر اپ ڈیٹ کیا گیا ہے۔ اپ ڈیٹ کرنے کا عمل مناسب نوٹ کرنا اہم ہے کیونکہ یہ عمل ڈیٹا کو ڈیلیٹ کرنے کا پیش نمائی کرتا ہے۔

ڈیٹا کی تیاری

پہلے، اپ ڈیٹ کرنے والے ڈیٹا کی تیاری کریں۔ اپ ڈیٹ ہونے والے ڈیٹا کا ٹائپ کالیکشن کے سکیما سے مشابہ ہونا چاہئے، ورنہ ملوس نے استثناء پھیلایا جائے گا۔

ملوس سکیما کو سکالر فیلڈز کے لئے ڈیفالٹ قیمتوں کی حمایت فراہم کرتا ہے، ماسواۓ ابتدائی کلید فیلڈز کے۔ یہ یہ معنی ہے کہ ڈیٹا داخل یا اپ ڈیٹ کرنے کے دوران کچھ فیلڈ خالی چھوڑے جا سکتے ہیں۔ مزید معلومات کے لئے، براہ کرم "کالیکشن کی تشکیل" دیکھیں۔

import random
nb = 3000
dim = 8
vectors = [[random.random() for _ in range(dim)] for _ in range(nb)]
data = [
    [i for i in range(nb)],
    [str(i) for i in range(nb)],
    [i for i in range(10000, 10000+nb)],
    vectors,
    [str("dy"*i) for i in range(nb)]
]

ڈیٹا اپ ڈیٹ کریں

کالیکشن میں ڈیٹا کو اپ ڈیٹ کریں۔

from pymilvus import Collection
collection = Collection("book")  # موجودہ کالیکشن حاصل کریں۔
mr = collection.upsert(data)

اینٹٹی کا حذف کریں

ملوس ابتدائی کلید کے ذریعے بولین ایکسپریشن کا استعمال کر کے انٹٹی ڈیلیٹ کرنے که رعایت کرتا ہے۔

بولیئن ایکسپریشن تیار کریں

موجودہ انٹٹیٹیز کو حذف کرنے کے لئے ایک بولیئن ایکسپریشن تیار کریں۔

ملوس صرف انٹٹٹیز کو حذف کرنے کا ایک ایسا عمل سپورٹ کرتا ہے جس میں واضح طور پر مقررہ اہم کن (primary key) کا استعمال کیا جا سکتا ہے، جو "in" آپریٹر کا استعمال کرکے حاصل ہوتا ہے۔ دیگر آپریٹر صرف سکیلر فلٹرنگ میں استعمال ہو سکتے ہیں جیسے کے کوئیری یا ویکٹر تلاش کے لئے۔

نیچے دیے گئے مثال میں ڈیٹا کو پرائمری کی قیمتیں 0 اور 1 کی مدد سے فلٹر کیا گیا ہے۔

expr = "book_id in [0,1]"

SQL کے WHERE کلوز کی طرح

اینٹٹیٹی حذف کریں

آپ نے بنائی ہوئی بولیئن ایکسپریشن استعمال کرکے انٹٹٹیز کو حذف کریں۔ ملوس انٹٹٹیز کی آئی ڈیوں کی فہرست واپس کرے گا جو حذف ہوئی تھیں۔

from pymilvus import Collection
collection = Collection("book")      # موجودہ کلیکشن حاصل کریں۔
collection.delete(expr)

ڈیٹا کمپیکٹ کریں

ملوس بطور پہلے قدرتی طریقے سے ڈیٹا کمپریشن کا سپورٹ کرتا ہے۔ آپ ملوس کو تشکیل دینے یا غیر تشکیل دینے اور خودکار کمپریشن کو فعال یا غیر فعال کرنے کے لئے ترتیب دے سکتے ہیں۔

اگر خودکار کمپریشن غیر فعال ہے تو آپ ابھی بھی ڈیٹا کو دستیابی کرانے کے لئے ہاتھ سے کمپریش کر سکتے ہیں۔

ڈیٹا کو دستیاب کمپریش کریں

کمپریشن عموماً طویل عرصہ لیتا ہے، اس لئے کمپریشن کی درخواستیں بے ترتیب طریقے سے پراسرار کی جاتی ہیں۔

from pymilvus import Collection
collection = Collection("book")      # موجودہ کلیکشن حاصل کریں۔
collection.compact()

کمپریشن کی حالت چیک کریں

آپ ہاتھ سے کمپریشن کو ٹریگر کرنے کا ردعمل میں ملنے والی کمپریشن آئی ڈی کا استعمال کرکے کمپریشن کی حالت کی جانچ پڑتال کر سکتے ہیں۔

collection.get_compaction_state()