Руководство по интеграции
### Введение в LSH-дедупликацию текстовых баз
При обработке сверхкрупных архивов сообщений и логов (от 100k до 500k строк) стандартные методы точного дедупликации (SHA-256) оказываются недостаточными из-за обилия почти-дубликатов, незначительных правок и схожих по смыслу, но разных по форме фраз. Для эффективного сжатия применяется двухэтапный конвейер поиска похожих документов на основе Locality-Sensitive Hashing (LSH), сочетающий алгоритмы MinHash и SimHash.
### 1. Архитектура конвейера LSH
Пайплайн состоит из следующих последовательных шагов:
1. **Нормализация**: Приведение к нижнему регистру, Unicode-нормализация, очистка от ссылок (URLs), эмодзи и разметки. Текст разбивается на символьные или словные шинглы (shingles) размером 3–5 слов.
2. **MinHash (группировка по темам)**:
- Документы векторизуются с использованием $n\_perm = 128$ перестановок.
- Применяется LSH с параметрами $bands = 32$, $rows = 4$.
- Пара бакетов признается кандидатом на сходство при значении коэффициента Жаккара $J(A, B) \ge 0.55$.
3. **SimHash (склейка почти-дубликатов)**:
- Для кандидатов внутри каждого бакета вычисляется 64-битный SimHash.
- Расстояние Хэмминга ($d_H$) используется для точной склейки:
- $d_H \le 3$ — строгое совпадение (автоматическое слияние);
- $d_H \le 4$ — мягкое совпадение (слияние внутри сформированного кластера).
### 2. Спецификация CompactDigest
Каждый верифицированный кластер сжимается в компактную запись `CompactDigest`. Это основной ре-ингест формат для ИИ-агентов. Структура записи:
- **Заголовок**: Тема, период времени, идентификаторы исходных файлов.
- **Ядро (Core Summary)**: 120–200 слов чистой сути без вводных слов и воды.
- **Факты**: Список из 5–10 конкретных фактов с датами, именами, суммами и действиями.
- **Ссылки (Traceability)**: Хэши SHA-256 оригинальных сообщений для трассировки выводов назад к первоисточнику.
### 3. Инкрементальное обновление базы
Для поддержания актуальности базы без полного пересчета применяется incremental-обновление:
1. Новое сообщение проходит фильтр SHA-256 на точное совпадение.
2. Вычисляется MinHash и определяется принадлежность к существующим LSH-бакетам.
3. Внутри бакета вычисляется SimHash и проверяется расстояние Хэмминга до центроида кластера.
4. Если расстояние $\le 4$, сообщение добавляется в кластер, а `CompactDigest` перегенерируется.
5. Если совпадений нет, создается новый кластер-кандидат.
### 4. Критерии качества (DoD)
Итоговая база дайджестов (целевой объем 200–400 записей) должна отвечать требованиям:
- Доля дубликатов: $\le 0.35\%$;
- Коэффициент сжатия: размер базы составляет $\le 7\%$ от первоначального объема;
- Каждая запись содержит полную цепочку обратных ссылок (`trace`).
При обработке сверхкрупных архивов сообщений и логов (от 100k до 500k строк) стандартные методы точного дедупликации (SHA-256) оказываются недостаточными из-за обилия почти-дубликатов, незначительных правок и схожих по смыслу, но разных по форме фраз. Для эффективного сжатия применяется двухэтапный конвейер поиска похожих документов на основе Locality-Sensitive Hashing (LSH), сочетающий алгоритмы MinHash и SimHash.
### 1. Архитектура конвейера LSH
Пайплайн состоит из следующих последовательных шагов:
1. **Нормализация**: Приведение к нижнему регистру, Unicode-нормализация, очистка от ссылок (URLs), эмодзи и разметки. Текст разбивается на символьные или словные шинглы (shingles) размером 3–5 слов.
2. **MinHash (группировка по темам)**:
- Документы векторизуются с использованием $n\_perm = 128$ перестановок.
- Применяется LSH с параметрами $bands = 32$, $rows = 4$.
- Пара бакетов признается кандидатом на сходство при значении коэффициента Жаккара $J(A, B) \ge 0.55$.
3. **SimHash (склейка почти-дубликатов)**:
- Для кандидатов внутри каждого бакета вычисляется 64-битный SimHash.
- Расстояние Хэмминга ($d_H$) используется для точной склейки:
- $d_H \le 3$ — строгое совпадение (автоматическое слияние);
- $d_H \le 4$ — мягкое совпадение (слияние внутри сформированного кластера).
### 2. Спецификация CompactDigest
Каждый верифицированный кластер сжимается в компактную запись `CompactDigest`. Это основной ре-ингест формат для ИИ-агентов. Структура записи:
- **Заголовок**: Тема, период времени, идентификаторы исходных файлов.
- **Ядро (Core Summary)**: 120–200 слов чистой сути без вводных слов и воды.
- **Факты**: Список из 5–10 конкретных фактов с датами, именами, суммами и действиями.
- **Ссылки (Traceability)**: Хэши SHA-256 оригинальных сообщений для трассировки выводов назад к первоисточнику.
### 3. Инкрементальное обновление базы
Для поддержания актуальности базы без полного пересчета применяется incremental-обновление:
1. Новое сообщение проходит фильтр SHA-256 на точное совпадение.
2. Вычисляется MinHash и определяется принадлежность к существующим LSH-бакетам.
3. Внутри бакета вычисляется SimHash и проверяется расстояние Хэмминга до центроида кластера.
4. Если расстояние $\le 4$, сообщение добавляется в кластер, а `CompactDigest` перегенерируется.
5. Если совпадений нет, создается новый кластер-кандидат.
### 4. Критерии качества (DoD)
Итоговая база дайджестов (целевой объем 200–400 записей) должна отвечать требованиям:
- Доля дубликатов: $\le 0.35\%$;
- Коэффициент сжатия: размер базы составляет $\le 7\%$ от первоначального объема;
- Каждая запись содержит полную цепочку обратных ссылок (`trace`).