NotariumДокументация
Версия документации: latest
RU

Включение семантического поиска

Полнотекстовый поиск (FTS) в Notarium работает всегда и без настройки. Семантический (векторный) поиск — опциональная возможность: он даёт гибридное ранжирование по смыслу, но тянет тяжёлый нативный стек (onnxruntime + sqlite-vec, ~660 МБ на диске) и локальную модель эмбеддингов, которая докачивается при первом включении (~600 МБ на диске и сотни МБ RAM). Поэтому он выключен по умолчанию и включается осознанно. Как поиск устроен под капотом — в разделе Концепции: поиск.

Два независимых переключателя

Важно различать два уровня — установку и рантайм:

  1. Установка — присутствует ли нативный векторный стек в node_modules. Docker-образ несёт его всегда, поэтому в контейнере включение не требует пересборки. При работе из исходников стандартный make deps его не ставит (локальная установка node_modules на ~660 МБ легче) — для локальной векторной работы нужен make deps-vector.
  2. Рантайм — переменная VECTOR_SEARCH. В опубликованном образе она по умолчанию off.

Для семантики в Docker достаточно включить рантайм-переключатель — стек уже на месте.

Включение

docker run -d --name notarium \
  -p 3000:3000 \
  -v notarium-data:/data \
  -e VECTOR_SEARCH=on \
  docouno/notarium:latest

(Один том /data держит всё состояние — служебную БД, индексы, ваши заметки, артефакты экспорта; то же, что и при обычном запуске, см. Установка. Здесь к нему добавлен только VECTOR_SEARCH=on.)

При первом включении модель по умолчанию (bge-m3) докачивается (~600 МБ на диске) и держит сотни МБ RAM. Индексация идёт в фоне: полнотекстовый поиск доступен сразу, векторы догоняют.

Тиры моделей

Модель выбирается парой EMBED_MODEL + EMBED_DIMENSIONS (размерность обязана совпадать с моделью) — это рантайм-настройка на одном образе, а не отдельная сборка:

ТирПеременныеRAMКогда
offVECTOR_SEARCH=off0Слабая машина или достаточно ключевого поиска. По умолчанию для образа.
compactVECTOR_SEARCH=on, EMBED_MODEL=Xenova/multilingual-e5-small, EMBED_DIMENSIONS=384~120 МБHomelab, небольшой VPS.
fullVECTOR_SEARCH=on (по умолчанию: bge-m3, 1024)~600 МБМощная машина; 100+ языков, длинный контекст.
Асимметричные модели e5

Компактный тир (e5) требует префиксов EMBED_QUERY_PREFIX="query: " и EMBED_PASSAGE_PREFIX="passage: " — забыть их — значит тихо потерять качество поиска. Для симметричной bge-m3 префиксы, наоборот, задавать не нужно.

Ресурсы на тесной машине

На хосте без swap с ~6 ГБ RAM первичная индексация bge-m3 может упереться в память. Два рычага: возьмите compact-тир (e5-small) либо задайте EMBED_CPU_MEM_ARENA=off — это удерживает потребление на ~1.9 ГБ ценой небольшого замедления. Полный список параметров эмбеддинга — в Справочнике.

Откат на полнотекстовый поиск

Если VECTOR_SEARCH=off или нативный стек по какой-то причине не грузится, поиск продолжает работать по полному тексту — без ошибки, результаты выглядят так же. Семантика — это дополнительный канал ранжирования поверх всегда работающего FTS, а не обязательная зависимость. Инстанс без векторов — полностью рабочий инстанс.