Внутренний поиск
Язык буткемпа: 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 – На расстоянии плевка: специфика работы лидом во внутренней разработке / Анастасия Абрашитова (Яндекс)