Просмотр вакансии

Сегодня 07-07-2026 00:57
06.07.2026, 15:27

Разработчик поискового рантайма (C++)

Работодатель: Яндекс

Яндекс

Город: Москва
Занятость: Полная, 5/2
Опыт работы: Более 6 лет

SaaS (Search-as-a-Service) — общая поисковая платформа в Яндексе. Мы создаём технологии, благодаря которым другие команды получают готовый полнотекстовый поиск, key-value-хранилище (eventually consistent) или kNN — и не тратят месяцы на разработку и поддержку собственного решения. Сегодня платформой пользуются сотни сервисов компании, суммарный объём поисковых индексов исчисляется петабайтами, а суммарный RPS — несколькими миллионами.

Поисковый рантайм — сердце SaaS. Это сложная распределённая система, которая принимает и маршрутизирует запросы, собирает документы из разных источников, фильтрует и ранжирует их в несколько стадий и возвращает результат пользователю. Всё это — под высоким RPS и в условиях частичных отказов: потери шарда, деградации соседних сервисов или выхода из строя целого дата-центра. От рантайма напрямую зависит, насколько быстро работает поиск и сколько ресурсов уходит на обработку каждого запроса.

При этом рантайм должен быть универсальным: поддерживать разные типы поисковых структур данных и стадии исполнения запроса. Главная сложность — совместить гибкость и эффективность, чтобы новые структуры и стадии внедрялись без существенного изменения кодовой базы, но при этом каждый запрос укладывался в жёсткие требования по времени и ресурсам.

С развитием AI поиск переживает тихую революцию: модели ранжирования становятся тяжелее, появляются новые источники данных и подходы к отбору кандидатов на основе LLM, а сам поиск становится фундаментом для RAG-систем и AI-агентов. Это диктует новые требования к рантайму и открывает множество технических задач.

Впереди — большая инженерная работа. Сейчас удачный момент, чтобы присоединиться к нам и повлиять на то, каким станет рантайм.

Какие задачи вас ждут

Разработка логики исполнения поисковых запросов
Вам предстоит проектировать общий механизм исполнения запросов, который устроен как граф стадий: доступ к инвертированному индексу, фильтрация по атрибутам, ранжирование и т. д. Каждая стадия может выполняться отдельным сервисом, чтобы гибко масштабироваться за пределы одного бэкенда. При этом система должна надёжно работать в условиях отказов: корректно деградировать при потере шардов, осознанно выбирать стратегию частичного ответа, балансировать между полнотой результата и скоростью обработки запросов.

Развитие технологий поискового рантайма
Мы строим систему, предоставляющую единую модель работы с различными типами поисковых индексов. Сегодня рантайм уже поддерживает классический инвертированный индекс, HNSW-графы, KD-деревья и другие структуры данных. Вы будете развивать эти технологии и внедрять новые, выжимая максимум из доступного железа. И всё это — в многопоточной распределённой системе, от которой уже зависят сотни продуктовых сервисов.

Создание SDK и инструментов для работы с рантаймом
Чтобы другие команды решали свои продуктовые задачи, а не погружались в устройство поиска, вам предстоит развивать экосистему рантайма. Вы будете разрабатывать удобный SDK — единый интерфейс для отправки поисковых запросов, который упрощает интеграцию, скрывает распределённую природу системы и её сложность; улучшать средства самостоятельной диагностики — аналог оператора EXPLAIN из классических баз данных, трассировку запросов и логирование ключевых поисковых стадий; и делать многое другое.

Проектирование языка поисковых запросов
Сегодня поисковые запросы описываются набором CGI-параметров. В перспективе мы хотим прийти к полноценному языку запросов — и у вас будет возможность спроектировать его с нуля: от грамматики и планировщика до исполнителя.

Мы ждём, что вы

  • Уверенно владеете C++ и хотите на нём писать — это основной язык рантайма
  • Хорошо знаете классические алгоритмы и структуры данных, умеете выбирать их под задачу
  • Глубоко разбираетесь в многопоточном программировании: знаете модели памяти, примитивы синхронизации, lock-free-структуры и алгоритмы, понимаете природу гонок и умеете их предотвращать
  • Понимаете устройство Linux: процессы и потоки, управление памятью, сеть
  • Используете инструменты профилирования и трассировки
  • Разрабатывали распределённые системы: понимаете, как живут сервисы под нагрузкой и какие бывают точки отказа

Будет плюсом, если вы

  • Понимаете, как устроены поисковые системы: инвертированные индексы, векторный поиск, генерация кандидатов, ранжирование
  • Оптимизировали производительность на низком уровне: работали с кешами CPU, использовали SIMD
  • Работали с системами под высокой нагрузкой и с жёсткими требованиями к времени обработки запросов
  • Проектировали DSL, языки запросов, парсеры или планировщики исполнения

Адрес: Москва, улица Льва Толстого, 16

 

Откликнуться на вакансию

Дата
06.07 07.07
USD
2.905 2.904
EUR
3.3156 3.3147
RUB
3.7314 3.7287
CNY
4.2863 4.2787
CHF
3.6082 3.6039
GBP
3.8754 3.8723
PLN
7.724 7.7275
Минск
Ночью: °C
Утром: °C
Днем: °C
Вечером: °C

Сейчас: Скорость ветра: 5-7 м/c Атм. давление: 758 мм.рт.ст Влажность: 90%

Спецпредложения