نگاهی محصولی به پارادایم‌های جدید موتور جستجو

در این مطلب میخوایم یکی از مساله‌های مهم این روزهای دنیای محصول و فنی که خود ما در موری هم درگیر کار کردن روی اون هستیم رو شرح بدیم: اینکه موتورهای جستجو چه‌طور کار می‌کنن، چه‌طور میشه از ظرفیت‌های یادگیری ماشین کمک گرفت تا امکان انجام جستجوهای پیچیده‌تر و هوشمندتر رو فراهم کرد، و چه چالش‌هایی در این مسیر وجود داره! این مطلب با دید محصولی نوشته شده و بدون پیش‌نیاز فنی قابل مطالعه است.

سه لایه اصلی یک موتور جستجو

یک موتور جستجو (Search Engine) در حالت کلی از سه لایه زیر تشکیل میشه:

  • لایه یک، فهم عبارت مورد جستجو: در لایه بالایی ماژول Query Understanding یا «فهم عبارت مورد جستجو» قرار داره. در این بخش از مدل‌های مختلف زبان طبیعی استفاده میشه و هدف این بخش اینه که جستجوی کاربر رو بفهمه و به شکل مناسبی برای لایه‌های پایینی اون رو قالب‌بندی کنه؛ به عنوان مثال تصحیح عبارت جستجوی کاربر از وظیفه‌های این ماژول محسوب میشه. هم‌چنین با توجه به لایه‌های پایینی جستجوگر، ممکنه نیاز باشه عبارت جستجو قالب‌بندی بشه، فیلترهای مختف از اون استخراج بشه، حتی به چند Query مختلف تقسیم بشه و شاید با توجه به عبارت جستجو به چند فانل و مدل جستجوی مختلف هدایت بشه. همه این کارها از وظایف این ماژول محسوب میشه.


  • لایه ۲، بازیابی: در بخش مرکزی ماژول Retrieval یا بازبیاب وجود داره.این ماژول که میشه گفت بخش مرکزی و اصلی جستجوگره وظیفه‌اش اینه که با توجه به ورودی‌ای که از بخش بالا دریافت می‌کنه محصولات مناسب رو شناسایی و بازیابی کنه. مساله اصلی ما در موری (و البته بیشتر موتورهای جستجوگر) نیز در این لایه تعریف میشه.
  • لایه ۳، رتبه‌بندی: هم‌چنین در پایین‌ترین بخش یک ماژول Ranking وجود داره که وظیفه‌اش به اختصار اینه که رتبه‌بندی محصولاتی که در لایه بازیابی شناسایی شدن رو انجام بده. ماژول رتبه‌بندی ممکنه با توجه به سلایق کاربر، سیاست‌های فروشنده و … رتبه‌بندی رو تغییربده.

دو پارادایم جستجوگری متفاوت

به شکل کلی می‌توان گفت دو مدل موتور جستجو وجود داره که در ادامه سعی می‌کنیم هر کدوم رو کمی معرفی کنیم و از مزیت‌ها و ایرادهای هر کدوم بگیم. یک مساله باز در فضای فنی و محصول پارادایم هیبریدی (تلفیق دو پارادایم قبلی) هست که تیم‌های مختلفی از جمله موری در حال حاضر دارن روی اون کار می‌کنن و در انتهای مطلب به این پارادایم هیبریدی هم اشاره می‌کنیم.

پارادایم جستجوی ۱: مدل جستجوی کلیدواژه‌ای

مدل اول موتورهای جستجو، به شکل Keyword Search یا سرچ کلیدواژه‌ای هستن. به اختصار ساختار اصلی این مدل‌ها به این شکل کار می‌کنه که بر اساس شباهت متنی بین عبارت جستجو و اطلاعات کالاها، کالاها رو Rank می‌کنه و از شبیه‌ترین کالا به پایین به کاربر نشان میده. پایه‌ی این مدل جستجو بسیار ساده است، اما چند مساله جانبی محصولی/دیتایی در این مدل جستجوگری وجود داره که در هر دامین خاص نیاز به کار کردن روی اون‌ها هست. اصلی‌ترین این مسائل عبارته از:

  • استفاده/درست کردن توکنایزر ( Tokenizer ) و پالاینده‌های مناسب ( Parser )
  • نوشتن/درآوردن کلمات هم‌معانی
  • نحوه امتیازدهی مشابهت

از پایه‌ای‌ترین مدل‌های این فضای جستجوگر -الگوریتم رنکینگ- BM25 هست.

خوبی‌ها و محدودیت‌ها

از اصلی‌ترین خوبی‌های این مدل جستجوگری در نسبت با جستجوی معنایی میشه به این موارد اشاره کرد:

  • بسیار کنترل‌پذیره، نتایج این مدل جستجو قابل پیش‌بینی و تفسیره و به کاربر راهکاری ساده برای پیدا کردن کالای خوب میده.
  • اگر به هر دلیلی مدیر محصول نیاز داشته‌باشه یک قانون -به عنوان مثال یک کلمه یا جمله خاص- در عبارت جستجو اثر داده نشه، این کار به آسونی قابل‌انجامه.
  • از اونجا که این مدل جستجوگری از لحاظ مهندسی و تئوری بسیار قدیمی و پایداره، زیرساخت‌های مناسب و نسبتاً کاملی براش وجود داره (مثلاً Elasticsearch یا Meilisearch) که با زحمت مهندسی نه‌چندان سنگین میشه یک نسخه ابتدایی از این مدل جستجوگری با سرعت مناسب پیاده کرد.

میشه گفت اکثر پلتفرم‌های آنلاین و موتورهای جستجو بر مبنای این مدل جستجوگری هستن و از اصلی‌ترین دلایل این انتخاب نیز موارد ذکرشده است. البته یک نکته مهم دیگه هم اینه که جستجوی معنایی مدت کمی هست که از لحاظ مهندسی و تئوری به قوتی رسیده که قابلیت استفاده در مقیاس بالا داشته باشه.

از جمله محدودیت‌های این مدل جستجو هم میشه این موارد رو ذکر کرد:

  • اصولاً این مدل جستجو چندان هوشمند نیست، در نتیجه تقریباً میشه گفت تمامی Configها (مثلاً استفاده از فیلدهای مختلف، در آوردن کلمات هم‌معنی و…) باید به شکل دستی انجام بشه. این مساله در مقیاس بزرگ تبدیل به یک مساله چالش‌برانگیز میشه.
  • محدودیت دانش مدل جستجو بر روی کل مراحل جستجو تاثیر میذاره و دانش معنایی نیز در جستجوگر وجود نداره. به عنوان مثال فرض کنین ممکنه برای عبارت جستجوی «یک کیف بزرگ مناسب برای سفر کردن»، این عبارت شما رو به «چمدان مسافرتی» نرسونه. در حالی که در جستجوی معانی نه تنها این عبارت که حتی موارد پیچیده‌تری مثل «همراه موبایلم چه چیزی بخرم؟» هم قابل جستجو خواهد بود. از طرفی حتی محدودیت‌های بسیار آسون‌تری ممکنه با Config نکردن درست Tokenizer و کلمات هم‌معانی مشاهده بشه به عنوان مثال عبارت جستجوی «صندلی راحتی» نتایج «مبل» رو نشان نده.
  • در این مدل جستجوگر نمی‌تونیم از اطلاعات دامین‌های دیگر کالا (مانند تصویر کالا) استفاده کنیم و هرچیزی باید به شکل متن دربیاد تا قابل استفاده بشه.

پارادایم جستجوی ۲: مدل جستجوی معنایی

مدل جستجوی معنایی، پارادایمی هست که تلاش می‌کنه محدودیت‌های بالا رو رفع کنه. چند دلیل اصلی وجود داره که این پاردایم اخیراً خیلی مطرح شده:

  • مدل‌های Encoder یادگیری ماشین از لحاظ قابلیت پیاده‌سازی و از لحاظ دقت به مرحله کاربردی رسیدن.
  • زیرساخت‌های دیپلوی مدل‌های یادگیری ماشین (از جمله معرفی دیتابیس‌های برداری، زیرساخت‌های توسعه نرم‌افزاری، همگام شدن مدل‌ها با زیرساخت محاسباتی gpuها و…) به مرحله‌ای رسیده که قابلیت دیپلوی این جستجوها در مسایل واقعی وجود داره.

به شکل کلی این مدل‌ها این طوری کار می‌کنن که یک Encoder یادگیری ماشین (تبدیل‌کننده‌ی محتوای متنی/عکسی کالاها به بردار) اطلاعات کالا را به یک بردار تبدیل می‌کنه و در دیتابیس ذخیره می‌کنه، در زمان جستجو نیز عبارت جستجو به همان Encoder داده میشه و بردار خروجی در دیتابیس جستجو میشه.

خوبی‌ها و محدودیت‌ها

اصلی ترین دلایلی که از مدل جستجو معنایی استفاده میشه:

  • در این روش میتوان چند مدل معنایی مختلف رو باهم تلفیق کرد و از مزایای اون‌ها همزمان بهره برد.
  • بخش زیادی از مشکلاتی که روش جستجوی کلید واژه‌ای مطرح شد (مثل درست کردن Tokenizer، در آوردن لیست کلمات هم معنا و پیدا کردن روش امتیازدهی مناسب) در مدل معنایی حل شدن.

مدل های زیادی در سال های اخیر ارائه شدن که کیفیت و دقت اون‌ها هنوز در حال بهبوده. در نتیجه خوبه که به چند نقطه ضعف و محدودیتی که این مدل ها در حال حاضر دارن هم اشاره کنیم:

  • استفاده از این مدل ها نیاز به سخت افزار قدرتمندی داره. البته امکان استفاده از Third-Partyها برای استفاده آسون‌تر وجود داره که این مشکل رو تا حدی حل میکنه.
  • خروجی و عملکرد این مدل‌ها به‌طور قطعی قابل پیش‌بینی نیست و می‌تونه روی کیفیت محصول نهایی تاثیرگذار باشه.
  • اگر مدل مناسبی برای استفاده خاصی که مد نظر دارین قبلاً وجود نداشته باشد، آپدیت کردن این مدل‌ها نیاز به مهارت فنی بالا و جمع آوری دیتای زیادی داره و نتیجه نهایی هم ممکنه نیاز شما رو لزوماً برآورده نکنه.

مدل‌های جستجوگری هیبرید؛ یک مساله باز

با بررسی کامل این ۲ روش متوجه شدیم که هر دوی این روش‌ها محدودیت‌های زیادی دارن و نمی‌تونیم به راحتی مدل جستجو معنایی رو با مدل قدیمی جستجوی کلیدواژه‌ای جایگزین کنیم. اما اگه بتونیم با کمک مدل جستجوی کلیدواژه‌ای بعضی از مشکلات مدل معنایی رو حل کنیم، تلفیق این دو روش می‌تونه نتیجه قابل قبولی داشته باشه. در این قسمت میخوایم بررسی کنیم که چطوری میتوانیم این ۲ روش را در کنار هم بطور همزمان استفاده کنیم.

انتخاب جدا از هر مدل

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

ساختن مدل جدید

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

تقسیم فرایند جستجو بین مدل ها

اگر در فرایند جستجو، امکان انتخاب فیلتر رو داشته باشیم، با کمک گرفتن از مدل جستجو کلید واژه‌ای میتونیم فیلترهای مناسبی برای اعمال در نتیجه جستجو پیدا کنیم. انتخاب این فیلترها میتونه اشتباهات احتمالی مدل معنایی رو جبران کنه و کیفیت جستجو رو افزایش بده. یکی از مشکلات این روش پیچیدگی پیاده‌سازی و Integrate کردن این ۲ مدل در کنار هم هستش.

ما توی موری برای جستجو بین لباس ها، روش های جستجو کلیدواژه ای و جستجو معنایی رو بطور جدا بررسی و تست کردیم. روش جستجو هیبریدی دقیق ترین نتیجه رو واسمون داشته و داریم روی این روش بیشتر کار میکنیم.

سایت موری