Внутренний поиск

Язык буткемпа: Python
Технологии: Catboost, Celery, Django, MongoDB, PostgreSQL, Redis, Tornado

В Яндексе более 100 внутренних продуктов, каждый из которых помогает сотрудникам решать рабочие задачи. Например, в Яндекс Трекере ежедневно создаются тысячи тикетов, во внутренней Wiki постоянно появляются документы с актуальной информацией о жизни в компании и почти каждый день начинают работу новые коллеги. Чтобы в этих сервисах можно было найти самую релевантную информацию, существует Внутренний поиск. Наши задачи чем-то похожи на «большой» поиск, а в чём-то уникальны. Сейчас в нашем индексе почти 200 миллионов документов, а сервисом пользуются десятки тысяч раз в день.****

Стек

Python 3 Основной язык программирования
Django, Celery, Tornado Основные фреймворки
PostgreSQL, MongoDB Базы данных
Search as a Service (SaaS) Базовая технология, которая позволяет сделать полнотекстовый поиск «из коробки» по различным коллекциям документов (используется в «большом» поиске Яндекса и других внутренних сервисах)
YTsaurus map/reduce система https://ytsaurus.tech
Nirvana https://habr.com/ru/companies/yandex/articles/351016
Catboost https://catboost.ai/

Команда

У нас небольшая и дружная команда. Сейчас это 5 человек, располагаемся в Санкт-Петербурге и Ереване. У нас есть опыт работы в распределенной команде, а все наши процессы адаптированы под распределенную команду с минимальным количеством встреч, так что готовы к расширению нашей географии.
Мы решаем самые разнообразные и сложные проблемы, такие как сбор и подготовка документов к индексации, а также придумываем новые факторы и ранжируем найденные документы по релевантности. Помимо технических задач, мы занимаемся ещё и продуктовыми. Не забываем про User Experience (UX) наших пользователей, чтобы они могли не только искать, но и делать это удобно.

Особенности

  • Нашим сервисом регулярно пользуются десятки тысяч пользователей ежедневно (12.5k DAU).
  • Мы на практике применяем Machine Learning (ML). Если тебе интересна эта область, то у нас можно не только с ней познакомится, но и при желании погрузиться в последние тренды, например Natural Language Processing (NLP), Large language model (LLM), YandexGPT.
  • У нас есть опытные специалисты, готовые делиться своими знаниями и навыками. Мы помогаем друг другу расти, ценим командный дух и стремление к развитию. Проводим регулярные мини-митапы, где рассказываем про различные интересные нам темы.
  • В команде открытая атмосфера, а это значит, что если вы захотите проявить инициативу, что-то предложить, или обсудить, то все будут готовы к конструктивному диалогу.

Что нужно принять во внимание

  • У нас есть дежурства — мы сами следим за работоспособностью нашего сервиса, а также отвечаем на запросы пользователей в саппорте. Дежурим в рабочее время. Ночью и по выходным дежурим только в случае форс-мажоров. Новые сотрудники в график дежурств добавляются постепенно — у вас будет время спокойно освоиться и накопить достаточную экспертизу.
  • У нашего проекта давняя история, имеется legacy (активно рефакторим), с которым нужно уметь обращаться, поэтому умение разбираться в чужих исходниках будет большим плюсом.

Вызовы

  • Яндекс появился как поисковая компания, потому наши пользователи ждут от нас, что мы ищем не хуже чем «большой» поиск, а мы прикладываем усилия, чтобы это было действительно так.
  • Сейчас ML во всем мире развивается семимильными шагами. Мы активно следим за всеми новинками и пробуем применять их у нас, делаем это не только ради интереса, но и чтобы делать наш продукт лучше.
  • Так как нашим сервисом ежедневно пользуются наши коллеги, количество документов постоянно растёт, появляются новые источники данных, нам очень важно обеспечивать стабильность и масштабируемость внутреннего поиска.

Дополнительные материалы

  • https://www.youtube.com/watch?v=nSx2PZFE0dI – Геймификация сбора данных для ML во внутренних сервисах / Владислав Савинов (Яндекс)
  • https://www.youtube.com/watch?v=yGjcKr_7X48 – На расстоянии плевка: специфика работы лидом во внутренней разработке / Анастасия Абрашитова (Яндекс)
Предыдущая