Семантический поиск в браузере: ternlight и его 7 мегабайт магии

07.07.2026 · 5 мин

Забудьте про серверы. Забудьте про API-ключи OpenAI. Забудьте про то, что для поиска по смыслу нужен какой-нибудь тяжелый бэкенд.

Ternlight — это embedding-модель (модель для превращения текста в числовые векторы) размером 7 мегабайт, которая запускается прямо в вашем браузере. Через WASM. Без единого запроса к серверу.

Звучит как магия? Давайте разберёмся, что тут происходит и почему это вообще важно.

Что такое ternlight и зачем он нужен

Ternlight — это компактная модель для создания эмбеддингов (embeddings). Если совсем просто: она берёт текст и превращает его в набор чисел, который компьютер понимает. Это позволяет сравнивать тексты по смыслу, а не по словам.

Классический поиск ищет по ключевым словам. Вы ввели «котик», получили статьи со словом «котик». Семантический поиск понимает, что «мурлыкающее животное» и «кот» — это почти одно и то же.

Раньше для этого требовалось:

Ternlight меняет правила игры. Семь мегабайт — это меньше, чем средняя картинка в интернете. Модель весит как одна фотография с котиком. И она работает в браузере.

Почему 7 мегабайт — это революция

Нормальные embedding-модели весят гигабайты. Модель sentence-transformers, которая используется в продакшене, занимает сотни мегабайт. Её нельзя просто так загрузить в браузер.

Ternlight ужали до 7 MB. Это означает:

Как разработчик, я вижу очевидный плюс: можно встроить умный поиск в веб-приложение без бэкенда вообще. Никаких серверов, никакой инфраструктуры, никаких счетов за API.

Как это работает: wasm и inference в браузере

WASM (WebAssembly) — это технология, которая позволяет запускать код, написанный на C, C++, Rust и других языках, прямо в браузере. По сути, это виртуальная машина внутри браузера, которая исполняет код почти с нативной скоростью.

Ternlight скомпилирован в WASM-модуль. Когда вы открываете страницу с демо, браузер:

После этого весь inference (вычисление эмбеддингов) происходит локально. Никаких сетевых запросов. Никакой отправки данных куда-либо.

TERNLIGHT: как работает inference
─────────────────────────────────
Браузер                        ┌─────────────────┐
┌──────────────────────────┐   │   WASM-модуль   │
│  Ввод: "avoid prop..."   │──▶│                 │
│                          │   │  ┌───────────┐  │
│  ┌────────────────────┐  │   │  │  Ternlight │  │
│  │  Пользователь      │  │   │  │  7 MB      │  │
│  │  печатает запрос   │  │   │  └───────────┘  │
│  └────────────────────┘  │   │                 │
└──────────────────────────┘   └────────┬────────┘
                                        │
                                        ▼
                               ┌─────────────────┐
                               │  Локальный      │
                               │  inference       │
                               │  (без сети!)     │
                               └────────┬────────┘
                                        │
                                        ▼
                               ┌─────────────────┐
                               │  Векторное      │
                               │  пространство   │
                               │  в памяти       │
                               └────────┬────────┘
                                        │
                                        ▼
                               Результат: релевантные
                               фрагменты кода
Схема работы Ternlight: ввод → WASM → локальные вычисления → результат

Это даёт несколько крутых возможностей:

Приватность. Данные пользователя не уходят в облако. Текст запроса остаётся на устройстве. Это критично для приложений, работающих с конфиденциальной информацией.

Офлайн. После первой загрузки модель работает без интернета. Представьте 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 с альтернативами: локальная модель выигрывает по приватности и стоимости

Ограничения: где ternlight не подойдёт

Будем честными: 7 MB — это компромисс. Такая компактность означает, что качество эмбеддингов ниже, чем у больших моделей.

Ternlight не заменит OpenAI embeddings для задач с высокими требованиями. Он отлично подходит для:

Для enterprise-задач с миллионами документов всё ещё нужны более мощные модели. Но для веб-приложений, документации, персональных инструментов — это более чем достаточно.

Что это значит для веб-разработки

Ternlight показывает направление, в котором движется фронтенд. Мы привыкли к тому, что «умная» функциональность требует сервера. Теперь это не так.

Возможности:

Это начало эпохи, когда браузер становится полноценной платформой для ML. Не для обучения моделей, но для inference — вполне.

Посмотрим, как эта технология будет развиваться. Но уже сейчас — если вам нужен семантический поиск для веб-проекта и не хочется тянуть зависимости — попробуйте Ternlight. Семь мегабайт, и вы в деле.

Выводы

Ternlight — это компактный способ добавить семантический поиск прямо в браузер.

Он полезен там, где важны приватность, скорость и отсутствие бэкенда.

Если нужна лёгкая локальная ML-функция для веб-приложения, это сильный кандидат.

Ссылки

Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.