Локальный RAG для видео: индексация, OCR и поиск без облаков | AiManual
AiManual Logo Ai / Manual.
05 Янв 2026 Инструмент

Локальный RAG для видео: с нуля до поиска за 15 минут

Запустите RAG для видео локально: Whisper для транскрипции, OCR для текста на кадрах, векторный поиск. API и примеры кода.

Зачем городить свой RAG для видео?

Вы загружаете конференцию в ChatGPT. Или корпоративный тренинг в Gemini. Или архив вебинаров в Claude. Все хотят ваши данные. Все обещают безопасность. А вы в итоге платите за каждый запрос и молитесь, чтобы видео с коммерческой тайной не утекло в обучающую выборку.

Локальный RAG для видео решает три проблемы одним махом:

  • Приватность — видео никуда не уходят с вашего железа
  • Контроль — сами решаете, какие модели использовать и как хранить
  • Экономия — платите только за электричество и железо

Но есть нюанс. Собрать такой пайплайн с нуля — это неделя кодинга, отладки FFmpeg и борьбы с памятью. Я знаю, я через это прошел.

Что должно уметь решение для видео-RAG

Простой транскрипции через Whisper недостаточно. Видео — это мультимодальный формат. Текст в кадре (слайды презентаций, интерфейсы, субтитры) часто содержит ключевую информацию, которую аудио не передает.

КомпонентЗачем нуженЧто использовать
Извлечение кадровПолучаем ключевые слайдыFFmpeg, OpenCV
Аудио транскрипцияПревращаем речь в текстWhisper.cpp, faster-whisper
OCR кадровЧитаем текст со слайдовEasyOCR, PaddleOCR
ВекторизацияГотовимся к семантическому поискуsentence-transformers
ХранениеИщем похожие фрагментыQdrant, Chroma, FAISS

Собрать все это воедино — задача нетривиальная. Особенно если хотите API, а не скрипт на коленке.

Готовое решение: Video-RAG-API

Недавно наткнулся на проект, который делает именно это. Он берет видеофайл, прогоняет через весь пайплайн и выдает JSON с метаданными, транскрипцией, OCR-текстом и эмбеддингами. Все локально. Все в Docker.

💡
Это не коммерческий продукт, а open-source инструмент. Можно развернуть на своем сервере или даже на ноутбуке с CUDA.

1Что умеет API

Основной эндпоинт — /process-video. Отправляете видео, получаете структурированные данные:

{
  "video_id": "conf_2024_keynote.mp4",
  "metadata": {
    "duration": 3542,
    "resolution": "1920x1080",
    "fps": 30
  },
  "transcription": [
    {
      "start": 0.0,
      "end": 5.2,
      "text": "Добро пожаловать на нашу конференцию...",
      "embedding": [0.123, -0.456, ...]
    }
  ],
  "frames": [
    {
      "timestamp": 120.5,
      "ocr_text": "Q1 Results: Revenue +15% YoY",
      "embedding": [0.789, 0.012, ...]
    }
  ]
}

Ключевое здесь — два типа эмбеддингов: для аудиотранскрипции и для текста с кадров. Это позволяет искать и по тому, что говорили, и по тому, что показывали.

2Как это работает под капотом

Архитектура простая, но эффективная:

  1. Видео загружается через REST API или WebSocket
  2. FFmpeg извлекает аудиодорожку и ключевые кадры (1 кадр в секунду или по смене сцены)
  3. Аудио идет в Whisper (можно выбрать модель: tiny, base, small)
  4. Кадры обрабатываются OCR-движком (EasyOCR по умолчанию)
  5. Тексты (и транскрипция, и OCR) векторизуются через модель типа all-MiniLM-L6-v2
  6. Все сохраняется в векторную БД с привязкой к временным меткам

Самое приятное — настройка через конфиг. Хотите другой OCR? Меняете одну строку. Нужна другая модель для эмбеддингов? Правите конфигурацию.

Запускаем за 15 минут

Docker-compose файл — ваше спасение. Качаете репозиторий, правите пару переменных окружения и запускаете:

git clone https://github.com/.../video-rag-api.git
cd video-rag-api
# Редактируем docker-compose.yml, если нужно
# Например, меняем модель Whisper с base на small
docker-compose up -d

Через пару минут (зависит от скорости интернета и скачивания моделей) получаете работающий API на порту 8000.

Тестовый запрос через curl:

curl -X POST http://localhost:8000/process-video \
  -F \"video=@presentation.mp4\" \
  -H \"Content-Type: multipart/form-data\" \
  -o result.json

Предупреждение: первый запуск всегда долгий. Модели Whisper и эмбеддингов весят гигабайты. Но они кэшируются локально, так что второй раз будет быстрее.

3Интеграция с вашей RAG-системой

Допустим, у вас уже есть локальная RAG-система. Добавить видео-поддержку теперь просто:

import requests
import json
from typing import List

def index_video(video_path: str, collection_name: str):
    # Отправляем видео в API
    with open(video_path, 'rb') as f:
        files = {'video': f}
        response = requests.post('http://localhost:8000/process-video', 
                                 files=files)
    
    result = response.json()
    
    # Подготавливаем данные для векторной БД
    chunks = []
    
    # Добавляем транскрипцию
    for segment in result['transcription']:
        chunks.append({
            'text': segment['text'],
            'embedding': segment['embedding'],
            'metadata': {
                'type': 'audio',
                'start': segment['start'],
                'end': segment['end'],
                'video_id': result['video_id']
            }
        })
    
    # Добавляем OCR-текст с кадров
    for frame in result['frames']:
        if frame['ocr_text']:
            chunks.append({
                'text': frame['ocr_text'],
                'embedding': frame['embedding'],
                'metadata': {
                    'type': 'visual',
                    'timestamp': frame['timestamp'],
                    'video_id': result['video_id']
                }
            })
    
    # Загружаем в вашу векторную БД (например, Qdrant или Chroma)
    # ... ваш код для upsert в коллекцию
    
    return len(chunks)

Теперь можете искать по видео как по обычным документам. Спросите \"Что говорили про квартальные результаты?\" — получите временные метки и контекст.

Альтернативы: с чем сравнивать

Есть несколько подходов к видео-RAG. Каждый со своими тараканами.

ПодходПлюсыМинусыКогда выбирать
Облачные API (AssemblyAI, Deepgram)Простота, точность, масштабированиеДорого, данные уходят в облакоРазовые задачи, нет требований к приватности
Самописный пайплайнПолный контроль, гибкостьМесяц разработки, вечная отладкаЕсть команда и время, нужна кастомизация
Video-RAG-API (этот проект)Локальность, готовый API, OCR+аудиоТребует железа, настройка под себяПриватные видеоархивы, корпоративное использование
Мультимодальные LLM (Qwen-VL)Понимает контекст кадра целикомМедленно, жрет память, сложно локальноАнализ сложных визуальных сцен

Если интересны другие мультимодальные подходы, посмотрите обзор мультимодального RAG. Там есть про видеоанализ через большие модели.

Где это пригодится на практике

Сценарии использования шире, чем кажется:

  • Корпоративные тренинг-архивы — сотрудники ищут конкретные моменты в сотнях часов записей
  • Юридические видеодоказательства — поиск по стенограммам и тексту в кадре
  • Образовательные платформы — студенты находят нужную тему в лекциях
  • Медиа-архивы — журналисты ищут интервью по цитатам
  • Личные видеоархивы — семейные записи с возможностью поиска
💡
Особенно круто работает с презентациями. OCR выхватывает заголовки слайдов, Whisper транскрибирует речь — получается двойной индекс для поиска.

Ограничения и подводные камни

Идеальных решений не бывает. Вот что может пойти не так:

  • Требования к железу — Whisper small требует 2-4GB GPU памяти. На CPU будет медленно.
  • Качество OCR — зависит от шрифтов, контраста и языка. С русским курсивом могут быть проблемы.
  • <\/li>
  • Точность временных меток — Whisper иногда ошибается на доли секунды, особенно с фоновым шумом.
  • Длинные видео — часовая запись создаст тысячи чанков. Нужна хорошая векторная БД.

Для сложных документов с таблицами и схемами лучше использовать специализированные OCR-инструменты. Посмотрите сравнение OCR для агентов — там есть варианты для структурированных данных.

Кому подойдет это решение

Video-RAG-API — не для всех. Но если вы попадаете в одну из категорий ниже, стоит попробовать:

  • Разработчики корпоративных систем с требованиями к приватности данных
  • Исследователи, работающие с видеоархивами (социология, лингвистика)
  • Небольшие медиа-компании, которые хотят оцифровать свой архив
  • Образовательные проекты с локальным развертыванием
  • Любой, кто устал платить за облачные транскрипции

Если же вам нужен просто суммаризатор YouTube-роликов, возможно, проще использовать локальный YouTube-суммаризатор. Он проще и быстрее.

Что дальше? Доработки и кастомизация

Готовый API — это только начало. Вот что можно добавить:

  1. Распознавание лиц — индексация по тому, кто говорит
  2. Детекция сцен — автоматическое разделение на главы
  3. Мультиязычность — поддержка транскрипции на 100+ языках
  4. Визуальные эмбеддинги — поиск по похожим кадрам
  5. Интеграция с существующими RAG-системами типа Ragex для анализа кода

Главное преимущество open-source — можете форкнуть и допилить под свои нужды. Нужен другой OCR-движок? Замените EasyOCR на что-то вроде Tesseract. Хотите другую модель эмбеддингов? Обновите конфигурацию.

Через год, возможно, появятся модели, которые делают все это в один проход. Но сегодня Video-RAG-API — один из самых простых способов заставить ваш компьютер понимать, что происходит в видео. Без отправки данных в облако. Без ежемесячных счетов. И с возможностью поиска не только по словам, но и по тому, что было на экране.

Попробуйте. Первый видеофайл обработаете за вечер. А когда накопите терабайты индексированного видео, вспомните эту статью.