ویکٹر مماثلت تلاش کرنا
یہ موضوع پیش کرتا ہے کہ کس طرح ملوس کا استعمال کرکے انٹٹیٹیز کی تلاش کریں۔
ملوس میں ویکٹر مماثلت تلاش، فراست بینی موازنے کا فاصلہ حاصل کرتا ہے جو سوال ویکٹر اور ان کی مطابقت میں سب سے مشابہ نتائج واپس کرتی ہے۔ آپ سکیلر یا پرائمری کی فیلڈوں کو فلٹر کرنے کے لیے بولین ایکسپریشن کو مخصوص تشہیر کر کے مختلط تلاش بھی کرسکتے ہیں۔
نیچے دیا گیا مثال مظور ہے کہ کیسے ہم ویکٹرائزڈ تفصیلات کے بنیاد پر مختص کتابوں کی تلاش کرتے ہیں جبکہ ایک 2000 رووز کے ڈیٹا سیٹ پر، جو کتاب کا شناختی نمبر (پرائمری کی)، لفظ شمار (سکیلر فیلڈ) اور کتاب کا خلاصہ (ویکٹر فیلڈ) شامل ہے۔ ملوس تعیناتی سورت میں سب سے مشابہ نتائج واپس کرتا ہے جس پر آپ نے تفصیلاتی ویکٹر اور تلاش معیارات مخصوص کی ٹھیک کر دی ہیں۔
کالیکشن لوڈ کرنا
ملوس کے اندر تمام تلاش اور سوال کے آپریشنز کو یاداشت میں انجام دیا جاتا ہے۔ ویکٹر مماثلت تلاش کرنے سے پہلے، کالیکشن کو یاداشت میں لوڈ کریں۔
from pymilvus import Collection
collection = Collection("book") # موجودہ کالیکشن حاصل کریں۔
collection.load()
تیاری سرچ پیرامیٹرز
آپ کے سرچ سینیریو کیلئے مطابقتی پیرامیٹر تیار کریں۔ نیچے دی گئی مثال میں دو اقدامات پر فاصلوں کو حساب کرنے اور IVF_FLAT انڈیکس دوارہ بنے دس قریبی کلسٹرز سے ویکٹرز واپس لانے کیلئے استعمال ہونے والے پیرامیٹرز کو وضاحت دی گئی ہے۔
search_params = {
"metric_type": "L2",
"offset": 5,
"ignore_growing": False,
"params": {"nprobe": 10}
}
پیرامیٹر | تفصیل |
---|---|
metric_type |
تلاش کے دوران ویکٹرز کے درمیان فاصلے کو ناپنے کے لیے استعمال ہونے والا میتھڈ۔ یہ انڈیکس بلڈنگ پروسس کے دوران موصول ہونے والے میتھڈ کے برابر ہونا چاہئے۔ مزید معلومات کے لیے مشابہت کی تدابیر کیمے دیکھیں۔ |
offset |
تلاش کے دوران اینٹیٹیز کی تعداد جو چھوڑنی ہو۔ اس قیمت اور search میں limit کا مجموعہ 16384 سے کم ہونا چاہئے۔ مثلاً، اگر آپ تلاش کرنا چاہتے ہیں کہ ویکٹر کی 9ویں اور 10ویں قریبی ہمسایہ کوئیر کریں تو limit کو 2 اور offset کو 8 کریں۔ |
ignore_growing |
کیا تشہیر معاش کے دوران بڑھتے ہوئے سیگمنٹس کو نظرانداز کرنا چاہئے یا نہیں۔ یہ قیمت False ہے جو ظاہر کرتا ہے کہ تلاش میں بڑھتے ہوئے سیگمنٹس شامل ہیں۔ |
params |
مخصوص انڈیکس ٹائپ کے لیے تلاش پیرامیٹرز۔ مزید معلومات کے لیے ویکٹر انڈیکس دیکھیں۔ ممکنہ اختیارات شامل ہیں: - nprobe مخصوص تجمیع اکائیوں کی تلاش کرنے کا عدد ہے۔ یہ پیرامیٹر صرف index_type کو IVF_FLAT ، IVF_SQ8 یا IVF_PQ پر ترتیب دینے کی صورت میں دستیاب ہے۔ اس قیمت کی قیمت انڈیکس بلڈنگ پروسس کے دوران موصول nlist قیمت سے کم ہونی چاہئے۔ - ef تلاش کا وسعت ظاہر کرتا ہے۔ یہ پیرامیٹر صرف index_type کو HNSW پر ترتیب دینے کی صورت میں دستیاب ہے۔ اس قیمت کی قیمت top_k اور 32768 کے درمیان ہونی چاہئے۔ - radius وہ زاویہ ظاہر کرتا ہے جہاں ویکٹرز وہیں پر ایک دوسرے سے کم مشابہت رکھنے والی مقام پر ہوتے ہیں۔ - range_filter وہ فلٹر ظاہر کرتا ہے جو ویکٹر فیلڈ کی قیمتوں کو فلٹر کرتا ہے جن کا سوال ویکٹر کے ساتھ مشابہت کسی خاص سرگرہ میں ہوتی ہے۔ |
ویکٹر تلاش کرنا
ملوس کا استعمال ویکٹر تلاش کے لئے کریں۔ ایک مخصوص پارٹیشن کے اندر تلاش کرنے کے لئے، پارٹیشن کے ناموں کی فہرست کا تفصیل دیں۔
ملوس تلاش کو لیےیے consistency level سیٹ کرنا ممکن ہے۔ اس موضوع میں دیئے گئے مثال میں consistency level "Strong" پر سیٹ کیا گیا ہے۔ آپ consistency level کو "Bounded"، "Session" یا "Eventually" پر بھی سیٹ کر سکتے ہیں۔ ملوس میں چار consistency levels کے مزید معلومات کے لئے Consistency دیکھیں۔
results = collection.search(
data=[[0.1, 0.2]],
anns_field="book_intro",
param=search_params,
limit=10,
expr=None,
output_fields=['title'],
consistency_level="Strong"
)
results[0].ids
results[0].distances
hit = results[0][0]
hit.entity.get('title')
پیرامیٹر | تفصیل |
---|---|
data |
تلاش کے لئے استعمال ہونے والے ویکٹرز۔ |
anns_field |
تلاش کرنے والے فیلڈ کا نام۔ |
param |
انڈیکس کے لئے خصوصی تلاش پیرامیٹرز۔ مزید معلومات کے لئے، ویکٹر انڈیکس دیکھیں۔ |
limit |
واپسی نتائج کی تعداد۔ یہ قیمت، اس کی مقدار کے ساتھ(جو param میں offset کا حصہ ہے)، 16384 سے کم ہونی چاہئے۔ |
expr |
خصوصیتوں کو فلٹر کرنے کے لئے بولین ایکسپریشن۔ مزید معلومات کے لئے، بولین ایکسپریشن رولز دیکھیں۔ |
output_fields (اختیاری) |
واپسی فیلڈز کے نام۔ ویکٹر فیلڈز کا موقع فی الحال میں معاون نہیں ہیں۔ |
consistency_level (اختیاری) |
تلاش کے لئے consistency level۔ |
سب سے مشابہ ویکٹروں کی پرائمری کی قیمتیں اور فاصلے چیک کریں۔
results[0].ids
results[0].distances
جب تلاش مکمل ہو جائے، ملوس میں لوڈ شدہ کلیکشن کو یادہش میں کم کرنے کے لئے ریلیز کریں۔
collection.release()
محدودیتیں
خصوصیت | زیادہ سے زیادہ حد |
---|---|
کلیکشن کا نام لمبائی | 255 حروف |
کلیکشن میں پارٹیشنوں کی تعداد | 4096 |
کلیکشن میں فیلڈوں کی تعداد | 256 |
کلیکشن میں شارڈ کی تعداد | 256 |
ویکٹر کی وسعت | 32768 |
ٹاپ کے | 16384 |
داخلہ ویکٹروں | 16384 |
مخلوط تلاش کرنا
مخلوط تلاش مسلسل ویکٹر تلاش کے ساتھ ہے جو خصوصیت فلٹرنگ کے ساتھ ہوتی ہے۔ بیان کردہ بولین ایکسپریشن کا تفصیل کر کے، تلاش کو مخصوص شرائط کے تحت محدود کیا جا سکتا ہے۔
نیچے دی گئی مثال ویکٹریز سمریز ک
ویکٹر فلٹرنگ رینجز کو ترتیب دینا
معمولی ویکٹر تلاش کے موازنے میں، ملوس میں رینج تلاش کو مخصوص تلاش رینج کے اندر مطلوب نتائج حاصل کرنے کے لئے دو نئے پیرامیٹرز، ریڈیئس
اور رینج_فلٹر
کو شامل کر کے کنٹرول کیا جاتا ہے۔
ریڈیئس
ویکٹرز کو مشابہ ماننے کیلئے کم انگل کو ٹھیک کرنے کو مخصوص کرتا ہے۔ اختیاری رینج_فلٹر
کا استعمال ریڈیئس
کے ساتھ ملا کر ویکٹر فیلڈ کی قیمتوں کو مقامی تشابہ کے بنیاد پر فلٹر کرنے کے لئے کیا جا سکتا ہے۔ دونوں ریڈیئس
اور رینج_فلٹر
پیرامیٹرز کا ٹائپ FLOAT ہوتا ہے۔ یہ دو پیرامیٹرز تشابہ اور تیزی کو موازنہ کرنے کیلئے ایفیکٹیو طریقے سے تعین کرتے ہیں۔
عام طور پر تشابہ فاصلہ ویکٹر فیلڈ کی قیمت اور کوئری ویکٹر کے درمیان فاصلے سے ناپا جاتا ہے۔ مختلف فاصلے کے اندازے کا انتخاب ریڈیئس
اور رینج_فلٹر
کی تشکیل پر ایک بڑا اثر ڈالتا ہے۔
مثال کے طور پر، L2 فاصلے کے معاملے میں، تلاش کے نتائج کو ریڈیئس
سے کم فاصلے والے ویکٹر فیلڈ کی قیمتوں پر فلٹر کرنا ضروری ہوتا ہے۔ یہ اس لئے ہے کے L2 فاصلے میں، کم فاصلے کو اظہار کرتا ہے۔ اس علم سے، اگر آپ کچھ اہم ویکٹرز کو فلٹر کرنا چاہتے ہیں، تو آپ ایک موثر رینج_فلٹر
قیمت تعین کرسکتے ہیں جو ریڈیئس
سے کم ہو۔
search_params = {
"metric_type": "L2",
"params": {
"radius": 10.0,
"range_filter" : 5.0
}
}
آئیپی فاصلے کے معاملے میں، صورتحال مختلف ہے۔ آئیپی فاصلہ میں، زیادہ فاصلہ زیادہ مشابہت کو ظاہر کرتا ہے۔ لہذا، L2 فاصلے کی مخالفت میں، آئیپی فاصلے میں ریڈیئس
اور رینج_فلٹر
کی قیمتیں معمولی ہوتی ہیں۔ دوسرے الفاظ میں، جب آئیپی فاصلے کو بنیاد پر کچھ اہم ویکٹرز کو فلٹر کرنا ہو، تو موثر رینج_فلٹر
قیمت ریڈیئس
سے زیادہ ہونی چاہئیے، اور حاصل ویکٹرز کا فاصلہ ریڈیئس
سے زیادہ لیکن رینج_فلٹر
کے برابر یا کم ہونا چاہئیے۔
search_params = {
"metric_type": "IP",
"params": {
"radius": 0.8,
"range_filter" : 1.0
}
}
رینج تلاش کرنا
فاصلہ ناپی جانے والے پیمانے کی بنیاد پر ریڈیئس
اور رینج_فلٹر
کو مخصوص کرتے ہوئے، آپ ویکٹر نتائج کا رینج تعین کر سکتے ہیں جو واپسی کے لئے درکار ہوتے ہیں۔
L2 فاصلے پر 5.0
اور 10.0
کے درمیان مشابہت کے اندر رینج تلاش کریں:
search_param = {
"data": [[0.1, 0.2]], # کوئری ویکٹر
"anns_field": "book_intro", # تلاش کے لئے فیلڈ
"param": { "metric_type": "L2", "params": { "nprobe": 10, "radius": 10.0, "range_filter" : 5.0 }, "offset": 0 },
"limit": 2,
"output_fields": ["int64", "float"] # لوٹانے والے فیلڈز
}
res = collection.search(**search_param)
آئیپی فاصلے پر 1.0
اور 0.8
کے درمیان مشابہت کے اندر رینج تلاش کریں:
search_param = {
"data": [[0.1, 0.2]], # کوئری ویکٹر
"anns_field": "book_intro", # تلاش کے لئے فیلڈ
"param": {"metric_type": "IP", "params": { "nprobe": 10, "radius": 0.8, "range_filter" : 1.0 }, "offset": 0 },
"limit": 2,
"output_fields": ["int64", "float"] # لوٹانے والے فیلڈز
}
res = collection.search(**search_param)
خلاصہ
ملوس میں، رینج تلاش مخصوص فاصلہ رینج کے اندر مماثل ویکٹر نتائج واپس کر سکتی ہے۔ یہ کارکردگی ریڈیئس
اور رینج_فلٹر
کو تلاش پیرامیٹرز میں مخصوص کر کے فعال ہوتی ہے۔ نیچے جدول مختلف فاصلے کے اندازے کے لئے ان دو پیرامیٹرز کی تشکیل کا خلاصہ پیش کرتا ہے۔
فاصلے کے ناپ کا قسم | ترتیب |
---|---|
L2 اور دیگر فاصلے | رینج_فلٹر <= فاصلہ < ریڈیئس |
آئیپی اور ہمزا دائیں | ریڈیئس < فاصلہ <= رینج_فلٹر |