Как устроить 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.