Семантический поиск в браузере: ternlight и его 7 мегабайт магии
Забудьте про серверы. Забудьте про API-ключи OpenAI. Забудьте про то, что для поиска по смыслу нужен какой-нибудь тяжелый бэкенд.
Ternlight — это embedding-модель (модель для превращения текста в числовые векторы) размером 7 мегабайт, которая запускается прямо в вашем браузере. Через WASM. Без единого запроса к серверу.
Звучит как магия? Давайте разберёмся, что тут происходит и почему это вообще важно.
Что такое ternlight и зачем он нужен
Ternlight — это компактная модель для создания эмбеддингов (embeddings). Если совсем просто: она берёт текст и превращает его в набор чисел, который компьютер понимает. Это позволяет сравнивать тексты по смыслу, а не по словам.
Классический поиск ищет по ключевым словам. Вы ввели «котик», получили статьи со словом «котик». Семантический поиск понимает, что «мурлыкающее животное» и «кот» — это почти одно и то же.
Раньше для этого требовалось:
- Либо мощный сервер с GPU (Graphics Processing Unit — мощный процессор для сложных вычислений, «мозг для машинного обучения»)
- Либо платный API (того же OpenAI)
- Либо долгая загрузка модели
Ternlight меняет правила игры. Семь мегабайт — это меньше, чем средняя картинка в интернете. Модель весит как одна фотография с котиком. И она работает в браузере.
Почему 7 мегабайт — это революция
Нормальные embedding-модели весят гигабайты. Модель sentence-transformers, которая используется в продакшене, занимает сотни мегабайт. Её нельзя просто так загрузить в браузер.
Ternlight ужали до 7 MB. Это означает:
- Модель загружается за секунды, а не за минуты
- модель можно держать в памяти браузера без проблем
- Она работает на любом устройстве с современным браузером
Как разработчик, я вижу очевидный плюс: можно встроить умный поиск в веб-приложение без бэкенда вообще. Никаких серверов, никакой инфраструктуры, никаких счетов за API.
Как это работает: wasm и inference в браузере
WASM (WebAssembly) — это технология, которая позволяет запускать код, написанный на C, C++, Rust и других языках, прямо в браузере. По сути, это виртуальная машина внутри браузера, которая исполняет код почти с нативной скоростью.
Ternlight скомпилирован в WASM-модуль. Когда вы открываете страницу с демо, браузер:
- Скачивает WASM-модуль (7 MB)
- Загружает модель в память
- Готов к работе
После этого весь inference (вычисление эмбеддингов) происходит локально. Никаких сетевых запросов. Никакой отправки данных куда-либо.
TERNLIGHT: как работает inference
─────────────────────────────────
Браузер ┌─────────────────┐
┌──────────────────────────┐ │ WASM-модуль │
│ Ввод: "avoid prop..." │──▶│ │
│ │ │ ┌───────────┐ │
│ ┌────────────────────┐ │ │ │ Ternlight │ │
│ │ Пользователь │ │ │ │ 7 MB │ │
│ │ печатает запрос │ │ │ └───────────┘ │
│ └────────────────────┘ │ │ │
└──────────────────────────┘ └────────┬────────┘
│
▼
┌─────────────────┐
│ Локальный │
│ inference │
│ (без сети!) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Векторное │
│ пространство │
│ в памяти │
└────────┬────────┘
│
▼
Результат: релевантные
фрагменты кода
Это даёт несколько крутых возможностей:
Приватность. Данные пользователя не уходят в облако. Текст запроса остаётся на устройстве. Это критично для приложений, работающих с конфиденциальной информацией.
Офлайн. После первой загрузки модель работает без интернета. Представьте IDE (Integrated Development Environment — редактор кода, «рабочее место программиста») с умным поиском, которая работает в самолёте.
Скорость. Нет задержки сети. Вычисления в браузере на современном устройстве — это миллисекунды.
Практические сценарии: где это применимо
Демо-версия Ternlight показывает поиск по документации React. Вы вводите что-то вроде «skip a re-render», и получаете релевантные фрагменты — даже если exactных слов нет в тексте.
Но это только верхушка айсберга.
Документация и help-центры. Вместо поиска по ключевым словам — настоящий семантический поиск. Пользователь пишет «как отменить действие», получает ответ про «undo».
Персональные заметки. Приложения для заметок, которые понимают контекст. Вы ищете «встреча с клиентом», находите запись «презентация проекта для Петрова».
Образовательные платформы. Поиск по курсам, который понимает, что «ООП» и «объектно-ориентированное программирование» — это одно и то же.
Код-поиск. IDE или плагины для VS Code (бесплатный редактор кода от Microsoft, «Google Docs для программистов»), которые ищут код по смыслу, а не по синтаксису.
TERNLIGHT: сравнение с другими подходами
────────────────────────────────────────
Ternlight API OpenAI Локальный сервер
(7 MB) (text-embed- (GPU)
ding-3-small)
────────────────────────────────────────────────────────────────────────
Размер 7 MB 0 KB* 500+ MB
██ ░░░░░░░░░░░ ████████████
Оплата $0 $0.0001/1K Электричество
Бесплатно токенов + сервер
Приватность ██████████ ░░░░░░░░░░░ ████████░░
Всё локально Данные в Зависит от
облаке настройки
Задержка ██ ████████░░ ████░░░░░░
<50ms 200-500ms 20-100ms
Простота интеграции ██████████ ████████░░ ██░░░░░░░░
Один скрипт Нужен API Docker + GPU
────────────────────────────────────────────────────────────────────────
* требует интернет-соединения для каждого запроса
Ограничения: где ternlight не подойдёт
Будем честными: 7 MB — это компромисс. Такая компактность означает, что качество эмбеддингов ниже, чем у больших моделей.
Ternlight не заменит OpenAI embeddings для задач с высокими требованиями. Он отлично подходит для:
- Прототипирования
- Небольших проектов
- Задач, где критична приватность
Для enterprise-задач с миллионами документов всё ещё нужны более мощные модели. Но для веб-приложений, документации, персональных инструментов — это более чем достаточно.
Что это значит для веб-разработки
Ternlight показывает направление, в котором движется фронтенд. Мы привыкли к тому, что «умная» функциональность требует сервера. Теперь это не так.
Возможности:
- Полнотекстовый поиск по смыслу без сервера
- Классификация текста в браузере
- Рекомендации на клиенте
- Офлайн-first приложения с умными функциями
Это начало эпохи, когда браузер становится полноценной платформой для ML. Не для обучения моделей, но для inference — вполне.
Посмотрим, как эта технология будет развиваться. Но уже сейчас — если вам нужен семантический поиск для веб-проекта и не хочется тянуть зависимости — попробуйте Ternlight. Семь мегабайт, и вы в деле.
Выводы
Ternlight — это компактный способ добавить семантический поиск прямо в браузер.
Он полезен там, где важны приватность, скорость и отсутствие бэкенда.
Если нужна лёгкая локальная ML-функция для веб-приложения, это сильный кандидат.
Ссылки
- Ternlight на GitHub — репозиторий проекта с кодом и моделью
Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.