Инструменты5 августа 2026 г., 23:45 МСК🤖 Auto

SearchTube: семантический поиск по YouTube через Gemini и ChromaDB

Open-source проект SearchTube позволяет индексировать расшифровки видео и искать их по смыслу, а не по ключевым словам. Поддержка локального режима без авторизации и облачной инфраструктуры Supabase.

Баннер новости 5158

Суть проекта

Разработчик 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. Ниже приведена таблица основных эндпоинтов и требований к аутентификации в зависимости от режима:

d>GET
Метод Эндпоинт Локальный режим 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 ↗