gulldan/itmo-ii-chemp

Jupyter Notebook

0

20 commits

updated Jul 17, 2026

See the code

README

Video Retrieval для OKKO

Система семантического поиска по видеоконтенту для онлайн-кинотеатра OKKO. По текстовому запросу на русском или английском языке система находит 5 наиболее релевантных видеофрагментов с точными таймкодами.

Решение создано в рамках Master Hackathon ML 2026 — кейс OKKO.

Команда — Ленивые Голубцы

Участник
Дмитрий Чекушкин
Роман Громов
Захар Ярославцев
Карина Маронова
Максим Клещенок
Рустам Сахабутдинов

Результат

Лучший score на leaderboard: 0.429

  • Последний локальный FinalScore: 0.429 в той же retrieval-family; leaderboard для этого probe ещё не зафиксирован
  • 1892 запроса обработаны за 210 секунд в режиме полного качества
  • Инференс полностью локальный, без обращения к внешним API

Как работает система

flowchart LR
    A[Видео] --> B[Распознавание речи]
    A --> B2[Распознавание текста на экране]
    B --> C[Нарезка на фрагменты]
    C --> D[Векторная индексация]
    D --> E[Многоканальный поиск]
    B2 --> E
    E --> F[Top-5 фрагментов]

Работа системы разделена на два этапа.

Предобработка (выполняется один раз заранее):

  1. Аудиодорожки видео преобразуются в текст моделями распознавания речи — Parakeet TDT для английского языка, GigaAM v3 для русского
  2. С видеокадров считывается текст, отображаемый на экране (субтитры, надписи, титры)
  3. Полученные транскрипты разбиваются на фрагменты длиной 60 секунд с шагом 20 секунд
  4. Каждый фрагмент кодируется в числовой вектор моделью Qwen3-Embedding-4B

Поиск:

  1. Текстовый запрос кодируется в вектор моделью Qwen3-Embedding-4B
  2. Запускается параллельный поиск по нескольким каналам: семантический (по смыслу), лексический (по совпадению слов), по тематике видео и по экранному тексту
  3. Результаты каналов объединяются, дубликаты из одного видео удаляются
  4. Возвращаются 5 лучших фрагментов с таймкодами

Подробное описание архитектуры и каждого компонента: docs/architecture.md.

Материалы

МатериалОписание
Презентация (Figma)Финальная презентация проекта
Презентация (PDF)Локальная версия презентации
Видео-демоДемонстрация работы интерфейса поиска
Интерактивное демоВеб-интерфейс в стиле okko.tv (инструкция запуска)
Исследование данных (EDA)Анализ датасета: 27 тематик, 4466 фрагментов, статистика и рекомендации
Техническая документацияФорматы данных, команды запуска, конфигурации
Архитектура и экспериментыПодробное описание архитектуры, карта компонентов, журнал экспериментов
История версий v1–v4Документация предыдущих итераций разработки

История результатов

Система прошла 5 итераций разработки. Прогресс по leaderboard:

КонфигурацияLeaderboard
Qwen3-Embedding-4B + Parakeet v3 + vLLM + memory + OCR + lexical0.429
Qwen3-Embedding-4B + Parakeet v3 + vLLM0.39552
Qwen3-Embedding-0.6B + Parakeet v30.36124
multilingual-e5 + fixed windows 60s0.26580
Ранний baseline0.15250

Полная таблица с локальными метриками и анализом экспериментов: docs/architecture.md.

Быстрый старт

# Установка зависимостей
uv sync

# Построение индекса (требуется GPU)
uv run python -m v5.cli index \
  --corpus-root dataset/video-rag \
  --prepared-transcripts dataset/audio_text_segments.parquet \
  --transcript-strategy manifest \
  --fragment-generation-strategy fixed_windows \
  --retrieval-backend dense_flat \
  --text-model-name output/models/Qwen3-Embedding-4B \
  --text-encoder-backend vllm \
  --trust-remote-code \
  --text-batch-size 1 \
  --text-max-seq-length 512 \
  --text-device cuda \
  --vllm-gpu-memory-utilization 0.70 \
  --index output/index.pkl

# Поиск
uv run python -m v5.cli search \
  --index output/index.pkl \
  --query "парень раскинул руки на корабле"

# Генерация submission
uv run python -m v5.cli submit \
  --index output/index.pkl \
  --queries dataset/video-rag/test/test.csv \
  --output output/submission.csv

Подробные инструкции и альтернативные конфигурации: docs/v5.md.

Стек технологий

ОбластьТехнологии
ML-моделиQwen3-Embedding-4B, GigaAM v3, Parakeet TDT 0.6B, multilingual-e5
ИнфраструктураPython 3.12, vLLM, PyTorch, sentence-transformers, sherpa-onnx
ДемоReact 19, TypeScript, Vite 8, Tailwind CSS
Инструментыuv, ruff, ty, pytest

Структура репозитория

v5/                 — основной код системы (production)
demo/               — интерактивное веб-демо
presentation/       — презентация и видео-демо
docs/               — техническая документация
eda/                — исследование данных
dataset/            — данные (видео, аудио, транскрипты)
tests/              — тесты
v1/, v2/, v3/, v4/  — предыдущие итерации (архив)

gulldan/itmo-ii-chemp

Jupyter Notebook

0

20 commits

updated Jul 17, 2026

See the code

README

Video Retrieval для OKKO

Система семантического поиска по видеоконтенту для онлайн-кинотеатра OKKO. По текстовому запросу на русском или английском языке система находит 5 наиболее релевантных видеофрагментов с точными таймкодами.

Решение создано в рамках Master Hackathon ML 2026 — кейс OKKO.

Команда — Ленивые Голубцы

Участник
Дмитрий Чекушкин
Роман Громов
Захар Ярославцев
Карина Маронова
Максим Клещенок
Рустам Сахабутдинов

Результат

Лучший score на leaderboard: 0.429

  • Последний локальный FinalScore: 0.429 в той же retrieval-family; leaderboard для этого probe ещё не зафиксирован
  • 1892 запроса обработаны за 210 секунд в режиме полного качества
  • Инференс полностью локальный, без обращения к внешним API

Как работает система

flowchart LR
    A[Видео] --> B[Распознавание речи]
    A --> B2[Распознавание текста на экране]
    B --> C[Нарезка на фрагменты]
    C --> D[Векторная индексация]
    D --> E[Многоканальный поиск]
    B2 --> E
    E --> F[Top-5 фрагментов]

Работа системы разделена на два этапа.

Предобработка (выполняется один раз заранее):

  1. Аудиодорожки видео преобразуются в текст моделями распознавания речи — Parakeet TDT для английского языка, GigaAM v3 для русского
  2. С видеокадров считывается текст, отображаемый на экране (субтитры, надписи, титры)
  3. Полученные транскрипты разбиваются на фрагменты длиной 60 секунд с шагом 20 секунд
  4. Каждый фрагмент кодируется в числовой вектор моделью Qwen3-Embedding-4B

Поиск:

  1. Текстовый запрос кодируется в вектор моделью Qwen3-Embedding-4B
  2. Запускается параллельный поиск по нескольким каналам: семантический (по смыслу), лексический (по совпадению слов), по тематике видео и по экранному тексту
  3. Результаты каналов объединяются, дубликаты из одного видео удаляются
  4. Возвращаются 5 лучших фрагментов с таймкодами

Подробное описание архитектуры и каждого компонента: docs/architecture.md.

Материалы

МатериалОписание
Презентация (Figma)Финальная презентация проекта
Презентация (PDF)Локальная версия презентации
Видео-демоДемонстрация работы интерфейса поиска
Интерактивное демоВеб-интерфейс в стиле okko.tv (инструкция запуска)
Исследование данных (EDA)Анализ датасета: 27 тематик, 4466 фрагментов, статистика и рекомендации
Техническая документацияФорматы данных, команды запуска, конфигурации
Архитектура и экспериментыПодробное описание архитектуры, карта компонентов, журнал экспериментов
История версий v1–v4Документация предыдущих итераций разработки

История результатов

Система прошла 5 итераций разработки. Прогресс по leaderboard:

КонфигурацияLeaderboard
Qwen3-Embedding-4B + Parakeet v3 + vLLM + memory + OCR + lexical0.429
Qwen3-Embedding-4B + Parakeet v3 + vLLM0.39552
Qwen3-Embedding-0.6B + Parakeet v30.36124
multilingual-e5 + fixed windows 60s0.26580
Ранний baseline0.15250

Полная таблица с локальными метриками и анализом экспериментов: docs/architecture.md.

Быстрый старт

# Установка зависимостей
uv sync

# Построение индекса (требуется GPU)
uv run python -m v5.cli index \
  --corpus-root dataset/video-rag \
  --prepared-transcripts dataset/audio_text_segments.parquet \
  --transcript-strategy manifest \
  --fragment-generation-strategy fixed_windows \
  --retrieval-backend dense_flat \
  --text-model-name output/models/Qwen3-Embedding-4B \
  --text-encoder-backend vllm \
  --trust-remote-code \
  --text-batch-size 1 \
  --text-max-seq-length 512 \
  --text-device cuda \
  --vllm-gpu-memory-utilization 0.70 \
  --index output/index.pkl

# Поиск
uv run python -m v5.cli search \
  --index output/index.pkl \
  --query "парень раскинул руки на корабле"

# Генерация submission
uv run python -m v5.cli submit \
  --index output/index.pkl \
  --queries dataset/video-rag/test/test.csv \
  --output output/submission.csv

Подробные инструкции и альтернативные конфигурации: docs/v5.md.

Стек технологий

ОбластьТехнологии
ML-моделиQwen3-Embedding-4B, GigaAM v3, Parakeet TDT 0.6B, multilingual-e5
ИнфраструктураPython 3.12, vLLM, PyTorch, sentence-transformers, sherpa-onnx
ДемоReact 19, TypeScript, Vite 8, Tailwind CSS
Инструментыuv, ruff, ty, pytest

Структура репозитория

v5/                 — основной код системы (production)
demo/               — интерактивное веб-демо
presentation/       — презентация и видео-демо
docs/               — техническая документация
eda/                — исследование данных
dataset/            — данные (видео, аудио, транскрипты)
tests/              — тесты
v1/, v2/, v3/, v4/  — предыдущие итерации (архив)