Перейти к содержанию

Система поиска

Режимы поиска (SearchMode)

  • fts5Only — полнотекстовый поиск с BM25
  • vectorOnly — семантический (cosine similarity по эмбеддингам)
  • sqliteRegex — LIKE/GLOB по извлечённому тексту
  • hybrid — комбинация FTS5 + Vector с настраиваемыми весами
  • legalEntity — по статьям, пунктам, номерам дел
  • grepFiles — grep по файлам на диске
  • spotlight — macOS Spotlight
  • everywhere — SQLite + grep + Spotlight

Область поиска (SearchScope)

Где искать документы:

Scope Описание
allDatabase Вся база
singleFolder Одна папка (с опцией recursive)
multipleFolders Несколько папок
fileTypes По расширениям (PDF, DOCX и т.д.)
dateRange По датам изменения
combined Комбинация фильтров (AND)

Планируются: теги, тип документа, избранное, коллекции.

Алгоритм гибридного поиска

  1. Парсинг запроса — ключевые слова, номера статей/пунктов, тип (юридический/общий)
  2. Параллельный запуск — FTS5, векторный поиск, при необходимости поиск по legal_entities
  3. Объединение — нормализация scores, веса, дедупликация
  4. Ранжирование — приоритет точного совпадения статьи, затем семантика и ключевые слова
  5. Возврат — результаты с метаданными и ссылками на источники

Формула ранжирования

finalScore =
    (articleExactMatch ? 0.95 : 0)
    + (1 - vectorDistance) * vectorWeight
    + normalizedBM25 * ftsWeight
    + entityMatchBonus
    - recencyPenalty

FTS5 vs LIKE/GLOB

Критерий FTS5 LIKE/GLOB
Скорость Очень быстро (индекс) Медленно (full scan)
Ранжирование BM25 Нет
Стемминг Да Нет
Regex Нет GLOB wildcards

Рекомендация: FTS5 как основной режим, SQLite Regex — для точного regex при необходимости.