Требования
Поддерживаемые форматы файлов
| Категория | Форматы | Метод извлечения |
|---|---|---|
| Текстовые | TXT, MD, RTF | Прямое чтение |
| Офисные | DOCX, XLSX, PDF | Библиотеки парсинга |
| Аудио | MP3, WAV, M4A | Whisper / Speech-to-Text |
| Видео | MP4, MOV, AVI | Whisper (аудиодорожка) |
| Специальные | Форматы КонсультантПлюс, Гарант | TBD |
Версии текста для каждого файла
Для каждого файла хранятся несколько версий текста:
- content_original — исходный текст (результат OCR/Whisper/парсинга)
- content_edited — поправленный пользователем (исправления OCR, форматирование)
- content_anonymized — анонимизированный текст + таблица сопоставлений для восстановления
Режимы поиска
Внутри SQLite (извлечённый текст)
| Режим | Источник | Когда использовать |
|---|---|---|
| SQLite FTS5 | content_fts | Основной полнотекстовый поиск с BM25 |
| SQLite Vector | vec_embeddings | Семантический поиск по смыслу |
| SQLite Regex | file_contents.content | Точный regex (LIKE/GLOB) |
| Гибридный | FTS5 + Vector | Комбинация текста и семантики |
| Legal Entity | legal_entities | Поиск по статьям, пунктам, законам |
Вне SQLite
| Режим | Когда использовать |
|---|---|
| grep | Поиск в текстовых файлах (TXT, MD) |
| Spotlight | Быстрый поиск по диску (macOS) |
Комбинированный
- Everywhere — SQLite + grep + Spotlight.
Нефункциональные требования
- Работа на macOS
- SQLite-база переносима между компьютерами
- Интеграция с LLM обязательна (Ollama)
- Синхронизация и жёсткие ограничения на размер БД — вне скоупа