Суть проекта
Разработчик GhostPeony представил SearchTube — инструмент для семантического поиска по субтитрам YouTube. В отличие от стандартного поиска, система понимает контекст запроса, находит релевантные фрагменты и возвращает прямые ссылки на таймкоды. Проект поддерживает два режима работы: локальный (для частных пользователей) и облачный (для многопользовательских сред).
Техническая архитектура и режимы
Приложение построено на стеке Python (backend) и Node.js (frontend). Ключевая особенность — гибкая настройка хранения данных и аутентификации. Локальный режим использует ChromaDB для хранения векторов и не требует внешних сервисов. Облачный режим интегрируется с Supabase (Postgres + pgvector) и поддерживает аутентификацию через Google/GitHub.
Для генерации эмбеддингов по умолчанию используется модель models/gemini-embedding-001 с размерностью вектора 768. Для генерации ответов (опционально) применяется gemini-3.1-flash-lite.
Конфигурация и API
Backend работает на порту 8080 и предоставляет REST API. Ниже приведена таблица основных эндпоинтов и требований к аутентификации в зависимости от режима:
| Метод | Эндпоинт | Локальный режим | Supabase режим | Описание |
|---|---|---|---|---|
| GET | /api/config | Нет | Нет | Получение конфигурации сервера |
| /api/library | Нет | Да | Список проиндексированных каналов/плейлистов | |
| POST | /api/ingest | Нет | Да | Индексация видео (SSE) |
| POST | /api/search | Нет | Да | Семантический поиск по субтитрам |
| GET | /api/transcript/{video_id} | Нет | Да | Скачивание SRT файла |
Управление ключами и безопасность
Проект поддерживает три режима работы с API-ключами Gemini:
- Server: Ключ хранится на сервере (для Supabase режима).
- BYOK (Bring Your Own Key): Ключ хранится в localStorage браузера (локальный режим).
- Hybrid: Комбинированный режим.
В облачном режиме ключи могут храниться в зашифрованном виде. Для локального режима достаточно создать файл .env.local с переменной GEMINI_API_KEY.
Оценка качества и развитие
Разработчики предусмотрели встроенный инструмент для оценки качества поиска (Retrieval eval harness). Перед сменой модели эмбеддингов рекомендуется запускать скрипт python scripts/evaluate_retrieval.py. Важно: смена размерности векторов (например, с 768 на 1536) требует миграции схемы базы данных и полной переиндексации контента.
Проект распространяется под лицензией MIT. Установка доступна через Docker или вручную через pip/npm.
Источник: Github ↗
