База данных
Основные таблицы
files
Метаданные файлов: путь, имя, расширение, размер, даты, тип документа, статус обработки, content_hash для инвалидации индекса.
file_contents
Текст по файлам. Для каждого файла — несколько записей с content_type: original, edited, anonymized. Содержит поле content и превью.
document_chunks
Фрагменты текста для эмбеддингов: связь с files и file_contents, порядок чанка, текст, статус эмбеддинга, модель, source_app_id для мультиаппликационности.
vec_embeddings (sqlite-vec)
Виртуальная таблица: chunk_id + вектор эмбеддинга (например, 1024 измерений). Используется для семантического поиска.
content_fts (FTS5)
Полнотекстовый индекс по полю content из file_contents. Синхронизация через триггеры при INSERT/UPDATE/DELETE.
legal_entities
Юридические сущности: статьи, пункты, ссылки на законы, номера дел, даты и т.д. — для поиска по типу «ст. 408», «ГК РФ».
anonymization_mappings
Сопоставления для анонимизации: исходный текст → плейсхолдер ([PERSON_1] и т.п.), тип сущности, позиции — для восстановления текста.
Вспомогательные таблицы
- registered_apps — зарегистрированные приложения (LawMatic Finder, B2, TestOllama) и их модели эмбеддингов
- embedding_metadata — модель и источник для каждого чанка
- indexed_folders — какие папки индексировать, паттерны включения/исключения
- processing_queue — очередь задач (извлечение, эмбеддинги, анонимизация)
- search_history — история поиска для UX
Связи
files 1:N file_contents 1:N document_chunks 1:1 vec_embeddings
│ │
└── content_fts └── embedding_metadata → registered_apps
Совместимость эмбеддингов
При использовании одной БД разными приложениями все должны использовать одну и ту же модель эмбеддингов (например, mxbai-embed-large). В конфиге задаётся default_embedding_model и default_embedding_dimensions.