ویکٹر مماثلت تلاش
یہ موضوع ملوس میں انٹٹی سرچ کرنے کا طریقہ بیان کرتا ہے۔
ملوس میں ویکٹر مماثلت تلاش، سوال ویکٹر اور کلیکشن میں ویکٹروں کے درمیان فاصلے کا حساب لگاتا ہے اور سب سے مماثل نتائج واپس کرتا ہے۔ آپ بوسے کے فیلڈ یا پرائمری کی فیلڈ کو فلٹر کرنے کے لئے ایک بولین ایکسپریشن کا تعین بھی کرسکتے ہیں۔
نیچے دی گئی مثال میں 2000 رو، بک آئی ڈیز (پرائمری کی)، ورڈ فریکوئنسی (سکیلر فیلڈ)، اور بک کی تفصیلات (ویکٹر فیلڈ) سے مشتمل ڈیٹا سیٹ پر ویکٹر مماثلت تلاش کرنے کا طریقہ دکھایا گیا ہے۔ یہ وہ وضاحت ہے جو ویکٹرائزڈ تفصیلات کے بنا پر مخصوص کتابوں کی تلاش سناریو کو نمائش دیتی ہے۔ ملوس آپ کے تعینات کے مطابق کوئری ویکٹر اور تلاش پیرامیٹر کی بنیاد پر سب سے مماثل نتائج واپس کرے گا۔
کلیکشن لوڈ کریں
ویکٹر مماثلت تلاش کرنے سے پہلے ملوس تمام تلاش اور کوئری کارروائیاں میموری میں اجراء کرتا ہے۔ براہ کرم ویکٹر مماثلت تلاش کرنے سے پہلے کلیکشن کو میموری میں لوڈ کریں۔
err := milvusClient.LoadCollection(
context.Background(), // ctx
"book", // CollectionName
false // async
)
if err != nil {
log.Fatal("failed to load collection:", err.Error())
}
تیاری تلاش پیرامیٹرز
اپنے تلاش سینریو کے لئے مناسب پیرامیٹرز تیار کریں۔
ذیل مثال میں فاصلے کا حساب لگانے اور IIV_FLAT انڈیکس کے دس قریبی کلاسٹرز سے ویکٹرز حاصل کرنے کے لئے یوروپیلیڈین فاصلے کے استعمال کو دیکھایا گیا ہے۔
sp, _ := entity.NewIndexIvfFlatSearchParam( // NewIndex*SearchParam func
10, // searchParam
)
opt := client.SearchQueryOptionFunc(func(option *client.SearchQueryOption) {
option.Limit = 3
option.Offset = 0
option.ConsistencyLevel = entity.ClStrong
option.IgnoreGrowing = false
})
پیرامیٹر | تفصیل | اختیارات |
---|---|---|
NewIndex*SearchParam func |
مختلف انڈیکس قسموں کے مطابق entity.SearchParam بنانے والا فنکشن۔ |
مثلاً برائے فلاٹ ویکٹرز: - NewIndexFlatSearchParam() (FLAT) - NewIndexIvfFlatSearchParam(nprobe int) (IVF_FLAT) - NewIndexIvfSQ8SearchParam(nprobe int) (IVF_SQ8) - NewIndexIvfPQSearchParam(nprobe int) (RNSG) - NewIndexHNSWSearchParam(ef int) (HNSW) برائے بائنری ویکٹرز: - NewIndexBinFlatSearchParam(nprobe int) (BIN_FLAT) - NewIndexBinIvfFlatSearchParam(nprobe int) (BIN_IVF_FLAT) |
sp |
پچھلے فنکشن سے واپسی کارتی انڈیکس مخصوص تلاش پیرامیٹرز۔ | تفصیلات کے لئے ویکٹر انڈیکس دیکھیں۔ |
opt |
ANN تلاش کے لئے اختیارات۔ | - Limit : واپس کرنے کے انٹٹیز کی تعداد کا تعین کریں۔ - Offset : تلاش کے دوران چھوڑنے کی انٹٹیز کی تعداد کا تعین کریں۔ یہ پیرامیٹر اور الحاق کا جمع 16384 سے کم ہونا چاہئے۔ مثال کے طور پر، اگر آپ ویکٹر کے 9ویں اور 10ویں قریبی پڑوسیوں کو کوئری کرنا چاہتے ہیں، تو لمت کو 2 اور آفسیٹ کو 8 کریں۔ - ConsistencyLevel : تلاش کے دوران لاگو کرنے کے لئے یکسانتا سطح کا تعین کریں۔ - Ignore Growing : شباہ پیدا ہونے والے سیگمنٹس کو تلاش میں نظرانداز کرنے کے لئے بتاتا ہے۔ اصل قیمت False ہے، جو ظاہر کرتی ہے کہ تلاش میں شباہ پیدا ہو رہے ہیں۔ |
ویکٹر تلاش کریں
ملوس کا استعمال کرتے ہوئے ویکٹر تلاش کریں۔ کسی خاص پارٹیشن میں تلاش کرنے کے لئے، براہ کرم پارٹیشن کے نام کی فہرست مختص کریں۔
ملوس کو تلاش کے لئے ایک مستقل سطح تعینات کرنے کی حمایت ہوتی ہے۔ اس موضوع میں دیئے گئے مثال میں، مستقل سطح کو مضبوط
پر تعین کیا گیا ہے۔ آپ چاروں مستقل سطحوں کو محدود
، سیشن
، یا آخر میں
پر تعین کرسکتے ہیں۔ ملوس میں چار مستقل سطحوں کی تفصیل کے لئے، مستقل سطحوں دیکھیں۔
searchResult, err := milvusClient.Search(
context.Background(), // ctx
"book", // CollectionName
[]string{}, // partitionNames
"", // expr
[]string{"book_id"}, // outputFields
[]entity.Vector{entity.FloatVector([]float32{0.1, 0.2})}, // vectors
"book_intro", // vectorField
entity.L2, // metricType
10, // topK
sp, // sp
opt,
)
if err != nil {
log.Fatal("Failed to search collection:", err.Error())
}
پیرامیٹر | تفصیل | اختیارات |
---|---|---|
ctx |
API کال کا عمل کو کنٹرول کرنے کے لئے استعمال کیا جانے والا سیاق و سباق | N/A |
CollectionName |
لوڈ کرنے والی کالکشن کا نام | N/A |
partitionNames |
لوڈ کرنے والے پارٹیشن کے ناموں کی فہرست۔ اگر خالی ہو، تمام پارٹیشن کو تلاش کریں | N/A |
expr |
خصوصیتوں کو فلٹر کرنے کے لئے بولین اظہار | معلومات کی تفصیل کے لئے بولین اظہار کے قواعد دیکھیں |
output_fields |
واپسی کرنے والے فیلڈز کے نام | N/A |
vectors |
تلاش کرنے والے ویکٹرز | N/A |
vectorField |
تلاش کرنے والے فیلڈ کا نام | N/A |
metricType |
تلاش کے لئے استعمال ہونے والی میٹرک قسم | یہ پیرامیٹر انڈیکس تخلیق کرنے والی میٹرک قسم کے برابر ہونا چاہئے |
topK |
واپسی کی جانے والی نتائج کی تعداد۔ اس قیمت اور opts میں offset کی مجموعی قیمت 16384 سے کم ہونی چاہئے |
N/A |
sp |
انڈیکس کے لئے entity.SearchParam کا ڈیٹا |
N/A |
سب سے مشابہ ویکٹرز کی پہچان اور فاصلوں کی پرائمری کی قیمتیں چیک کریں۔
fmt.Printf("%#v\n", searchResult)
for _, sr := range searchResult {
fmt.Println(sr.IDs)
fmt.Println(sr.Scores)
}
تلاش مکمل ہونے کے بعد، ملوس میں لوڈ کردہ کالکشن کو یادگاری مصرف کو کم کرنے کے لیے ریلیز کریں۔
err := milvusClient.ReleaseCollection(
context.Background(), // ctx
"book", // CollectionName
)
if err != nil {
log.Fatal("Failed to release collection:", err.Error())
}
محدودیات
مواصلت | زیادہ سے زیادہ حد |
---|---|
کالکشن کے نام کی لمبائی | 255 حروف |
کالکشن میں پارٹیشن کی تعداد | 4,096 |
کالکشن میں فیلڈز کی تعداد | 256 |
کالکشن میں شارڈز کی تعداد | 256 |
ویکٹر کی بعد | 32,768 |
اوپ کے لۓ | 16,384 |
مواصلت کے ليے نشان مند داخلے ویکٹرز کی تعداد | 16,384 |
مخلوط تلاش کرنا
مختلط تلاش بنیادی طور پر ایک ویکٹر تلاش ہے جس میں خاص خصوصیات فلٹر کرنے کا وصف شامل ہے۔ عینی فیلڈ یا پراہمری کلید فیلڈز کو فلٹر کرنے کے لئے بولین اظہار کا تعین کرتے ہوئے، آپ مخصوص شرائط پر بنیاد پر تلاش محدود کر سکتے ہیں۔
نیچے دی گئی مثال میں، مختلط تلاش کو عام ویکٹر تلاش کی بنیاد پر کیسے انجام دیا جاتا ہے دکھایا گیا ہے۔ مان لیں کہ آپ ویکٹرائز کردہ کتابوں کی معرفی پر کیسی کتب تلاش کرنا چاہتے ہیں، لیکن صرف ایک مخصوص لفظ کی تعداد کے رینج کے اندر کیتابوں کو حاصل کرنا چاہتے ہیں۔ پھر آپ تلاش پیرامیٹرز میں بولین اظہار کی تعینات کرکے word_count
فیلڈ کو فلٹر کر سکتے ہیں۔ ملوس صرف ایسے ویکٹرز کی تلاش کرے گا جو اظہار کو مطمئن کرنے والے انٹیٹیز کے اندر ہیں۔
sp, _ := entity.NewIndexFlatSearchParam(
10,
)
opt := client.SearchQueryOptionFunc(func(option *client.SearchQueryOption) {
option.Limit = 3
option.Offset = 0
option.ConsistencyLevel = entity.ClStrong
option.IgnoreGrowing = false
})
searchResult, err := milvusClient.Search(
context.Background(),
"book",
[]string{},
"word_count <= 11000",
[]string{"book_id"},
[]entity.Vector{entity.FloatVector([]float32{0.1, 0.2})},
"book_intro",
entity.L2,
2,
sp,
opt,
)
if err != nil {
log.Fatal("Failed to search collection:", err.Error())
}
واپسی نتائج چیک کریں۔
fmt.Printf("%#v\n", searchResult)
for _, sr := range searchResult {
fmt.Println(sr.IDs)
fmt.Println(sr.Scores)
}