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

Open 40d posting dated 3 days ago
Мы разрабатываем ядро поисковой системы — высоконагруженный распределённый рантайм на C++. В эпоху AI он особенно сильно меняется: поиск идёт по нескольким источникам, а при ранжировании появляются тяжёлые LLM. Ищем сильных разработчиков, которые любят распределённые системы, многопоточность и алгоритмы.Разработка логики исполнения поисковых запросов
Вам предстоит проектировать общий механизм исполнения запросов, который устроен как граф стадий: доступ к инвертированному индексу, фильтрация по атрибутам, ранжирование и т. д. Каждая стадия может выполняться отдельным сервисом, чтобы гибко масштабироваться за пределы одного бэкенда. При этом система должна надёжно работать в условиях отказов: корректно деградировать при потере шардов, осознанно выбирать стратегию частичного ответа, балансировать между полнотой результата и скоростью обработки запросов. Развитие технологий поискового рантайма
Мы строим систему, предоставляющую единую модель работы с различными типами поисковых индексов. Сегодня рантайм уже поддерживает классический инвертированный индекс, HNSW-графы, KD-деревья и другие структуры данных. Вы будете развивать эти технологии и внедрять новые, выжимая максимум из доступного железа. И всё это — в многопоточной распределённой системе, от которой уже зависят сотни продуктовых сервисов. Создание SDK и инструментов для работы с рантаймом
Чтобы другие команды решали свои продуктовые задачи, а не погружались в устройство поиска, вам предстоит развивать экосистему рантайма. Вы будете разрабатывать удобный SDK — единый интерфейс для отправки поисковых запросов, который упрощает интеграцию, скрывает распределённую природу системы и её сложность; улучшать средства самостоятельной диагностики — аналог оператора EXPLAIN из классических баз данных, трассировку запросов и логирование ключевых поисковых стадий; и делать многое другое. Проектирование языка поисковых запросов
Сегодня поисковые запросы описываются набором CGI-параметров. В перспективе мы хотим прийти к полноценному языку запросов — и у вас будет возможность спроектировать его с нуля: от грамматики и планировщика до исполнителя. Больше о бэкенде в Яндексе — в канале Yandex for Backend* Уверенно владеете C++ и хотите на нём писать — это основной язык рантайма * Хорошо знаете классические алгоритмы и структуры данных, умеете выбирать их под задачу * Глубоко разбираетесь в многопоточном программировании: знаете модели памяти, примитивы синхронизации, lock-free-структуры и алгоритмы, понимаете природу гонок и умеете их предотвращать * Понимаете устройство Linux: процессы и потоки, управление памятью, сеть * Используете инструменты профилирования и трассировки * Разрабатывали распределённые системы: понимаете, как живут сервисы под нагрузкой и какие бывают точки отказа* Понимаете, как устроены поисковые системы: инвертированные индексы, векторный поиск, генерация кандидатов, ранжирование * Оптимизировали производительность на низком уровне: работали с кешами CPU, использовали SIMD * Работали с системами под высокой нагрузкой и с жёсткими требованиями к времени обработки запросов * Проектировали DSL, языки запросов, парсеры или планировщики исполнения