А что, если бы вы могли встраивать сложные модели ранжирования на основе машинного обучения непосредственно в свой поисковый движок, полностью обходя внешние сервисы вывода и связанную с ними сетевую задержку? Именно этого добились разработчики Swiggy для своих подсказок автозаполнения, выйдя за рамки статических правил, чтобы обеспечить значительно более релевантные результаты со скоростью менее миллисекунды. Речь идет не просто о генерации AI-кода; это фундаментальное переосмысление того, как AI-инструменты могут быть интегрированы в основной пользовательский опыт, делая его быстрее и умнее.
Долгое время создание действительно интеллектуальной системы автозаполнения казалось для Software Developers компромиссом. Вы могли получить молниеносные ответы, полагаясь на простое лексическое сопоставление и набор тщательно настроенных вручную статических правил. Или же вы могли стремиться к сложной релевантности с помощью машинного обучения, но это обычно означало внедрение дополнительных сервисов, сетевых переходов и неизбежных накладных расходов на задержку, связанных с внешним движком вывода. Эта задержка особенно болезненна для автозаполнения, где каждый ввод символа требует мгновенного, релевантного предложения.
Этот традиционный подход часто заставлял разработчиков идти на компромиссы. Инженерная команда могла проводить недели, даже месяцы, совершенствуя эвристические правила, настраивая веса и поддерживая сложную логику для обработки крайних случаев — хрупкий и трудоемкий процесс. Когда ML-модель *все же* внедрялась, она обычно находилась вне основного поискового движка, требуя собственного конвейера развертывания, соображений масштабирования и API-эндпоинта. Это добавляло значительную архитектурную сложность, часто превращая то, что должно быть простым поисковым запросом, в проблему оркестрации нескольких сервисов.
Влияние на повседневную работу Software Developer было очевидным: больше инфраструктуры для управления, больше потенциальных точек отказа и меньше времени, посвященного основной проблеме релевантности. Прорыв Swiggy полностью обходит эту дилемму. Встраивая модель ранжирования, основанную на обучении, непосредственно в OpenSearch, они свели традиционный двухэтапный процесс «извлечение, затем ранжирование» к высокооптимизированной внутренней операции. Это означает, что те же мощные модели, которые используются для продвинутого ранжирования, теперь могут выполняться одновременно с первоначальной генерацией кандидатов внутри самого OpenSearch.
Для Software Developer это означает упрощенную архитектуру, драматическое снижение задержки и возможность итеративно работать с моделями машинного обучения и развертывать их с той же гибкостью, которую они могут применять к конфигурациям поисковых индексов. Это позволяет им создавать действительно адаптивные и интеллектуальные поисковые возможности без типичного архитектурного багажа.
Рассмотрим типичный рабочий процесс Software Developer, которому поручено повысить релевантность автозаполнения: До интеграции ML непосредственно в OpenSearch: Разработчик настраивал OpenSearch для первоначального лексического извлечения, обеспечивая быструю генерацию кандидатов. Если они хотели применить машинное обучение, им приходилось создавать отдельный сервис, возможно, приложение на Python, хостящее модель XGBoost. Этот сервис получал первоначальных кандидатов, запрашивал feature store для получения сигналов в реальном времени, применял ML-модель и переранжировал результаты перед их отправкой обратно. Этот полный цикл, включая сетевую задержку и время вывода, мог легко добавить 20-50 миллисекунд на ввод символа — достаточно, чтобы пользователь почувствовал вялость.
Время тратилось на управление двумя отдельными системами и сетевым контрактом между ними. После интеграции ML непосредственно в OpenSearch с LTR: Разработчик все еще вместе

