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

Гибридный поиск

Поиск в Notarium собран из независимых каналов, которые дополняют друг друга. Полнотекстовый (лексический) поиск доступен всегда и без настройки. Семантический поиск по смыслу и учёт связей графа — опциональные слои поверх него. Результаты каналов сливаются в единый рейтинг, а если опциональные слои недоступны — поиск продолжает работать по полному тексту, без ошибки.

Три канала

КаналЧто делаетКогда работает
Лексический (FTS/BM25)Находит точные вхождения слов и фраз, ранжирует по BM25Всегда, без настройки
Семантический (векторы)Находит близкое по смыслу, даже без общих словОпционально (VECTOR_SEARCH)
Граф-бустПодтягивает соседей найденного по [[wiki-ссылкам]]Опционально (GRAPH_BOOST), по умолчанию выключен

Лексический канал — основа: он работает сразу после запуска, ничего доустанавливать не нужно. Семантический добавляет понимание смысла (синонимы, перефразировки), граф-буст — знание о связях.

Как сливаются результаты

Каналы объединяются алгоритмом RRF (Reciprocal Rank Fusion, k=60): каждый канал даёт свой ранжированный список, а RRF складывает их в общий рейтинг по позициям, а не по несопоставимым «сырым» оценкам. Так лексическое совпадение и смысловая близость взвешиваются вместе. Слияние идёт на уровне заметки — по её устойчивому идентификатору.

flowchart LR
  q([Запрос]) --> fts[Лексика · FTS/BM25]
  q --> vec[Семантика · векторы]
  q --> gr[Граф · 1-hop]
  fts --> rrf{RRF-слияние}
  vec --> rrf
  gr --> rrf
  rrf --> res([Результаты])

Если семантика недоступна

Семантический слой может быть выключен или недоступен: не включён VECTOR_SEARCH, не установлен векторный стек, не загрузилась модель или вычисление вектора запроса не уложилось в таймаут. В любом из этих случаев запрос обслуживается лексическим каналом — поиск отвечает всегда и не выдаёт ошибку из-за отсутствия семантики.

Семантика включается по желанию

Векторный поиск тянет тяжёлый нативный стек (~660 МБ на диске) и загружает модель эмбеддингов в память (сотни МБ RAM), поэтому по умолчанию в публичном образе он выключен. Как его включить и какую модель выбрать — в разделе Настройка поиска.

Где вы ищете

  • Spotlight / OmniSearch — быстрый ранжированный переход к заметке. Здесь работает полный гибрид: важна релевантность, а не только точное вхождение слова. См. Поиск и Spotlight.
  • Фильтр ленты (?q= в Ленте) — это лексический фильтр по корпусу: он оставляет заметки, где термины действительно встречаются, и складывается с фильтрами по папкам, тегам и датам.

Индекс и его пересборка

Поисковый индекс — производное знание: он строится из файлов и полностью восстановим ресканом. Один индекс на пространство. Смена модели эмбеддингов — это не миграция, а пересборка векторной части с нуля. Первичное построение векторного индекса на большой базе идёт минутами, а то и часами; на это время интерфейс показывает индикатор «Building search index…», а сам поиск остаётся доступным в лексическом режиме.

Смежные темы: Граф знаний — откуда берётся третий канал, Настройка поиска — включение семантики и выбор тира, File-first — почему индекс восстановим.