Photo by Myriam Jessier on Unsplash
Similar Searching
Vector database တွေမှာသုံးတဲ့ Similar Searching ဆိုတာဘာလဲ။
တူတဲ့ Data တွေကိုရှာတယ်ဆိုတာ search engine တွေ၊ database တွေနဲ့ application တွေမှာ ပုံမှန်လုပ်နေရတဲ့အလုပ်တခုဖြစ်ပါတယ်။
ပုံမှန် Database တခုမှာဆိုရင်တော့ data တွေကိုရှာတယ်ဆိုရင် Database condition query တခုတော့အနည်းဆုံးသွင်းရပါတယ်။ ဥပမာ။ လစာ၃သိန်းအထက် အမျိုးသားဝန်ထမ်းတွေကို ရှာတဲ့အဖြစ်လိုမျိုးပေါ့။ ဒီနေရာမှာဆိုရင်တော့ လစာ၃သိန်းအထက်ရော၊ အမျိုးသားဖြစ်တယ်ဆိုတာရော တူညီတဲ့အချက်၂ချက်လိုအပ်ပါတယ်။
ဒါပေမဲ့ တောင်းဆိုတဲ့ conditions တွေက ကျယ်ပြန့်ပြီးတော့ ရှာဖွေရခက်တဲ့ data အမျိုးအစားဆိုရင်ရော။ ဥပမာ။ ဖိနပ်အနက်ပုံတွေပဲထုတ်ပေးပါ။
ဒီလိုနေရာမျိုးမှာ Database တွေအနေနဲ့ အခြေအနေတွေကို ရိုးရိုးစစ်ထုတ်ရုံတင်မကပဲ query ထဲမှာ ပါဝင်တဲ့အကြောင်းအရာကိုပါနားလည်ဖို့လိုပါတယ်။ ကျွန်တော်တို့ရဲ့ data ထဲမှာ ဖိနပ်ပုံတွေတင်မကပဲ အခြားဝတ္ထုတွေလည်းပါနိုင်ပါတယ်။ အဲ့ဖိနပ်တွေထဲကမှ ဖိနပ်အနက်ဆိုရင် ပိုစစ်ထုတ်ရပါမယ်။ တကယ်လို့သာ Nike ဖိနပ်အနက်တွေပဲတောင်းရင်တော့ ပိုစစ်ထုတ်ရနိုင်ပါတယ်။ ဒီလိုမျိုး နားလည်ဖို့ဆိုရင်တော့ data တွေကို သိုလှောင်တဲ့နေရာမှာကတည်းကိုက နားလည်ရလွယ်တဲ့ပုံစံအနေနဲ့ သိမ်းထားဖို့လိုအပ်လာပါပြီ။ ပြီးတော့ အပေါ်ကအခြေအနေမျိုးမှာဆိုရင်လည်း data က တခု၂ခုမဟုတ်ပဲ သန်းနဲ့ချီတဲ့ပမာဏတခုကို ကိုင်တွယ်ရတဲ့အခြေအနေဆိုတာကိုလည်း ထည့်စဉ်းစားဖို့လိုပါမယ်။
Data ထဲမှာပါတဲ့အဓိပ္ပါယ်တွေကိုနားလည်ဖို့အတွက်ဆိုရင် machine learning နယ်ပယ်မှာတော့ data တွေကို ဂဏန်းတွေအနေနဲ့ ပြောင်းလဲပေးရပါတယ်။ ကွန်ပျူတာသည် "က" ဆိုတဲ့ စကားလုံးကို "က" ဖြစ်ကြောင်းမသိပါဘူး။ "က" စကားလုံးကို ကိုယ်စားပြုတဲ့ binary number အနေနဲ့ပဲ သိုလှောင်ထားတာဖြစ်ပါတယ်။ အဲ့ဒီ binary number အတွဲကြီးသည်လည်း "က" ဖြစ်ကြောင်း ကွန်ပျူတာကနားမလည်ပါဘူး။ အသုံးပြုတွေကသာ ဒီစကားလုံးက "က"ဖြစ်ကြောင်းနားလည်တာပါ။
ကွန်ပျူတာကို တူညီကြောင်းတွက်ချက်ဖို့အတွက်ဆိုရင် စကားလုံးတွေ၊ ဓာတ်ပုံတွေကို vector embedding အဖြစ်ပြောင်းလဲရပါတယ်။ ရရှိလာတဲ့ vector တွေကို vector space ထဲမှာ တခုနဲ့တခုဘယ်လောက်အကွာအဝေးနီးစပ်လဲဆိုတာကို တွက်ပြီးတော့ နီးစပ်တဲ့ vector တွေသည် similar ဖြစ်တဲ့ data တွေဖြစ်ကြောင်းပြန်သိနိုင်ပါတယ်။
ဒါဆိုရင် စာသားတွေ၊ ပုံတွေကို vector space ထဲမှာနေရာချဖို့ embedding တွက်ထုတ်ပေးတဲ့ program တွေသည် ဘယ်လောက်တိတိကျကျတွက်ထုတ်ပေးနိုင်လဲဆိုတာ အရေးပါတယ်။ လက်ရှိမှာတော့ Word2Vec, Universal Sentence Encoder(USE), GLoVE လို model တွေသည် စာသားတန်ဖိုးတွေကို vector representation (embedding) တွေအနေနဲ့ ပြောင်းလဲပေးဖို့သုံးပါတယ်။ VGG, Inception လို model တွေကိုတော့ ပုံတွေကနေ embedding ပြောင်းဖို့အသုံးများပါတယ်။ အတိုချုံးရရင်တော့ ပုံတခု၊ စာသားတခုကို vector တန်ဖိုးတွေအနေနှင့် ပြောင်းလဲပေးတဲ့ Machine learning program တွေလိုအပ်ပါတယ်။
ရလာတဲ့ vector တန်ဖိုးတွေသည် vector space ပေါ်မှာ တခုနှင့်တခု ဘယ်လောက်နီးစပ်လဲဆိုတာကို မှန်မှန်ကန်ကန်နှင့် မြန်မြန်ဆန်ဆန်တွက်ထုတ်ပေးနိုင်မယ့် program တွေလည်း လိုအပ်ပါတယ်။ ဒီ program တွေသည် vector တခုနှင့်တခုနီးစပ်ကြောင်း တွက်ချက်မလဲဆိုတဲ့ အတိုင်းအတာ metrics တွေလည်း စဉ်းစားရပါမယ်။
Machine learning မှာ အသုံးအများဆုံး distance metrics တွေသည် Euclidean, Manhattan, Cosine, နှင့် Chebyshev metrics တွေဖြစ်ပါတယ်။ ဒါတွေက Geometry တွေရဲ့ distance တွက်ထုတ်တဲ့ အခြေခံဖော်မြူလာတွေဖြစ်ပါတယ်။ ဘယ် distance metrics ကိုသုံးမလဲဆိုတာကတော့ ကိုယ့်ရဲ့အသုံးပြုမယ့်နေရာပေါ်မူတည်ပါတယ်။
အပေါ်က၂ခုကိုအနှစ်ပြန်ချုပ်ရရင် ကျွန်တော်တို့မှာ ကိုယ့်ရဲ့ Data ကိုကိုယ်စားပြုတဲ့ vector embedding တွေလည်းရှိလာပါပြီ။ အဲ့ vector embedding တခုနဲ့တခုကြား distance တွေကိုတိုင်းတာမယ့် Metrics တွေလည်း ရှိလာပါပြီ။ ဒါဆိုရင် similar search စလုပ်လို့ရပါပြီ။
ဒီနေရာမှာ K Nearest Neighbors algorithm ဝင်လာပါတယ်။ KNN သည် vector embedding တွေတခုနဲ့တခုကြားမှာ ဘယ်လောက်နီးစပ်ဆိုတာကိုတွက်ပြီးတော့ အနီးဆုံး vector တွေကိုပြန်ထုတ်ပေးပါတယ်။ K သည် အနီးစပ်ဆုံးvector ဘယ်နှစ်ခုလိုချင်လဲဆိုတဲ့ hyperparameter ကို ကိုယ်စားပြုပါတယ်။ KNN ရဲ့ အားနည်းချက်သည် အနီးစပ်ဆုံး vector ကိုရှာဖို့အတွက် Database ထဲမှာရှိသမျှ vector တွေကိုလိုက်တွက်ပါတယ်။ ဒီတော့ data ပမာဏများလာလေလေ၊ calculation ပိုများလေလေဖြစ်တဲ့အတွက် ပိုကြာပြီးတော့ လျှပ်စစ်ပမာဏပိုကုန်ပါတယ်။
ဒီအတွက်ကြောင့် Approximate Nearest Neighbors algorithm ကိုပြောင်းသုံးကြပါတယ်။ ANN မှာလည်း ပုံစံကွဲတွေအများကြီးရှိပါသေးတယ်။ ANN သည် နီးစပ်တဲ့ vector embedding တွေကိုအတိအကျလိုက်ရှာမယ့်အစား နီးစပ်တယ်ဆိုတဲ့အခြေအနေမှာရှိတဲ့ vector embedding တွေကို ပြန်ထုတ်ပေးပါတယ်။ ဒီအတွက်ကြောင့် ANN ကိုအတိအကျနီးစပ်တဲ့ vector embedding တွေရှာတဲ့နေရာထက် နီးစပ်တဲ့ vector embedding တွေကို မြန်မြန်ဆန်ဆန်ရှာဖို့လိုအပ်တဲ့နေရာတွေမှာ သုံးပါတယ်။ machine learning မှာတော့ဒါကို accuracy နဲ့ efficiency ကို tradeoff လုပ်တယ်လို့ခေါ်ပါတယ်။
Similar Searching ကို ဓာတ်ပုံနဲ့စာသား ပုံစံတူတာတွေရှာတာ၊ ကွဲထွက်နေတဲ့ data တွေကိုရှာတာ၊ recommendation system တွေမှာ အသုံးများပါတယ်။