paint-brush
انقلابی مونسٹر ہنٹس: AI سے بہتر ڈی اینڈ ڈی مقابلےکی طرف سے@superlinked
نئی تاریخ

انقلابی مونسٹر ہنٹس: AI سے بہتر ڈی اینڈ ڈی مقابلے

کی طرف سے Superlinked17m2025/01/31
Read on Terminal Reader

بہت لمبا؛ پڑھنے کے لئے

مضمون دو کلیدی طریقوں کا موازنہ کرتے ہوئے کثیر الصفات ویکٹر کی تلاش کو تلاش کرتا ہے۔ سادہ طریقہ میں ہر وصف کے ویکٹر کو الگ سے ذخیرہ کرنا، انفرادی تلاش کرنا، اور پھر پوسٹ پروسیسنگ کے ذریعے نتائج کو ضم کرنا شامل ہے۔ اس کے برعکس، Superlinked اپروچ تمام ویکٹر ویکٹرز کو ایک واحد ویکٹر اسٹور میں یکجا کرتا ہے، جس سے ایک متحد تلاش کی اجازت ملتی ہے جہاں انتسابات کو استفسار کے وقت متحرک طور پر وزن کیا جا سکتا ہے — پوسٹ پروسیسنگ کی ضرورت کو ختم کرتے ہوئے۔ Dungeons & Dragons کی مثال اس طریقہ کار کے فوائد کی وضاحت کرتی ہے، یہ بتاتی ہے کہ یہ کس طرح مؤثر طریقے سے ایسے راکشسوں کو تلاش کرتا ہے جو مخصوص معیار، جیسے کہ ظاہری شکل، رہائش اور طرز عمل سے میل کھاتا ہے۔ انتساب کے وزن کو ایڈجسٹ کرکے، یہ طریقہ روایتی طریقوں سے زیادہ درست اور لچکدار تلاش کے نتائج فراہم کرتا ہے۔
featured image - انقلابی مونسٹر ہنٹس: AI سے بہتر ڈی اینڈ ڈی مقابلے
Superlinked HackerNoon profile picture
0-item
1-item

تاریکی کی AI سے چلنے والی فوج

یہ کھیل کی رات ہے، آپ کے دوست گیمز کی میز کے ارد گرد بیٹھے ہیں، یہ دیکھنے کے لیے انتظار کر رہے ہیں کہ وہ کون سا Dungeons & Dragons (D&D) کردار بنیں گے اور جس تلاش میں وہ شروع ہوں گے۔ آج رات، آپ Dungeon Master (کہانی سنانے والے اور گائیڈ) ہیں، اپنے کھلاڑیوں کو للکارنے اور ان کا دل موہ لینے کے لیے سنسنی خیز مقابلوں کے ماہر ہیں۔ آپ کے قابل اعتماد ڈی اینڈ ڈی مونسٹر مینوئل میں ہزاروں مخلوقات شامل ہیں۔ بے شمار اختیارات میں سے ہر صورت حال کے لیے کامل عفریت کی تلاش بہت زیادہ ہو سکتی ہے۔ مثالی دشمن کو اس لمحے کی ترتیب، مشکل اور بیانیہ سے مطابقت رکھنے کی ضرورت ہے۔


کیا ہوگا اگر ہم ایک ایسا ٹول بنا سکیں جو فوری طور پر ہر منظر نامے کے لیے سب سے زیادہ موزوں عفریت کو تلاش کرے۔ ایک ٹول جو بیک وقت متعدد عوامل پر غور کرتا ہے ، اس بات کو یقینی بناتا ہے کہ ہر تصادم ممکن حد تک عمیق اور دلچسپ ہے؟


آئیے اپنی ایک جستجو کا آغاز کریں: ملٹی ایٹریبیوٹ ویکٹر سرچ کی طاقت کا استعمال کرتے ہوئے، حتمی مونسٹر فائنڈنگ سسٹم بنائیں!

ویکٹر کی تلاش سے مخلوق پیدا کرنا، ایسا کیوں؟

ویکٹر کی تلاش معلومات کی بازیافت میں ایک انقلاب کی نمائندگی کرتی ہے۔ ویکٹر ایمبیڈنگ - سیاق و سباق اور معنوی معنی کو مدنظر رکھتے ہوئے - ویکٹر کی تلاش کو زیادہ متعلقہ اور درست نتائج دینے، نہ صرف ساختہ بلکہ غیر ساختہ ڈیٹا اور متعدد زبانوں، اور پیمانے کو ہینڈل کرنے کا اختیار دیتا ہے۔ لیکن حقیقی دنیا کی ایپلی کیشنز میں اعلیٰ معیار کے جوابات پیدا کرنے کے لیے، ہمیں اکثر اپنے ڈیٹا آبجیکٹ کی مخصوص خصوصیات کے لیے مختلف وزن تفویض کرنے کی ضرورت ہوتی ہے۔

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

  1. سادہ نقطہ نظر - ہر ویکٹر ویکٹر کو الگ الگ ویکٹر اسٹورز میں اسٹور کریں (ایک فی وصف)، ہر ایک وصف کے لیے الگ تلاش کریں، تلاش کے نتائج کو یکجا کریں، اور بعد از عمل (مثلاً وزن) حسب ضرورت۔
  2. سپر لنکڈ اپروچ - تمام انتساب ویکٹرز کو ایک ہی ویکٹر اسٹور میں جوڑیں اور اسٹور کریں (سپر لنکڈ کی بلٹ ان فنکشنلٹی کا استعمال کرتے ہوئے)، جو ہمیں صرف ایک بار تلاش کرنے کی اجازت دیتا ہے، اٹینڈنٹ کی کارکردگی کے فوائد کے ساتھ۔ سپر لنکڈ کی spaces ہمیں استفسار کے وقت ہر ایک وصف کا وزن کرنے دیتی ہیں تاکہ مزید متعلقہ نتائج سامنے آئیں، بغیر کسی پوسٹ پروسیسنگ کے۔

ملٹی انتساب ویکٹر کی تلاش کے دو نقطہ نظر

ذیل میں، ہم ملٹی ایٹریبیوٹ ویکٹر سرچ ٹول کو لاگو کرنے کے لیے ان دو طریقوں کا استعمال کریں گے - ایک Dungeons and Dragons Monster Finder! ہمارے سادہ نفاذ، خاص طور پر دوسرا، یہ واضح کرے گا کہ کس طرح زیادہ طاقتور اور لچکدار تلاش کے نظام بنائے جائیں، جو پیچیدہ، کثیر جہتی سوالات کو آسانی کے ساتھ ہینڈل کر سکتے ہیں، چاہے آپ کے استعمال کا معاملہ کچھ بھی ہو۔

اگر آپ ویکٹر مماثلت کی تلاش میں نئے ہیں، تو پریشان نہ ہوں! ہم نے آپ کا احاطہ کیا ہے - ہمارے بلڈنگ بلاکس کے مضامین دیکھیں۔

ٹھیک ہے، چلو عفریت کا شکار کرتے ہیں!

ڈیٹا سیٹ

سب سے پہلے، ہم ایک بڑے لینگویج ماڈل (LLM) کا اشارہ دے کر، راکشسوں کا ایک چھوٹا مصنوعی ڈیٹا سیٹ تیار کریں گے:


 Generate two JSON lists: 'monsters' and 'queries'. 1. 'monsters' list: Create 20 unique monsters with the following properties: - name: A distinctive name - look: Brief description of appearance (2-3 sentences) - habitat: Where the monster lives (2-3 sentences) - behavior: How the monster acts (2-3 sentences) Ensure some monsters share similar features while remaining distinct. 2. 'queries' list: Create 5 queries to search for monsters: - Each query should be in the format: {look: "...", habitat: "...", behavior: "..."} - Use simple, brief descriptions (1-3 words per field) - Make queries somewhat general to match multiple monsters Output format: { "monsters": [ {"name": "...", "look": "...", "habitat": "...", "behavior": "..."}, ... ], "queries": [ {"look": "...", "habitat": "...", "behavior": "..."}, ... ] }


آئیے ہمارے LLM کے تیار کردہ ڈیٹاسیٹ کے نمونے پر ایک نظر ڈالیں۔ نوٹ: LLM جنریشن غیر فیصلہ کن ہے، اس لیے آپ کے نتائج مختلف ہو سکتے ہیں۔

ہمارے پہلے پانچ راکشس یہ ہیں:

#

نام

دیکھو

مسکن

سلوک

0

Luminoth

چمکتے پنکھوں اور اینٹینا کے ساتھ کیڑے جیسی مخلوق

گھنے جنگلات اور جنگلات جن میں بائولومینسنٹ نباتات ہیں۔

بات چیت کرنے اور شکار کو اپنی طرف متوجہ کرنے کے لیے آرام دہ روشنی کے نمونوں کا اخراج کرتا ہے۔

1

ایکوا Wraith

بہتے پانی سے بنی پارباسی انسانی شکل

دریا، جھیلیں اور ساحلی علاقے

آبی ذخائر کے ساتھ گھل مل جانے کے لیے شکل بدلتی ہے اور کرنٹ کو کنٹرول کرتی ہے۔

2

اسٹون ہارٹ گولم

بڑے پیمانے پر ہیومنائڈ جو آپس میں جڑی ہوئی چٹان کی شکلوں پر مشتمل ہے۔

چٹانی پہاڑ اور قدیم کھنڈرات

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

3

سرگوشی کا سایہ

چمکتی آنکھوں کے ساتھ سایہ دار، بے ساختہ وجود

تاریک جنگلات اور لاوارث عمارتیں۔

خوف پر کھانا کھلاتا ہے اور پریشان کن سچائیوں کو وسوسہ دیتا ہے۔

4

زیفیر ڈانسر

چمکدار پنکھوں کے ساتھ خوبصورت ایویئن مخلوق

اونچی پہاڑی چوٹیاں اور ہوا سے بہنے والے میدان

ساتھیوں کو اپنی طرف متوجہ کرنے کے لیے مسحور کن فضائی ڈسپلے بناتا ہے۔



...اور ہمارے پیدا کردہ سوالات:


دیکھو

مسکن

رویہ

0

چمکنے والا

تاریک جگہیں۔

ہلکی ہیرا پھیری

1

عنصری

انتہائی ماحول

ماحولیاتی کنٹرول

2

شکل بدلنا

متنوع مناظر

وہم تخلیق

3

کرسٹل

معدنیات سے بھرپور علاقے

توانائی جذب

4

ایتھریل

ماحولیاتی

دماغ پر اثر انداز ہونا


اصل ڈیٹا سیٹ اور استفسار کی مثالیں یہاں دیکھیں۔

بازیافت

آئیے پیرامیٹرز مرتب کریں جو ہم اپنے دونوں طریقوں میں استعمال کریں گے - بولی اور سپر لنکڈ - نیچے۔

ہم اپنے ویکٹر ایمبیڈنگ اس کے ساتھ تیار کرتے ہیں:

 sentence-transformers/all-mpnet-base-v2.

سادگی کی خاطر، ہم اپنے آؤٹ پٹ کو ٹاپ 3 میچوں تک محدود کر دیں گے۔ (مکمل کوڈ کے لیے، بشمول ضروری درآمدات اور مددگار افعال، نوٹ بک دیکھیں۔)

 LIMIT = 3 MODEL_NAME = "sentence-transformers/all-mpnet-base-v2"

اب، آئیے اپنی کثیر الصفات عفریت کی تلاش جاری رکھیں! سب سے پہلے، ہم بولی نقطہ نظر کی کوشش کریں گے.

بولی نقطہ نظر

اپنے سادہ انداز میں، ہم صفات کو آزادانہ طور پر سرایت کرتے ہیں اور انہیں مختلف اشاریوں میں محفوظ کرتے ہیں۔ استفسار کے وقت، ہم تمام اشاریہ جات پر متعدد kNN-تلاشیں چلاتے ہیں، اور پھر اپنے تمام جزوی نتائج کو یکجا کرتے ہیں۔

ہم کلاس کی وضاحت کرتے ہوئے شروع کرتے ہیں۔

 NaiveRetriever

ہمارے all-mpnet-base-v2 -generated embeddings کا استعمال کرتے ہوئے، ہمارے ڈیٹاسیٹ پر مماثلت پر مبنی تلاش کرنے کے لیے۔

 class NaiveRetriever: def __init__(self, data: pd.DataFrame): self.model = SentenceTransformer(MODEL_NAME) self.data = data.copy() self.ids = self.data.index.to_list() self.knns = {} for key in self.data: embeddings = self.model.encode(self.data[key].values) knn = NearestNeighbors(metric="cosine").fit(embeddings) self.knns[key] = knn def search_key(self, key: str, value: str, limit: int = LIMIT) -> pd.DataFrame: embedding = self.model.encode(value) knn = self.knns[key] distances, indices = knn.kneighbors( [embedding], n_neighbors=limit, return_distance=True ) ids = [self.ids[i] for i in indices[0]] similarities = (1 - distances).flatten() # by definition: # cosine distance = 1 - cosine similarity result = pd.DataFrame( {"id": ids, f"score_{key}": similarities, key: self.data[key][ids]} ) result.set_index("id", inplace=True) return result def search(self, query: dict, limit: int = LIMIT) -> pd.DataFrame: results = [] for key, value in query.items(): if key not in self.knns: continue result_key = self.search_key(key, value, limit=limit) result_key.drop(columns=[key], inplace=True) results.append(result_key) merged_results = pd.concat(results, axis=1) merged_results["score"] = merged_results.mean(axis=1, skipna=False) merged_results.sort_values("score", ascending=False, inplace=True) return merged_results naive_retriever = NaiveRetriever(df.set_index("name"))


آئیے اوپر ہماری تیار کردہ فہرست سے پہلا سوال استعمال کریں، اور اپنے naive_retriever استعمال کرتے ہوئے راکشسوں کو تلاش کریں:

 query = { 'look': 'glowing', 'habitat': 'dark places', 'behavior': 'light manipulation' } naive_retriever.search(query)

ہماری

 naive_retriever

ہر ایک خصوصیت کے لیے درج ذیل تلاش کے نتائج لوٹاتا ہے:

آئی ڈی

سکور_لکھ

دیکھو

سرگوشی کا سایہ

0.503578

چمکتی آنکھوں کے ساتھ سایہ دار، بے ساختہ وجود

ریت کا طوفان جن

0.407344

چمکتی ہوئی علامتوں کے ساتھ ریت کا گھومتا ہوا بھنور

Luminoth

0.378619

چمکتے پنکھوں اور اینٹینا کے ساتھ کیڑے جیسی مخلوق


بہت اچھے! ہمارے لوٹے ہوئے عفریت کے نتائج متعلقہ ہیں - ان سب میں کچھ "چمکنے والی" خصوصیت ہے۔

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

آئی ڈی

سکور_رہائش

مسکن

سرگوشی کا سایہ

0.609567

تاریک جنگلات اور لاوارث عمارتیں۔

فنگل نیٹ ورک

0.438856

زیر زمین غاریں اور گیلے جنگلات

Thornvine Elemental

0.423421

زیادہ بڑھے ہوئے کھنڈرات اور گھنے جنگل


آئی ڈی

سکور_رویہ

سلوک

زندہ گریفٹی

0.385741

ماحول کے ساتھ گھل مل جانے کے لیے شکل بدلتی ہے اور روغن جذب کرتی ہے۔

کرسٹل ونگ ڈریک

0.385211

قیمتی جواہرات کو ذخیرہ کرتا ہے اور روشنی کو طاقتور بیم میں بدل سکتا ہے۔

Luminoth

0.345566

بات چیت کرنے اور شکار کو اپنی طرف متوجہ کرنے کے لیے آرام دہ روشنی کے نمونوں کا اخراج کرتا ہے۔


تمام بازیافت شدہ راکشس مطلوبہ صفات کے مالک ہیں۔ پہلی نظر میں، سادہ تلاش کے نتائج امید افزا لگ سکتے ہیں۔ لیکن ہمیں ایسے راکشسوں کو تلاش کرنے کی ضرورت ہے جو بیک وقت تینوں صفات کے حامل ہوں۔ آئیے اپنے نتائج کو ضم کرتے ہیں یہ دیکھنے کے لیے کہ ہمارے راکشس اس مقصد کو حاصل کرنے میں کتنی اچھی کارکردگی کا مظاہرہ کرتے ہیں:

آئی ڈی

سکور_لکھ

سکور_رہائش

سکور_رویہ

سرگوشی کا سایہ

0.503578

0.609567


ریت کا طوفان جن

0.407344



Luminoth

0.378619


0.345566

فنگل نیٹ ورک


0.438856


Thornvine Elemental


0.423421


زندہ گریفٹی



0.385741

کرسٹل ونگ ڈریک



0.385211


اور یہاں، بولی اپروچ کی حدیں واضح ہو جاتی ہیں۔ آئیے اندازہ لگاتے ہیں:

  1. وصف کے لحاظ سے مطابقت:
    • look : تین راکشسوں کو بازیافت کیا گیا تھا (فسپرنگ شیڈ، سینڈ اسٹورم جین، اور لومینوت)۔
    • habitat : look نتائج سے صرف ایک عفریت متعلقہ تھا (سرگوشی کا سایہ)۔
    • behavior : look نتائج سے صرف ایک عفریت متعلقہ تھا (Luminoth)، لیکن یہ habitat کے لیے متعلقہ سے مختلف ہے۔
  2. مجموعی مطابقت:
    • بیک وقت تینوں صفات کے لیے کوئی ایک راکشس بازیافت نہیں کیا گیا۔
    • نتائج بکھرے ہوئے ہیں: مختلف راکشس مختلف صفات کے لیے متعلقہ ہیں۔

مختصراً، بولی تلاش کا طریقہ ایسے راکشسوں کو تلاش کرنے میں ناکام رہتا ہے جو ایک ساتھ تمام معیارات کو پورا کرتے ہیں۔ ہو سکتا ہے کہ ہم ہر ایک وصف کے لیے مزید راکشسوں کو فعال طور پر بازیافت کر کے اس مسئلے کو حل کر سکیں؟ آئیے اسے 3 کے بجائے 6 راکشس فی انتساب کے ساتھ آزماتے ہیں۔ آئیے ایک نظر ڈالتے ہیں کہ یہ نقطہ نظر کیا پیدا کرتا ہے:

آئی ڈی

سکور_لکھ

سکور_رہائش

سکور_رویہ

سرگوشی کا سایہ

0.503578

0.609567


ریت کا طوفان جن

0.407344

0.365061


Luminoth

0.378619


0.345566

نیبولا جیلی فش

0.36627


0.259969

ڈریم ویور آکٹوپس

0.315679



کوانٹم فائر فلائی

0.288578



فنگل نیٹ ورک


0.438856


Thornvine Elemental


0.423421


مسٹ فینٹم


0.366816

0.236649

اسٹون ہارٹ گولم


0.342287


زندہ گریفٹی



0.385741

کرسٹل ونگ ڈریک



0.385211

ایکوا Wraith



0.283581


اب ہم نے 13 راکشسوں کو بازیافت کیا ہے (ہمارے چھوٹے ڈیٹاسیٹ کے آدھے سے زیادہ!)، اور اب بھی ایک ہی مسئلہ ہے: ان تینوں صفات کے لیے ان میں سے کسی ایک کو بھی بازیافت نہیں کیا گیا۔


بازیافت شدہ راکشسوں کی تعداد میں اضافہ (6 سے زیادہ) ہمارا مسئلہ حل کر سکتا ہے ، لیکن اس سے اضافی مسائل پیدا ہوتے ہیں:

  1. پیداوار میں، مزید نتائج کی بازیافت (متعدد kNN تلاشیں) تلاش کے وقت کو نمایاں طور پر بڑھاتا ہے۔
  2. ہر نئی خصوصیت کے لیے جو ہم متعارف کراتے ہیں، ایک "مکمل" عفریت تلاش کرنے کے ہمارے امکانات - ہماری استفسار میں موجود تمام صفات کے ساتھ - تیزی سے کم ہو جاتے ہیں۔ اسے روکنے کے لیے، ہمیں بہت سے قریبی پڑوسیوں (راکشسوں) کو بازیافت کرنا ہوگا، جس سے بازیافت شدہ راکشسوں کی کل تعداد تیزی سے بڑھ رہی ہے۔
  3. ہمارے پاس اب بھی کوئی گارنٹی نہیں ہے کہ ہم ان راکشسوں کو بازیافت کریں گے جو ہماری تمام مطلوبہ صفات کے مالک ہیں۔
  4. اگر ہم ایسے راکشسوں کو بازیافت کرنے کا انتظام کرتے ہیں جو ایک ہی وقت میں تمام معیارات کو پورا کرتے ہیں، تو ہمیں اضافی اوور ہیڈ مصالحتی نتائج کو خرچ کرنا پڑے گا۔

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

سپر لنک شدہ نقطہ نظر

آئیے اپنے دوسرے نقطہ نظر کو لاگو کرتے ہیں یہ دیکھنے کے لیے کہ آیا یہ بولی سے بہتر کام کرتا ہے۔

سب سے پہلے، ہم اسکیما، اسپیس، انڈیکس، اور استفسار کی وضاحت کرتے ہیں:

 @schema class Monster: id: IdField look: String habitat: String behavior: String monster = Monster() look_space = TextSimilaritySpace(text=monster.look, model=MODEL_NAME) habitat_space = TextSimilaritySpace(text=monster.habitat, model=MODEL_NAME) behavior_space = TextSimilaritySpace(text=monster.behavior, model=MODEL_NAME) monster_index = Index([look_space, habitat_space, behavior_space]) monster_query = ( Query( monster_index, weights={ look_space: Param("look_weight"), habitat_space: Param("habitat_weight"), behavior_space: Param("behavior_weight"), }, ) .find(monster) .similar(look_space.text, Param("look")) .similar(habitat_space.text, Param("habitat")) .similar(behavior_space.text, Param("behavior")) .limit(LIMIT) ) default_weights = { "look_weight": 1.0, "habitat_weight": 1.0, "behavior_weight": 1.0 }


اب، ہم ایگزیکیوٹر شروع کرتے ہیں اور ڈیٹا اپ لوڈ کرتے ہیں:

 monster_parser = DataFrameParser(monster, mapping={monster.id: "name"}) source: InMemorySource = InMemorySource(monster, parser=monster_parser) executor = InMemoryExecutor(sources=[source], indices=[monster_index]) app = executor.run() source.put([df])


آئیے وہی استفسار چلائیں جو ہم نے اوپر اپنے سادہ انداز کے نفاذ میں چلایا تھا:

 query = { 'look': 'glowing', 'habitat': 'dark places', 'behavior': 'light manipulation' } app.query( monster_query, limit=LIMIT, **query, **default_weights )

آئی ڈی

سکور

دیکھو

مسکن

سلوک

سرگوشی کا سایہ

0.376738

چمکتی آنکھوں کے ساتھ سایہ دار، بے ساختہ وجود

تاریک جنگلات اور لاوارث عمارتیں۔

خوف پر کھانا کھلاتا ہے اور پریشان کن سچائیوں کو وسوسہ دیتا ہے۔

Luminoth

0.340084

چمکتے پنکھوں اور اینٹینا کے ساتھ کیڑے جیسی مخلوق

گھنے جنگلات اور جنگلات جن میں بائولومینسنٹ نباتات ہیں۔

بات چیت کرنے اور شکار کو اپنی طرف متوجہ کرنے کے لیے آرام دہ روشنی کے نمونوں کا اخراج کرتا ہے۔

زندہ گریفٹی

0.330587

دو جہتی، رنگین مخلوق جو چپٹی سطحوں پر رہتی ہے۔

شہری علاقوں، خاص طور پر دیواریں اور بل بورڈز

ماحول کے ساتھ گھل مل جانے کے لیے شکل بدلتی ہے اور روغن جذب کرتی ہے۔


اور آواز! اس بار، ہمارے سب سے اوپر آنے والے راکشسوں میں سے ہر ایک اس اسکور میں اعلیٰ درجہ پر ہے جو ان تینوں خصوصیات میں سے ایک قسم کے "مطلب" کی نمائندگی کرتا ہے جو ہم چاہتے ہیں کہ ہمارے عفریت کو حاصل ہو۔ آئیے ہر عفریت کے اسکور کو تفصیل سے توڑتے ہیں:

آئی ڈی

دیکھو

مسکن

سلوک

کل

سرگوشی کا سایہ

0.167859

0.203189

0.005689

0.376738

Luminoth

0.126206

0.098689

0.115189

0.340084

زندہ گریفٹی

0.091063

0.110944

0.12858

0.330587


ہمارے دوسرے اور تیسرے نتائج، Luminoth اور Living Graffiti، دونوں مطلوبہ تینوں خصوصیات کے مالک ہیں۔ سرفہرست نتیجہ، Whispering Shade، اگرچہ یہ روشنی کی ہیرا پھیری کے معاملے میں کم متعلقہ ہے - جیسا کہ اس کے behavior اسکور (0.006) سے ظاہر ہوتا ہے، اس میں "چمکتی ہوئی" خصوصیات اور ایک تاریک ماحول ہے جو اس کی look (0.168) اور habitat (0.203) اسکور کو بہت زیادہ بناتا ہے۔ اعلی، اسے سب سے زیادہ کل سکور (0.377) دیتا ہے، جو اسے مجموعی طور پر سب سے زیادہ متعلقہ عفریت بناتا ہے۔ کیا بہتری ہے!

کیا ہم اپنے نتائج کو نقل کر سکتے ہیں؟ آئیے ایک اور استفسار کرنے کی کوشش کریں اور معلوم کریں۔

 query = { 'look': 'shapeshifting', 'habitat': 'varied landscapes', 'behavior': 'illusion creation' }


آئی ڈی

سکور

دیکھو

مسکن

سلوک

مسٹ فینٹم

0.489574

ایتھریل، دھند نما ہیومنائڈ جس میں شفٹنگ خصوصیات ہیں۔

دلدل، مورز، اور دھند زدہ ساحلی پٹی۔

وہم اور وسوسوں سے مسافروں کو گمراہ کرتا ہے۔

زیفیر ڈانسر

0.342075

چمکدار پنکھوں کے ساتھ خوبصورت ایویئن مخلوق

اونچی پہاڑی چوٹیاں اور ہوا سے بہنے والے میدان

ساتھیوں کو اپنی طرف متوجہ کرنے کے لیے مسحور کن فضائی ڈسپلے بناتا ہے۔

سرگوشی کا سایہ

0.337434

چمکتی آنکھوں کے ساتھ سایہ دار، بے ساختہ وجود

تاریک جنگلات اور لاوارث عمارتیں۔

خوف پر کھانا کھلاتا ہے اور پریشان کن سچائیوں کو وسوسہ دیتا ہے۔


بہت اچھا! ہمارے نتائج ایک بار پھر بہترین ہیں۔

کیا ہوگا اگر ہم اپنے ڈیٹاسیٹ سے کسی مخصوص عفریت سے ملتے جلتے راکشسوں کو تلاش کرنا چاہتے ہیں؟ آئیے اسے ایک عفریت کے ساتھ آزمائیں جسے ہم نے ابھی تک نہیں دیکھا ہے - ہارمونک کورل۔ ہم اس عفریت کے لیے صفات نکال سکتے ہیں اور دستی طور پر استفسار کے پیرامیٹرز بنا سکتے ہیں۔ لیکن Superlinked کے پاس ایک with_vector طریقہ ہے جسے ہم استفسار آبجیکٹ پر استعمال کر سکتے ہیں۔ چونکہ ہر عفریت کی شناخت اس کا نام ہے، اس لیے ہم اپنی درخواست کا اظہار اس طرح کر سکتے ہیں:

 app.query( monster_query.with_vector(monster, "Harmonic Coral"), **default_weights, limit=LIMIT )


آئی ڈی

سکور

دیکھو

مسکن

سلوک

ہارمونک کورل

1

برانچنگ، موسیقی کے آلے کی طرح کی ساخت جس میں ہلتے ہوئے ٹینڈرلز ہیں۔

اتھلے سمندر اور سمندری تالاب

بات چیت کرنے اور جذبات کو متاثر کرنے کے لیے پیچیدہ دھنیں تخلیق کرتا ہے۔

ڈریم ویور آکٹوپس

0.402288

خیموں کے ساتھ سیفالوپڈ جو اورورا کی طرح چمکتے ہیں۔

گہری سمندری خندقیں اور پانی کے اندر غار

قریبی مخلوق کے خوابوں کو متاثر کرتا ہے۔

ایکوا Wraith

0.330869

بہتے پانی سے بنی پارباسی انسانی شکل

دریا، جھیلیں اور ساحلی علاقے

آبی ذخائر کے ساتھ گھل مل جانے کے لیے شکل بدلتی ہے اور کرنٹ کو کنٹرول کرتی ہے۔


سب سے اوپر نتیجہ سب سے زیادہ متعلقہ ہے، ہارمونک کورل خود، جیسا کہ توقع کی گئی ہے۔ دیگر دو عفریت جو ہماری تلاش سے حاصل ہوئے ہیں وہ ہیں Dreamweaver Octopus اور Aqua Wraith۔ دونوں ہارمونک کورل کے ساتھ اہم موضوعاتی ( انتساب ) عناصر کا اشتراک کرتے ہیں:

  1. آبی رہائش گاہیں ( habitat )
  2. ان کے ماحول پر اثر انداز ہونے یا اس میں ہیرا پھیری کرنے کی صلاحیت ( behavior )
  3. متحرک یا سیال بصری خصوصیات ( look )

وصف وزن

فرض کریں، اب، کہ ہم look وصف کو زیادہ اہمیت دینا چاہتے ہیں۔ سپر لنکڈ فریم ورک ہمیں استفسار کے وقت وزن کو آسانی سے ایڈجسٹ کرنے دیتا ہے۔ آسان موازنہ کے لیے، ہم ہارمونک کورل سے ملتے جلتے راکشسوں کی تلاش کریں گے، لیکن اپنے وزن کو موافق look کے ساتھ۔

 weights = { "look_weight": 1.0, "habitat_weight": 0, "behavior_weight": 0 } app.query( monster_query.with_vector(monster, "Harmonic Coral"), limit=LIMIT, **weights )


آئی ڈی

سکور

دیکھو

مسکن

سلوک

ہارمونک کورل

0.57735

برانچنگ، موسیقی کے آلے کی طرح کی ساخت جس میں ہلتے ہوئے ٹینڈرلز ہیں۔

اتھلے سمندر اور سمندری تالاب

بات چیت کرنے اور جذبات کو متاثر کرنے کے لیے پیچیدہ دھنیں تخلیق کرتا ہے۔

Thornvine Elemental

0.252593

جڑی ہوئی بیلوں اور کانٹوں کے جسم کے ساتھ پودوں کی طرح کی مخلوق

زیادہ بڑھے ہوئے کھنڈرات اور گھنے جنگل

تیزی سے بڑھتا ہے اور پودوں کی زندگی کو کنٹرول کرتا ہے۔

پلازما ناگ

0.243241

کڑکتی توانائی سے بنی سانپ جیسی مخلوق

بجلی کے طوفان اور پاور پلانٹس

بجلی کے کرنٹوں پر فیڈ کرتا ہے اور شارٹ سرکٹ ٹیکنالوجی کر سکتا ہے۔


ہمارے تمام نتائج (مناسب طور پر) ایک جیسے ہوتے ہیں - "ہلتے ہوئے ٹینڈرلز کے ساتھ شاخیں"، "مڑی ہوئی بیلوں اور کانٹوں کے جسم کے ساتھ پودوں کی طرح کی جاندار"، "سانپ کی طرح"۔

اب، آئیے ایک اور تلاش کرتے ہیں، ظاہری شکل کو نظر انداز کرتے ہوئے، اور اس کے بجائے ایسے راکشسوں کی تلاش کرتے ہیں جو بیک وقت habitat اور behavior کے لحاظ سے ایک جیسے ہوتے ہیں:

 weights = { "look_weight": 0, "habitat_weight": 1.0, "behavior_weight": 1.0 }


آئی ڈی

سکور

دیکھو

مسکن

سلوک

ہارمونک کورل

0.816497

برانچنگ، موسیقی کے آلے کی طرح کی ساخت جس میں ہلتے ہوئے ٹینڈرلز ہیں۔

اتھلے سمندر اور سمندری تالاب

بات چیت کرنے اور جذبات کو متاثر کرنے کے لیے پیچیدہ دھنیں تخلیق کرتا ہے۔

ڈریم ویور آکٹوپس

0.357656

خیموں کے ساتھ سیفالوپڈ جو ارورہ کی طرح چمکتے ہیں۔

گہری سمندری خندقیں اور پانی کے اندر غار

قریبی مخلوق کے خوابوں کو متاثر کرتا ہے۔

مسٹ فینٹم

0.288106

ایتھریل، دھند نما ہیومنائڈ جس میں شفٹنگ خصوصیات ہیں۔

دلدل، مورز، اور دھند زدہ ساحلی پٹی۔

وہم اور وسوسوں سے مسافروں کو گمراہ کرتا ہے۔


ایک بار پھر، Superlinked اپروچ بہت اچھے نتائج پیدا کرتا ہے۔ تینوں راکشس پانی والے ماحول میں رہتے ہیں اور دماغ پر قابو پانے کی صلاحیتوں کے مالک ہیں۔

آخر میں، آئیے ایک اور تلاش کرنے کی کوشش کرتے ہیں، تینوں صفات کو مختلف طریقے سے وزن کرتے ہوئے - ایسے راکشسوں کو تلاش کرنے کے لیے جو ہارمونک کورل کے مقابلے میں کچھ ملتے جلتے نظر آتے ہیں، بہت مختلف رہائش گاہوں میں رہتے ہیں، اور بہت ملتے جلتے سلوک کے مالک ہیں:

 weights = { "look_weight": 0.5, "habitat_weight": -1.0, "behavior_weight": 1.0 }


آئی ڈی

سکور

دیکھو

مسکن

سلوک

ہارمونک کورل

0.19245

برانچنگ، موسیقی کے آلے کی طرح کی ساخت جس میں ہلتے ہوئے ٹینڈرلز ہیں۔

اتھلے سمندر اور سمندری تالاب

بات چیت کرنے اور جذبات کو متاثر کرنے کے لیے پیچیدہ دھنیں تخلیق کرتا ہے۔

Luminoth

0.149196

چمکتے پنکھوں اور اینٹینا کے ساتھ کیڑے جیسی مخلوق

گھنے جنگلات اور جنگلات جن میں بائولومینسنٹ نباتات ہیں۔

بات چیت کرنے اور شکار کو اپنی طرف متوجہ کرنے کے لیے آرام دہ روشنی کے نمونوں کا اخراج کرتا ہے۔

زیفیر ڈانسر

0.136456

چمکدار پنکھوں کے ساتھ خوبصورت ایویئن مخلوق

اونچی پہاڑی چوٹیاں اور ہوا سے بہنے والے میدان

ساتھیوں کو اپنی طرف متوجہ کرنے کے لیے مسحور کن فضائی ڈسپلے بناتا ہے۔



ایک بار پھر عظیم نتائج! ہمارے دو دیگر بازیافت شدہ راکشس - Luminoth اور Zephyr Dancer - ہارمونک کورل کی طرح برتاؤ رکھتے ہیں اور ہارمونک کورل سے مختلف رہائش گاہوں میں رہتے ہیں۔ وہ ہارمونک کورل سے بھی بہت مختلف نظر آتے ہیں۔ (جبکہ ہارمونک کورل کے ٹینڈرلز اور لومینوتھ کا اینٹینا کچھ اسی طرح کی خصوصیات ہیں، ہم نے صرف look_weight وزن کو 0.5 تک کم کیا، اور دونوں راکشسوں کے درمیان مماثلت وہیں ختم ہو جاتی ہے۔)

آئیے دیکھتے ہیں کہ انفرادی صفات کے لحاظ سے ان راکشسوں کے مجموعی اسکور کیسے نکلتے ہیں:

آئی ڈی

دیکھو

مسکن

سلوک

کل

ہارمونک کورل

0.19245

-0.3849

0.3849

0.19245

Luminoth

0.052457

-0.068144

0.164884

0.149196

زیفیر ڈانسر

0.050741

-0.079734

0.165449

0.136456


habitat_weight (-1.0) کو منفی طور پر وزن دے کر، ہم جان بوجھ کر اسی طرح کے مسکن والے راکشسوں کو "دور دھکیلتے" ہیں اور اس کی بجائے سطحی راکشسوں کو جن کے ماحول ہارمونک کورل سے مختلف ہیں - جیسا کہ Luminoth's اور Zephyr Dancer کے منفی habitat اسکور میں دیکھا گیا ہے۔ Luminoth's اور Zephyr Dancer کے behavior اسکور نسبتاً زیادہ ہیں، جو ہارمونک کورل سے ان کے رویے کی مماثلت کی نشاندہی کرتے ہیں۔ ان کے look کے اسکور مثبت لیکن کم ہیں، جو ہارمونک کورل سے کچھ لیکن انتہائی بصری مماثلت کی عکاسی کرتے ہیں۔

مختصراً، habitat_weight کو -1.0 تک اور look_weight 0.5 تک کم کرنے کی ہماری حکمت عملی لیکن behavior_weight 1.0 پر رکھنے کی حکمت عملی ایسے راکشسوں کو سرفیس کرنے میں کارگر ثابت ہوتی ہے جو ہارمونک کورل کے ساتھ کلیدی طرز عمل کی خصوصیات کا اشتراک کرتے ہیں لیکن ان کا ماحول بہت مختلف ہے اور کم از کم کچھ مختلف نظر آتے ہیں۔

نتیجہ

ملٹی ایٹریبیوٹ ویکٹر کی تلاش معلومات کی بازیافت میں ایک اہم پیشرفت ہے، جو بنیادی معنوی مماثلت کی تلاش کے مقابلے میں زیادہ درستگی، سیاق و سباق کی تفہیم اور لچک پیش کرتی ہے۔ پھر بھی، ہمارا سادہ طریقہ (اوپر) - انتساب ویکٹرز کو الگ سے ذخیرہ کرنا اور تلاش کرنا، پھر نتائج کو یکجا کرنا - قابلیت، باریک بینی اور کارکردگی میں محدود ہے جب ہمیں ایک ساتھ متعدد صفات کے ساتھ اشیاء کو بازیافت کرنے کی ضرورت ہوتی ہے۔ (مزید برآں، متعدد kNN تلاشوں میں مربوط ویکٹر کے ساتھ ایک ہی تلاش سے زیادہ وقت لگتا ہے۔)

اس طرح کے منظرناموں کو ہینڈل کرنے کے لیے، یہ بہتر ہے کہ اپنے تمام ویکٹر ویکٹرز کو ایک ہی ویکٹر اسٹور میں اسٹور کریں اور ایک ہی تلاش کریں، استفسار کے وقت اپنے اوصاف کو وزن دیں۔ سپر لنکڈ اپروچ کسی بھی ایپلیکیشن کے لیے سادہ طریقہ سے زیادہ درست، موثر اور توسیع پذیر ہے جس کے لیے تیز، قابل بھروسہ، باریک بینی، ملٹی ایٹریبیوٹ ویکٹر بازیافت کی ضرورت ہوتی ہے - چاہے آپ کے استعمال کا معاملہ آپ کے ای کامرس میں حقیقی دنیا کے ڈیٹا چیلنجوں سے نمٹ رہا ہو یا سفارشی نظام۔ ... یا کچھ بالکل مختلف، جیسے راکشسوں سے لڑنا۔

تعاون کرنے والے


اصل میں یہاں شائع ہوا۔