Исследовательская группа из ETH Zurich, UC Berkeley и Stanford University представила WARP — поисковый движок, который на порядок ускоряет мультивекторный поиск информации, не жертвуя качеством выдачи. По данным разработчиков, задержка обработки запросов снизилась в 41 раз по сравнению с эталонной реализацией XTR, а время ответа на типовом бенчмарке упало с более чем 6 секунд до 171 миллисекунды при работе в один поток.
Почему обычный поиск буксует
Мультивекторный поиск стал одним из ключевых направлений развития информационного поиска благодаря трансформерным моделям. В отличие от однавекторного подхода, где запрос и документ сворачиваются в единственный плотный вектор, мультивекторные методы хранят сразу несколько эмбеддингов на документ и на запрос. Это даёт более детальное представление текста и повышает точность поиска, но платить за точность приходится скоростью: множественные вычисления мер сходства резко увеличивают задержку и нагрузку на инфраструктуру.
Классические быстрые алгоритмы поиска, наоборот, часто не улавливают сложные семантические связи внутри документов. Задача, которую поставили перед собой авторы WARP, — сохранить сильные стороны мультивекторного поиска, избавившись от его вычислительной цены, чтобы поиск в реальном времени стал возможен даже для крупных промышленных сервисов.
От ColBERT до WARP
До появления WARP отрасль уже прошла несколько итераций оптимизации. Модель ColBERT ввела механизм «позднего взаимодействия» (late interaction), который сделал вычисление сходства между запросом и документом более экономным. Следом ColBERTv2 и PLAID добавили более агрессивные техники отсечения (pruning) и оптимизированные ядра на C++. Параллельно команда Google DeepMind предложила фреймворк XTR, упростивший процесс скоринга за счёт отказа от отдельного этапа сбора документов. Тем не менее и эти системы оставались узким местом на этапах поиска токенов и подсчёта релевантности документов — задержки и расход ресурсов оставались высокими.
Что нового в WARP
WARP построен поверх XTR-версии ColBERT и вбирает наработки ColBERTv2 и PLAID, добавляя к ним три собственных оптимизации:
- WARPSELECT — метод динамического восполнения оценок сходства, который исключает избыточные вычисления;
- неявная декомпрессия — механизм, сокращающий количество операций с памятью;
- двухэтапная редукция — ускоренная схема подсчёта итоговых оценок документов.
Работает движок так: запросы и документы кодируются с помощью дообученного трансформера T5, который выдаёт эмбеддинги на уровне токенов. Затем WARPSELECT отбирает наиболее релевантные для запроса кластеры документов, избегая повторных расчётов сходства. Вместо явной декомпрессии данных при поиске WARP выполняет неявную — это заметно снижает вычислительные накладные расходы. Финальный подсчёт релевантности идёт в два этапа: сначала агрегируются оценки на уровне токенов, затем они суммируются в оценку документа, а недостающие значения сходства динамически восполняются WARPSELECT.
Результаты
На датасете LoTTE Pooled WARP сократил сквозную задержку запроса в 41 раз относительно эталонной реализации XTR, снизив время ответа с более чем 6 секунд до 171 миллисекунды при однопоточном выполнении. По сравнению с ColBERTv2/PLAID движок показал трёхкратное ускорение. Заметно выиграл и объём индекса — WARP требует в 2–4 раза меньше места для хранения, чем базовые методы, при этом опережая предыдущие модели по качеству поиска на контрольных бенчмарках.
Авторы называют WARP значимым шагом в оптимизации мультивекторного поиска: сочетание новых вычислительных приёмов с уже отработанными архитектурами позволило одновременно поднять скорость и снизить нагрузку на инфраструктуру, не потеряв в точности. Разработчики рассчитывают, что подход откроет дорогу к масштабируемым системам поиска, способным работать в реальном времени на больших объёмах данных.
Источник: MarkTechPost.