Конспект зустрічі «як влаштований пошук Яндекса про що неможливо прочитати»

обхід інтернету

Яндекс знає кілька трильйонів урлов, обходить кілька мільярдів документів в день. Але все урли не омине ніколи, тому що Інтернет нескінченний.

побудова індексу

За даними ашмановской динаміки пошуку. Яндекс випереджає Гугл майже в два рази по повноті пошукового індексу. Такий відрив став можливий завдяки вдосконаленням - закупівлю нових машин і оптимізації процесів.

Схема побудови пошукової бази

Робот обходить Інтернет і індексує документи. Кладе їх в збережену копію, щоб потім показати на видачу, наприклад. Збережена копія - окрема хеш-таблиця між дата-центрами.
У процесі індексації робот витягує слова з документа і розкладає по Лемма, бачить посилання на інші сторінки і йде далі.
На допомогу індексації також використовуються логи Яндекса. Якщо документ показаний у видачі або на нього є клік з видачі - потрібно залишити його в індексі. Логічно, що і посилання з такого документа повинні вести на хороший документ.

Публікація індексу в пошук

Основна проблема - всі дані обробляються у власному map-reduce YTable, скорочено ить. Сумарний об'єм 50 петабайт.
Повний опис - на Хабре.

проблеми мапредьюса

Мап редьюс використовує батчевие операції. Для того, щоб визначити пріоритетні документи для обходу, Яндекс бере весь контрольний граф, з'єднує з усім призначеним для користувача поведінкою і формує чергу для скачування.

Процес виходить повільним, для побудови індексу - теж.
Стадії батчевие для всієї бази - викладається або дельта або все.

На таких обсягах даних важливо прискорити процедуру доставки індексу. Для цього є швидкі контури. Наприклад Яндекс Новини - завантаження новин в реалтайм і публікація для користувача.

Схема пристрою пошуку

Метапоіска - опитують індекси, які розбиті на шматочки, над кожним пошук і до кожного йде запит.

У кожному дата-центрі зберігається від 2-4 копій індексу.

Зараз все зберігається в оперативці безпосередньо - довго.
Прискорити можна-перевести на ССД.

Як влаштований пошуковий кластер

Мільйони примірників різних програм;

Тисячі типів програм, все спілкуються через TCP / IP;

Все споживають різні ресурси;
Всі програми живуть на серверах;

Все катається за допомогою торрента.

Роздач більше, ніж на Pirate Bay.

Що покращують в конструкції

Яндекс вкладається в розвиток ядра Лінукса.
Заздалегідь планують, як розподіляти програми по серверам.
Хочуть об'єднати пошукові та роботне кластери - потрібно запускати map reduce окремо від пошукових програм. MR їсть диски і мережу, програми витрачають CPU.

Але по CPU можна і балансувати.

Матрикснет

Формула проста :) - містить бінарні ознаки документа і обчислення релеватності в циклі. Для відповіді користувачу використовується до 200 000 ітерацій.

машинне навчання

Індекси для формули підбираються повним перебором;

GPU працюють краще CPU. але вибірки для навчання не поміщаються в пам'ять;

Машинне навчання хочуть використовувати не тільки в деревах вибору. але і в нейронних мережах.

стиснення індексів

Хочуть компресувати послідовність ui32;

В Яндексі використовують пропріетарний алгоритм стиснення і економлять 10-15% оперативної пам'яті.

Питання-відповіді

Проблеми зростання формули ранжирування

Раніше ранжирували на базових пошуках, на кожному віддавали 100 результатів.

Тепер кращі 100 результатів об'єднуються на середньому і ранжуються ще раз більш важкої формулою. Ресурсів займає в 1000 разів менше.

Перша формула ранжирування була розміром в 10 байт, 100 символів.

Тепер одна формула релевантності - 100 мб.
Нереально зареверсінжініріть :)

Олег Федоров. Виклики пошукового хмари

Конспекту немає, все в основному хард по залізу.

Олександр Сафронов. Як знайти кращі відповіді

Мета: розповісти про те, як покращують якість пошуку в Яндексі і які завдання вирішують.

Все залізяки і інфраструктура потрібні для пошуку → ранжирування → поліпшення якості пошуку → профіту → щастя користувача.

як вимірювати

Існує дві групи вимірів:

1. Оцінка по асессорской розмітці

Вчимо машину оцінками людей: запит → топ → оцінки - агрегація → метрика

2. Онлайн експерименти на користувачах, АБ-тести.

Винятки при поліпшенні якості пошуку

Одного разу Яндекс викотив нове ранжування в онлайн, користувачам сподобалося - всі потрібні параметри збільшилися, за винятком одного. Нове ранжування просадив новий блок контексту в нижньому блоці.
Яндекс зберіг нове ранжування і пожертвував кліками і грошима. Ми-ми-ми :)

Що покращувати?

Фактор - це число, яке описує документ, запит або зв'язок документ-запит.

1500 факторів зараз в веб-пошуку - потрібно враховувати багато різних параметрів, щоб відрізняти хороше від поганого в запиті.

види факторів

текстові - покриття, близькість слів, близькість до початку;

запитні - кількість слів;

документні - відвідуваність;

Існують інструменти для оцінки користі кожного фактора.

результат перевірки фактора

Фактор створюють, оцінюють і впроваджують, якщо він позитивний

машинне навчання

Окремо фактори слабкі, тому їх збирають в єдину формулу, яка видасть одне число, за яким і будуть ранжувати документи в пошуку.

Матрикснет

Матрикснет - сукупність алгоритмів машинного навчання, з GBRT - безліччю вирішальних дерев, підібраних так, щоб підсумовуючи значення в листі, отримувати гарне передбачення оцінки релевантності, яке поставив асесор.

У вузлах дерева - розділяють умови, які представляють собою перевірку на числа, наприклад фактор №50> 0,5.

Нейронні мережі

Використовуються, в т.ч. в пошуку.

Нещодавно впровадили фактор на основі алгоритму DSSM - запит і документів у вигляді векторів чисел з плаваючою точкою, косинусное множення яких добре пророкує асессорскую оцінку.

лінгвістика

Сама прикладна задача, розв'язувана за допомогою лінгвістики - розширення запитів.

розширення запитів

Пошукова система повинна розуміти відмінки, роди і т.д. Все це вміють, але зараз є виклики рівня побудувати морфологію для незнайомої мови.

Абревіатури, Транслітом і т.д. Всьому пошук треба вчити.

пов'язані розширення

У прикладі Яндекс набирає асоціативно пов'язане хмара інших слів і словосполучень, інших запитів, які з якимось вагою пов'язані з вихідних запитом.

Якщо документ добре відповідає на запит користувача - швидше за все буде містити слова не тільки запиту, а й пов'язані,

Навіть якщо слів запиту в тексті сторінки немає, то по асоціаціям зрозуміло, що сторінка за темою.

як отримувати

готові словники, але їх мало для Яндекса:

+ машинне навчання для оцінки.

Цікаві поточні і майбутні завдання пошуку

Додавати більше корисних сигналів через фактори;

Удосконалювати машинне навчання і оптимізувати продуктивність формул;