Архитектура
Высокоуровневая схема
┌─────────────────────────────────────────────────────────────────────┐
│ LawMatic Finder │
├─────────────────────────────────────────────────────────────────────┤
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────────────┐ │
│ │ File Browser │ │ Search Panel │ │ AI Chat Panel │ │
│ │ (SwiftUI) │ │ (SwiftUI) │ │ (SwiftUI) │ │
│ └───────┬────────┘ └───────┬────────┘ └───────────┬────────────┘ │
│ │ │ │ │
│ ┌───────▼───────────────────▼────────────────────────▼────────────┐ │
│ │ AppCoordinator │ │
│ └───────┬──────────────────┬─────────────────────┬────────────────┘ │
│ │ │ │ │
│ ┌───────▼──────┐ ┌────────▼────────┐ ┌────────▼────────────────┐ │
│ │ FileManager │ │ SearchCoordinator│ │ RAGEngine │ │
│ │ Service │ │ │ │ (retrieval + LLM) │ │
│ └───────┬──────┘ └────────┬────────┘ └────────┬────────────────┘ │
│ │ │ │ │
│ ┌───────▼──────────────────▼─────────────────────▼────────────────┐ │
│ │ Data Layer │ │
│ │ SQLite Core │ FTS5 │ sqlite-vec (векторный поиск) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ External: Ollama (embeddings + LLM), Whisper (audio) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
Основные модули
| Модуль |
Ответственность |
| FileManagerService |
Навигация, операции с файлами, мониторинг изменений |
| ContentExtractor |
Извлечение текста из разных форматов |
| IndexingCoordinator |
Очередь индексации, фоновая обработка |
| SearchCoordinator |
Объединение FTS5, векторного, grep, Spotlight |
| AnonymizationEngine |
Анонимизация и деанонимизация текста |
| RAGEngine |
Retrieval-Augmented Generation для AI-ответов |
| DatabaseManager |
Единый интерфейс к SQLite |
Внешние сервисы
- Ollama — локальные эмбеддинги и LLM (mxbai-embed-large, llama3 и др.)
- Whisper — транскрипция аудио и видео