Конспект зустрічі «як влаштований пошук Яндекса про що неможливо прочитати»
обхід інтернету
Яндекс знає кілька трильйонів урлов, обходить кілька мільярдів документів в день. Але все урли не омине ніколи, тому що Інтернет нескінченний.
побудова індексу
За даними ашмановской динаміки пошуку. Яндекс випереджає Гугл майже в два рази по повноті пошукового індексу. Такий відрив став можливий завдяки вдосконаленням - закупівлю нових машин і оптимізації процесів.
Схема побудови пошукової бази
Робот обходить Інтернет і індексує документи. Кладе їх в збережену копію, щоб потім показати на видачу, наприклад. Збережена копія - окрема хеш-таблиця між дата-центрами.
У процесі індексації робот витягує слова з документа і розкладає по Лемма, бачить посилання на інші сторінки і йде далі.
На допомогу індексації також використовуються логи Яндекса. Якщо документ показаний у видачі або на нього є клік з видачі - потрібно залишити його в індексі. Логічно, що і посилання з такого документа повинні вести на хороший документ.
Публікація індексу в пошук
Основна проблема - всі дані обробляються у власному 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 - запит і документів у вигляді векторів чисел з плаваючою точкою, косинусное множення яких добре пророкує асессорскую оцінку.
лінгвістика
Сама прикладна задача, розв'язувана за допомогою лінгвістики - розширення запитів.
розширення запитів
Пошукова система повинна розуміти відмінки, роди і т.д. Все це вміють, але зараз є виклики рівня побудувати морфологію для незнайомої мови.
Абревіатури, Транслітом і т.д. Всьому пошук треба вчити.
пов'язані розширення
У прикладі Яндекс набирає асоціативно пов'язане хмара інших слів і словосполучень, інших запитів, які з якимось вагою пов'язані з вихідних запитом.
Якщо документ добре відповідає на запит користувача - швидше за все буде містити слова не тільки запиту, а й пов'язані,
Навіть якщо слів запиту в тексті сторінки немає, то по асоціаціям зрозуміло, що сторінка за темою.
як отримувати
готові словники, але їх мало для Яндекса:
+ машинне навчання для оцінки.
Цікаві поточні і майбутні завдання пошуку
Додавати більше корисних сигналів через фактори;
Удосконалювати машинне навчання і оптимізувати продуктивність формул;