SPELUNKER: جستجوی شبیه‌ترین آیتم‌ها با کمک هوش مصنوعی و KNN مخصوص!

Fall Back

امروز میخوام در مورد یه سیستم جالب براتون حرف بزنم که اسمش SPELUNKER هست. این سیستم به درد وقتی میخوره که میخواین یه چیزی پیدا کنین که شبیه به یه چیز دیگه باشه، مثلاً دنبال نوشیدنی‌ای هستین که شبیه یه نوشیدنی خاص باشه یا تو فروشگاه دنبال محصولاتی هستین که مثل هم باشن.

ماجرا اینه که SPELUNKER از ترکیب دو تا تکنولوژی باحال استفاده میکنه: یکی Large Language Model یا همون LLM (یعنی همون مدل‌های زبانی قدرتمند مثل چت‌بات‌ها که میتونن مفهوم حرف ما رو بفهمن و تفسیر کنن) و دیگری هم روش K-Nearest Neighbors یا همون KNN (یه الگوریتم کلاسیک برای پیدا کردن چیزهایی که از نظر عددی یا ویژگی‌ها به هم نزدیک هستن).

حالا فرق این سیستم با روش‌های قدیمی چیه؟ معمولاً برای این جور جستجوها از سیستم‌هایی استفاده میشه که همه اطلاعات رو تبدیل به یه سری بردار عددی (همون Dense Vector) میکنن و دیگه مشخص نیست هر بردار چی داره نشون میده. مثل یه جعبه سیاهه! اما تو SPELUNKER قضیه فرق داره و سعی کردن همه‌چی رو شفاف‌تر جلو ببرن.

اول کار، LLM وارد بازی میشه و هر چی که شما به زبون طبیعی بگین (مثلاً “یه شراب قرمز شیرین میخوام که رایحه میوه بده”), LLM اینو تبدیل میکنه به یه جستجوی ساختاریافته بر پایه ویژگی‌ها و خصوصیات. یعنی به زبان ماشین درمیاره که بفهمه دقیقاً شما چی می‌خواین.

بعد نوبت KNN سفارشی میشه. اینجا برای جستجو از BallTree استفاده شده. BallTree یه ساختار داده پیشرفته‌ست که باعث میشه جستجو تو داده‌ها سریع‌تر باشه، مخصوصاً وقتی داده متفاوت زیاد داریم. تازه، توی این سیستم اومدن واسه هر نوع داده (مثلاً متن، عدد، نوع دسته‌ای و غیره) یه مدل فاصله‌سنجی مختص خودش گذاشتن تا دقت کار بالا بره.

برای این که بفهمن SPELUNKER چقدر خوب کار میکنه، اومدن یه دیتاست باحال هم تست کردن: ۵۰۰ تا نقد مربوط به شراب‌های مختلف. LLM تونست اطلاعات مورد نیاز رو از تو متن‌ها با دقت خیلی بالا بکشه بیرون؛ امتیاز F1–score رسید به 0.9779 که یعنی تقریباً بی نقص! حتی شباهت متنی که مدل درآورده بود به متن اصلی هم خودش خیلی خوب بود (امتیاز Jaro similarity شد 0.9321، یعنی تقریباً یه جورایی عین هم بودن).

اما نکته جالب اینجاست: وقتی اومدن خروجی KNN رو دوباره با کمک LLM مرتب کردن (یعنی کار re-ranking انجام دادن)، دیدن میزان recall یا همون میزان آیتم‌های مرتبطی که واقعاً پیدا شدن با اختلاف معنی‌دار بهتر شد (مقدار p=0.013 هم نشون میده این بهتر شدن تصادفی نیست). پس LLM نشون داد که می‌تونه دقیق‌تر همون چیزی رو که کاربر تو ذهنشه پیدا کنه و بیاره بالا.

در کل، این روش باعث میشه پلی بزنه بین زبان انسان و ماشین، یعنی شما هر چی دوست دارین به زبون خودتون میگین و سیستم اونو واسه جستجوی دقیق‌تر تبدیل و ترجمه میکنه. تجربه کار با چنین سیستمی کاملاً شفاف و دقیق‌تر میشه و به درد هرجا که بخوایم جستجوی شبیه‌ترین آیتم‌ها رو داشته باشیم میخوره.

اگه از اینجور ایده‌ها خوشتون میاد یا کنجکاوین بیشتر بدونین، حتماً با یه سرچ ساده درباره SPELUNKER می‌تونین اطلاعات بیشتری گیر بیارین!

منبع: +