К тренажеру
ВопросHardmlsd-generalРеальный собес

Как устроить dual encoder retrieval для последовательностей изображений

Нужно индексировать не одиночные картинки, а последовательности дорожных кадров. Как сделать retrieval-модель и embedding index для text-to-scene search?

Короткий ответ

Делаем text encoder и visual/temporal encoder, который агрегирует кадры в segment embedding. Индексируем segment embeddings в ANN/HNSW/ScaNN, а query embedding ищет top-K кандидатов.

Полный разбор

Базовая архитектура - dual encoder. Text encoder превращает запрос в embedding. Visual side обрабатывает temporal segment: можно взять кадры с шагом, прогнать image encoder, затем агрегировать pooling'ом, temporal transformer/GRU или lightweight attention. Результат - один embedding на segment или несколько embeddings на segment, если нужно покрыть разные моменты.

Индекс строится по segment embeddings. Для большого архива нужен ANN: HNSW, IVF/PQ, ScaNN, FAISS-подходы. Важно хранить metadata рядом с embedding: timestamp, route, weather, perception tags, model version, source clip id. Это помогает фильтровать и rerank.

Обучение - contrastive loss на positive text-segment pairs и negatives. Для temporal данных надо решить window size: 5, 10, 20 секунд. Слишком короткое окно теряет контекст, слишком длинное размывает сигнал и увеличивает стоимость.

Теория

Dual encoder хорош для быстрого retrieval, потому что query и documents кодируются независимо. Cross-encoder обычно дороже и подходит для reranking top-K.

Типичные ошибки

  • Индексировать каждый frame без temporal aggregation и получить шум.
  • Забыть про размер индекса, versioning и metadata filters.
  • Предложить cross-encoder как первый retrieval stage на весь архив.

Как отвечать на собеседовании

  • Назови windowing и segment embedding.
  • Разделяй candidate retrieval через ANN и дорогой reranking.