Qidiruv tizimi kerakli ma’lumotni qanday topadi?

Qidiruv tizimining asosiy vazifasi foydalanuvchining savoliga tez va aniq javob topishdan iborat. Odamlar til va mantiq qoidalariga eʼtibor bermasdan, har qanday sabab bilan qidiruv satriga soʻz kiritishga odatlangan. Tizimning eng koʻp ishlov beriladigan qismi, foydalanuvchi soʻrovini koʻp bosqichli qayta ishlash boʻlsa, ajab emas. Yandex qidiruv tezkor va interaktiv javob xizmati rahbari Aleksey Shagrayev qidiruv tizimi “ichkaridan” qanday ishlashini va u har qanday, hatto eng gʻalati, noaniq va gʻayrioddiy savollarga qay tartibda, tez javob bera olishi haqida aytib beradi. Ushbu maqola orqali N + 1 Yandex bilan hamkorlikda internetdagi qidiruv ishlari ortida turgan texnologiyalar haqida bir qator qoʻshma maqolalar bera boshlaydi.


Foydalanuvchi qidiruv satriga soʻrov kiritadi va “topish” tugmasini bosadi. Bir soniyadan kam vaqt ichida u tizim natijasini: unga kerakli maʼlumotlarni olishga yordam berishi kerak boʻlgan hujjatlar toʻplamini koʻradi.


Ushbu soniyalarda nima sodir boʻldi?

Dastlab, soʻrov tarmoq orqali tegishli maʼlumotlar markaziga yetkazildi. Murakkab algoritmlardan foydalangan holda yuzlab, milliardlab hujjatlar haqidagi maʼlumotlarni saqlaydigan, ulkan hisoblash klasteri hujjatlarning qaysi biri qidiruv natijalarida koʻrinishi kerakligini aniqladi. Hisoblash natijalari qayta ishlash bosqichidan oʻtdi va har bir element vizual shaklga ega boʻldi. Olingan maʼlumotlar foydalanuvchining kompyuteriga yuborildi va brauzerda koʻrsatildi. Brauzer qoʻshimcha funksiyani bajarib, veb-sahifani interaktiv qildi.


nplus1.ru

Ishlab chiquvchilar qidiruv tizimi ishini yaxshilash uchun koʻp kuch sarflaydi. Ular maʼlumotlar bazasini yaratish boʻyicha algoritmlarni shakllantiradi va doimiy ravishda takomillashtiradi, maʼlumotlarni taqdim etishning turli usullarini (ular orasidan avtomatik ravishda tanlab olish vazifasini) taʼminlaydi va qidiruv natijalari interaktiv boʻlishiga intiladi. Ammo qidiruv tizimining asosiy vazifasi doimiy ravishda tegishli maʼlumotlarni topish boʻlgani tufayli eng texnologik va ilm-fan yutuqlarini talab qiladigan soʻrovlar aynan qidiruv sifatini oshirishga qaratilgan.


Har qanday savolga javob

Qidiruv tizimi har qanday savolga tezda javob topishi kerak, hatto ilgari hech kim bunday savolni soʻramagan boʻlsa ham. Aslida, tizim biz tasavvur qilganimizdan ham koʻproq, har kuni oʻn millionlab noyob soʻrovlarni qabul qiladi. Hatto eng ahamiyatsiz savolga ham hujjatlarning keng maʼlumotlar bazasi tufayli javob topish mumkin.


Tizimning ishlash mantigʻi oddiy. Maʼlumotlar bazasida hujjatlar qanchalik koʻp boʻlsa, foydalanuvchi soʻroviga mos keladigan narsa shunchalik koʻp topiladi. Biroq hujjatlarni yigʻishda baʼzi cheklovlarga rioya qilish kerak boʻladi. Masalan, Yandex faqat sayt yaratuvchilari tomonidan yuklab olishga ruxsat berilgan yoki manbaning asosiy sahifasiga olib boradigan havolalar ketma-ketligida aks etgan hujjatlarni indekslaydi. Zamonaviy qidiruv tizimlari yuzlab, milliardlab hujjatlarni saqlaydi.


Maʼlumotlarning katta miqdoriga qaramay, hujjatlarni qidirish imkon qadar tez amalga oshirilishi kerak. Yuqori tezlikka qidiruvning bir necha bosqichlarga boʻlingan, iyerarxik tuzilishi tufayli erishiladi. Jarayon mobaynida dastlabki bosqichlar keyingilardan algoritmlarning qanchalik murakkabligi va qancha hujjatlar qayta ishlanishi bilan farqlanadi.


Qidiruv tizimini rivojlantirishdagi eng murakkab yondashuvlar birinchi navbatda qidiruvning yakuniy bosqichini yaxshilashga qaratilgan. Eng yaxshi 500 ta hujjatni ajratib olish unchalik qiyin ish emas, lekin ularning ichidan bir yoki ikkitasini tanlash juda murakkab. Boshqacha qilib aytganda, Yandex soʻrovga eng mos keladigan hujjatlarni tartiblash uchun imkon qadar murakkab algoritmlardan foydalanadi.


Soʻz va atamalar

Har qanday soʻrov soʻzlardan iborat boʻladi. Bir qatorda joylashgan, bir nechta soʻzlar “kontakt n-gramm” deb ataladi. Bu bitta soʻz (“unigramma”), ketma-ket ikkita soʻz (“bigramma”) yoki boshqa har qanday soʻzlar toʻplami boʻlishi mumkin. Agar soʻzlar tartibsiz ravishda joylashtirilgan va bir-biriga mantiqan bogʻlanmagan boʻlsa, “n-gramma” kontaktsiz deb ataladi. Har bir soʻrov tizim tomonidan oʻxshash soʻzlarga yoki soʻzlar ketma-ketligiga ajratiladi. Bu alohida soʻzlar “atamalar” deb nomlanadi.


nplus1.ru

Moskvada hozir soat necha, degan asl soʻrov va unga bogʻliq atamalar unigramma (sariq), baʼzi bigramma (yashil va qizil), aloqador bigramma (yashil), aloqador trigrammalar (binafsha) vositasida qidiriladi


Baʼzi atamalar uchun eng yaxshi hujjatlar oldindan topiladi va tegishli qidiruv bazasida saqlanadi. Misol uchun, Yandex “soat necha”, “hozir soat necha”, “Moskvada soat necha” atamalariga eng mos keladigan hujjatlarni xotirada saqlaydi. Shunday qilib, har bir atama uchun oz sonli boʻlsa-da, eng yaxshi hujjatlar esda saqlab qolinadi. Natijada qidiruvning birinchi bosqichi hisob-kitoblar nuqtai nazaridan ancha osonlashadi. Tizim soʻrov shartlarini ajratadi, eng yaxshi hujjatlar allaqachon saqlanayotgan bazaga murojaat qiladi va keyin topilgan hujjatlarni toʻldirish bilan shugʻullanadi.


Soʻrovlar oddiy, qisqa yoki uzun va juda murakkab boʻlishi mumkin. Shu sababli qidiruv tizimi alohida soʻzlar bilan emas, balki atamalar bilan ishlaydi. Ikki yoki undan ortiq soʻzlardan iborat soʻrov kiritilsa, qidiruv tizimi juda murakkab soʻrovlar uchun ham yuqori aniqlikdagi natijaga erishishi mumkin.


“Moskvada soat necha” soʻroviga tegishli hujjat “necha” soʻzi uchun ham, “hozir” soʻzi uchun ham eng yaxshi hujjatlar qatoriga kiritilmasligi mumkin. Ammo deyarli har doim soʻrovning eng muhim qismini tavsiflovchi va maʼlumotlar bazasidan tegishli hujjatlarni topish imkonini beruvchi soʻzlar ketma-ketligi mavjud boʻladi.


Vektorlar va semantika

Tizim birinchi hujjatlar toʻplamini qabul qildi va ular orasida soʻrov talablariga mos keladiganlari aniqlandi. Ammo bu roʻyxat juda katta. Hozircha biz qidiruvga hech qanday soʻrov kiritmadik, faqatgina oldindan tayyorlangan hujjatlar toʻplamini olib, ularni jamladik. Hujjatlarni tanlashni qisqartirish va sifatini yaxshilash uchun Yandex vektor namoyishidan foydalanadi.


Matnni qayta ishlash uchun vektor koʻrinish usuli 2013-yildan, mashhur word2vec dasturi yozilganidan beri qoʻllanilmoqda. Gʻoya shundan iboratki, har bir alohida soʻz maʼlum bir vektor, yaʼni maʼlum bir semantikaga ega boʻlgan raqamlar ketma-ketligi bilan bogʻlanadi. Shu bilan birga, taqqoslashlar shunday tanlanadiki, soʻzlarning semantikasi geometrik ifodaga ega boʻladi. Oʻxshash maʼnoli soʻzlar yaqin vektor koʻrinishlarini oladi (ular bir-biriga yaqin joylashadi) va, aksincha, maʼnosi oʻxshash boʻlmagan soʻzlar farqlanuvchi koʻrinishlarni oladi.


Oʻqitishning maʼlum bir usuli bilan soʻzlar orasidagi munosabatlar ham geometrik ifodaga ega boʻladi. Masalan, “qirol” va “shahzoda” soʻzlarining vektor koʻrinishlari orasidagi farq vektori “qirolicha” va “malika” soʻzlari orasidagi farq vektoriga yaqin boʻladi. Xuddi shunday, maʼlum vektorli siljishlar jins va soʻzlar sonining oʻzgarini tasvirlashi mumkin va hokazo.


Soʻzlar orasidagi semantik bogʻlanishlar geometrik maʼno kasb etadi.

Soʻz va matnlarning vektorli koʻrinishini yaratish uchun Yandex DSSM usulidan foydalanadi. Bu haqda “Palex” haqidagi maqolada (maqola rus tilida) koʻproq bilib olishingiz mumkin. Usulning afzalligi shundaki, hujjatlar uchun vektor koʻrinishlarini oldindan hisoblash mumkin. Bu jarayonni sezilarli darajada tezlashtiradi. Kelajakda tizim faqat vektorlar bilan ishlaydi va ularni yoʻl-yoʻlakay koʻpaytiradi.


Har bir soʻrovga maksimal semantik oʻxshashlikni taʼminlaydigan oz sonli hujjatlarni tanlash mumkin. Hujjatlarning semantik klasterlari mana shunday paydo boʻladi. Tartiblashning keyingi bosqichlari faqat foydalanuvchi soʻrovi bilan bogʻliq boʻlgan, umumiy mavzu asosida birlashtirilgan klasterlar bilan ishlaydi.


Foydalanuvchi soʻrovi qidiruv amalga oshiriladigan hujjatlarning semantik klasterlaridan biriga mos keladi.

Vektor koʻrinishlarini shunday oʻrgatishga urinib koʻrish mumkinki, soʻrovlar vektori foydalanuvchilar tanlaydigan hujjat vektorlariga yaqin va ular umuman tanlamaydiganlardan uzoq boʻlsin. Maʼlum boʻlishicha, bunday model soʻzlar oʻrtasidagi munosabatlar haqida juda koʻp qiziqarli narsalarni biladi. Ishlab chiquvchilar modelga oldindan tuzilgan maʼlumotni kiritmadi. Model hamma narsani oʻzi aniqladi. Masalan, model sanʼatkorning ismi uning qoʻshiqlari nomi bilan, filmning tavsifi esa uning nomi bilan chambarchas bogʻliqligini biladi. Bu unga qidiruv qatori orqali film va qoʻshiqlarni izlab topish imkonini beradi.


Tartiblash omillari

Hozirgacha biz hisoblash nuqtai nazaridan juda oddiy modellarni tasvirlab berdik. Birinchi bosqichda tizim oldindan tayyorlangan toʻplamlardagi hujjatlardan foydalanadi, ikkinchi bosqichda raqamli vektorlarni solishtirish orqali hujjat va soʻrovlar oʻrtasidagi yaqinlikni aniqlaydi.


Tartiblashning keyingi, soʻnggi bosqichlarida qidiruv juda kam sonli hujjatlar bilan ishlaydi, ammo qiyin funksiyalarni ichiga olgan ancha murakkab modellardan foydalanadi.


Tizimda foydalanuvchi soʻroviga qaysi hujjatlar toʻgʻri kelishini tushunishga imkon beruvchi xususiyatlarni ixtiro qilish ijodiy va muhim ishdir. Muayyan darajaga qadar ular umumiy qarashlardan kelib chiqib shakllantirilishi mumkin.


Mantiqqa asoslansak, baʼzi hollarda foydalanuvchining hududiy joylashuvi haqidagi maʼlumotlardan ham foydalanish kerak boʻladi. Biror kishi qidiruv tizimidan “dorixona”ni qidirganda, bu soʻrov boʻyicha birinchi natijalar uning joylashgan hududi bilan bogʻliq boʻlishi va hech boʻlmaganda, oʻsha shaharda joylashgan dorixonalarning topilishi juda muhimdir. Modeldagi xususiyatlar toʻplamlaridan biri geolokatsiyaga bagʻishlangan boʻladi. “Soʻrov foydalanuvchining hududiy joylashuvini hisobga olishi kerakmi? Hujjat foydalanuvchi bilan bir hududga taalluqlimi? Murojaat qaysi hududdan boʻlmoqda?” kabi savollar modeldan oʻrin olgan boʻladi.


Bunday ajratib beruvchi xususiyatlar juda turlicha boʻladi. Bunda soʻrovdagi muhim soʻzlar oldindan saqlangan hujjatda qanchalik koʻp, qaysi oʻrinlarda va qanday sharoitda topilganini hisobga olish yoki foydalanuvchining shaxsiy xohishlariga asoslanishi mumkin. Foydalanuvchi qaysi manbalarga qanday mavzularda murojaat qilishni maʼqul koʻrishi ham hisobga olinadi.


Tizimning tarmoqlanishi

Zamonaviy qidiruv tizimi taqsimlangan hisoblash sistemasining yaqqol namunasidir. Bunday tizim juda koʻp maʼlumotlarni qayta ishlaydi va uning hisoblash ehtiyoji shunchalik kattaki, ularni bitta kompyuterga joylashtirish va qayta ishlashning iloji yoʻq. Minglab, oʻzaro bir-biriga bogʻlangan kompyuterlardan tashkil topgan klaster yoki hatto bir nechta klasterlarni qurish kerak boʻladi.


Yandex bunday tizimlarni qurishda zamonaviy yondashuvdan foydalanadi. Saqlash (hujjatlarning atama va vektor koʻrinishlarini oʻz ichiga oladi) va hisoblash (hujjat va soʻrov vektorlarini taqqoslash, tartiblash modellarini qoʻllash va boshqalar) tizimlari alohida ajratilgan.


Tartiblashning dastlabki bosqichlarida hujjatlar soni keskin cheklangan boʻladi va shuning uchun ular boʻyicha soʻrovlar (maʼlumotlarni qidirish) soni kam boʻladi. Bu maʼlumotlarni operativ xotirada emas, balki qattiq disklarda (SSD) saqlash imkonini beradi. Shunday qilib, qidiruv bazasi sezilarli darajada koʻproq hujjatlarni saqlashga qodir. Aynan tartiblashning dastlabki bosqichidagi cheklovlar vektor koʻrinishlari va neyron tarmoqlarini joriy etishni talab qildi. Bu esa oson hisoblash tizimini va ayni paytda juda aniq modellarni yaratish imkonini beradi.


Tezlik konturi

Yangilik, forum va bloglardagi xabarlar qidiruv tizimi tomonidan juda tez topilishi kerak. Algoritm odamlar tez-tez murojaat qiladigan sahifalar mavjudligi haqida biladi (masalan, yangiliklar saytining asosiy sahifalari). Bu shuni anglatadiki, ulardagi havola va hujjatlarni tez-tez, deyarli maxsus tartibda toʻplash kerak. Yangi hujjatlar qidiruv bazasining maxsus, tezkor versiyasi xotirasiga tushadi.


Ushbu maʼlumotlar bazasi odatdagidan butunlay boshqacha tarzda saqlanadi va qayta ishlanadi. Uni tez-tez yangilab turish va tezkor qidirish kerak boʻladi. Yandex yangi hujjatlarni umumiy tartiblash formulasi tarzida qayta ishlashi mumkin. Boshqacha qilib aytganda, yangicha yondashuvlar borasida deyarli oʻzgarishlar yoʻq. Asosiy formula qandaydir hodisa sodir boʻlganini tushunadi. Shuning uchun qidiruv natijalariga yangi hujjatlarni qoʻshish kerak.


Biroq yangi hujjatlarni talab qiladigan soʻrovlar boʻyicha qidiruv samaradorligini baholashda ayrim jihatlar hisobga olinishi kerak. Yangi soʻrovlar oqimining zichligi har kuni oʻzgarib turadi. Bu shuni anglatadiki, muntazam ravishda qidiruv tizimining sifatini baholash uchun foydalanadigan yangi hujjatlar toʻplami belgilanishi kerak. Oʻz navbatida, yangi maʼlumotlarni talab qilmaydigan soʻrovlarni baholash uchun hujjatlar toʻplami kamroq – oyiga bir necha marta oʻzgaradi xolos.


Foydalanuvchi qidiruv natijasini koʻrishidan oldin, tizim tanlangan hujjatlarni maxsus tarzda tartiblaydi. Qidiruv tizimlarini yaratadiganlar “odam odatda yuqoridan pastga qarab oʻqiydi” deb ishonadi. Tartiblash sifatini oʻlchashning klassik yondashuvi shundan iboratki, hujjatlarning tartiblangan roʻyxatidagi yuqori oʻrinlarda yuqori sifatli hujjatlar joylashadi. Eng yomoni, foydalanuvchi natijani koʻrib chiqib, saytni tark etishidir. Bu barcha yuqori sifatli hujjatlar negadir foydasiz boʻlib chiqqanini anglatadi.


Qidiruv natijalarini shakllantirish qidiruv tizimi ishidagi eng muhim bosqichlardan biri va juda ahamiyatli vazifadir. Hujjatlarni qidiruv natijalarida toʻgʻri taqsimlash uchun zamonaviy qidiruv tizimlari sunʼiy intellektga, yaʼni qarama-qarshi dalillarga murojaat qilish (counter-factual reasoning) va qarama-qarshi dalillarni oʻrganish (counter-factual learning) usullariga murojaat qiladi.


Qaysi qidiruv natijalari yaxshi deb topilishi, har bir elementning foydaliligi qanday baholanishi va neyron tarmoqlar foydalanuvchi xatti-harakatlarini qanday baholashi haqida Yandex qidiruv tizimi haqidagi keyingi maqolada oʻqing.


Muallif: Aleksey Shagrayev, Dmitriy Levin. Ushbu maqola nplus1.ru saytidagi “Вопросы здесь задают «Я». Как поисковик находит то, что нужно” nomli maqolaning tarjimasi.
Muqova surat: nplus1.ru