Алгоритми і технології Яндекса. Як працює пошук?
В минулій статті ми розглянули найбільш цікаві технології Яндекса, що застосовуються для забезпечення якісного пошуку в інтернеті. Тепер розберемо більш детально, як влаштована пошукова машина Яндекса. Що ж відбувається після того, як користувач вводить запит в рядок пошуку?
MatrixNet
Технологія пошуку Яндекс влаштована складно. Пошукова видача формується на основі формули ранжирування, побудованої на кількох сотнях факторів, кожен з яких може включатися з індивідуальним коефіцієнтом, а також в різних комбінаціях з іншими факторами.
Формула ранжування - це функція, побудована на безлічі факторів, за допомогою яких визначається релевантність сайту пошуковому запиту і його черговість у видачі
Для забезпечення якісного пошуку чинники і коефіцієнти у формулі ранжирування повинні регулярно оновлюватися. Побудовою такої формули в Яндексі займається MatrixNet (Матрикснет) - метод машинного навчання, введений Яндексом в 2009 році з метою зробити пошук більш точним.
«Матрикснет» - метод машинного навчання, за допомогою якого підбирається формула ранжирування Яндекса. Вхідними даними є чинники і навчальні дані, підготовлені асессорами (експертними співробітниками Яндекса).
Основна його особливість полягає в тому, що він стійкий до перенавчання і дозволяє побудувати складну формулу ранжирування з десятками тисяч коефіцієнтів, яка враховує безліч різних чинників і їх комбінацій без збільшення кількості асессорскіх оцінок і небезпеки знайти неіснуючі закономірності.
архітектура пошуку
Щодня користувачі посилають Яндексу десятки мільйонів запитів. Для формування відповіді під який-небудь один запит пошуковій машині необхідно перевірити мільйони документів, визначити їх релевантність та впорядкувати за допомогою формули ранжирування так, щоб найбільш підходящі сторінки сайтів опинилися вгорі видачі. Для прискорення цього процесу Яндекс використовує заздалегідь підготовлені дані - індекс.
Індекс - база пошукової системи, яка містить відомості про запити і їх позиціях на сторінках сайтів в мережі. Індекс формується пошуковим роботом, який обходить сайти і збирає інформацію з заданою періодичністю.
Розмір індексу в пошуку величезний, щоб швидко обробити такий обсяг даних використовуються тисячі серверів, об'єднані в кластери.
Після того, як користувач вводить запит в рядок пошуку, він аналізується комп'ютерною системою «метапоіска» на предмет регіональної прив'язки, класу запиту і т.д. Там же запит проходить лінгвістичну обробку. Далі «метапоіска» перевіряє кеш на наявність пошукового відповіді на цей запит. За актуальні запитам результати пошуку зберігаються в пам'яті пошукача протягом якогось часу, а не формуються кожен раз заново.
«Метапоіска» - це програма, яка приймає і розбирає пошукові запити, передає їх відповідним «Базовим пошуків», забезпечує агрегацію і ранжування знайдених документів, а також виробляє кешування частини відповідей, які згодом повертаються користувачам без звернення до «Базовому пошуку».
Якщо ж відповідь не знайдений, «метапоіска» передає запит іншій комп'ютерній системі - «Базовому пошуку». Там же зберігається пошукова база Яндекса (індекс). Так як це величезний обсяг даних, індекс розбивається на частини, які зберігаються на різних серверах. Такий підхід дозволяє здійснювати пошук одночасно по декількох частин бази даних, що помітно прискорює процес. Кожен сервер має кілька копій, це дає можливість розподіляти навантаження і не втрачати дані. При передачі запиту «метапоіска» вибирає найменш завантажені сервера «Базового пошуку».
«Базовий пошук» забезпечує пошук по всій частини індексу (базі пошукової системи), що містить відомості про запити і їх позиціях на сторінках сайтів в мережі.
Кожен сервер базового пошуку віддає список документів, що містять пошуковий запит, назад в «метапоіска», де вони ранжуються за сформованим «Матрикснет» формулою. Результати такої роботи ми бачимо на сторінці видачі.
Використання індексу в якості джерела даних, багатостадійний підхід до формування відповіді і дублювання даних дозволяють Яндексу забезпечувати пошук за частки секунди.
Оцінка якості пошуку
Крім швидкості пошуку не менш важливо і його якість. Для цього у Яндекса існує система оцінки якості пошуку, яка також допомагає поліпшити цю якість.
Релевантність - властивість документа, що визначає ступінь його відповідності пошуковому запиту. Обчислюється на основі формули ранжирування.
Релевантність документа пошуковому запиту обчислюється на основі формули ранжирування - функції від безлічі факторів. Зараз в Яндексі більше 800 різних факторів , Таких як вік сайту, регіональна прив'язка, взаємодія користувачів з сайтом (поведінковий фактор), унікальність контенту і т.д. У випадку з персоналізованих пошуком релевантність документа залежить безпосередньо від уподобань користувача, що відправив запит.
Формула ранжування постійно оновлюється, так як змінюються потреби користувачів і індекс пошукача. Для її відновлення застосовується методи машинного навчання. На основі експертних даних виявляються залежності між характеристиками документів і порядком їх включення в видачу, які вносяться в формулу для її коригування.
Оцінка якості пошуку - задоволеність користувачів результатами пошуку і порядком їх слідування.
Експертними даними для машинного навчання є оцінки асессоров, які також застосовуються для оцінки якості пошуку.
Асесори - фахівці, які оцінюють по ряду критеріїв релевантність представленого у видачі документа пошуковому запиту.
Асесори оцінюють пошукові результати в видачі по ряду критеріїв, які дозволяють визначити, чи присутній на сайті повну відповідь на запит, чи є сайт брендовим, що не переспамлен чи текстовий контент і т.д. В основному асесори працюють з найбільш популярними пошуковими запитами (близько 150 тис.), При цьому оцінюються перші 30 позицій видачі. Це найбільш авторитетна оцінка, так як її проводить людина, а не машина, тобто сайт отримує оцінку з точки зору користувача.
Актуалізація і поліпшення правил ранжирування в комплексі з оцінкою якості пошуку допомагають Яндексу формувати видачу, відповідну очікуванням користувачів.
Що ж відбувається після того, як користувач вводить запит в рядок пошуку?