v0.0.57: LLM обрабатывает ВСЕ данные — пофайловый чанкинг (6000/overlap 500), параллельность 4, дедуп+верификация против полного текста
Deploy drhider / validate (push) Canceled after 0s
Deploy drhider / validate (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# 2026-08-20 — LLM обрабатывает ВСЕ данные (чанкинг) — v0.0.57
|
||||
|
||||
## Задача
|
||||
Пользователь: LLM должен обрабатывать ВСЕ данные, а не урезку 8000 символов.
|
||||
Ветка сохранения пре-LLM конфигурации: `save-pre-llm-v0.0.56` (указывает на прежний master).
|
||||
|
||||
## Изменения (drhider/scanner.py)
|
||||
`scan_llm_ner` переписан:
|
||||
- Убраны глобальные урезки `t[:3000]` и `combined[:8000]`.
|
||||
- Каждый файл обрабатывается ПОЛНОСТЬЮ: split_into_chunks(6000, overlap 500).
|
||||
- Чанки файла — параллельно (ThreadPoolExecutor, concurrency 4), крупные файлы вперёд.
|
||||
- Для каждого чанка — полный промпт + «Already captured by regex» (mapping).
|
||||
- Дедуп найденного через normalize_entity (пробелы/регистр/кавычки/тире/ё).
|
||||
- Верификация _verify_entity против ПОЛНОГО текста файла — отсекает галлюцинации LLM.
|
||||
- regex-найденное не дублируется.
|
||||
|
||||
Новые хелперы (scanner.py):
|
||||
- split_into_chunks(text, size=6000, overlap=500) — границы \n\n,\n,. ,? ,! ,; ,, ," "
|
||||
- normalize_entity(s) — канонизация для дедупа
|
||||
- _verify_entity(value, full_text) — точное/нормализованное вхождение
|
||||
- _build_llm_prompt(text, already_found)
|
||||
- _call_llm(text, llm_client) — вызов + разбор JSON (пусто при ошибке)
|
||||
|
||||
Параметры верхнего уровня (легко тюнить):
|
||||
- _CHUNK_SIZE = 6000, _CHUNK_OVERLAP = 500, _LLM_CONCURRENCY = 4
|
||||
|
||||
## Ожидаемый эффект
|
||||
- LLM покрывает все файлы целиком (в т.ч. хвосты и таблицы после 3000 символа).
|
||||
- Время на ~300 файлов ≈ 3.5 мин при 4 потоках (~390 вызовов).
|
||||
- Меньше галлюцинаций (верификация).
|
||||
|
||||
## Проверка
|
||||
- py_compile OK.
|
||||
- test_scanner 20/20.
|
||||
- Юнит хелперов: split (12К→4 чанка ≤6100), verify (галлюцинация→False), normalize OK.
|
||||
- Все 106 тестов OK.
|
||||
- VERSION 0.0.57.
|
||||
|
||||
## Примечание
|
||||
Реальная проверка LLM-покрытия и времени — на наборе T/ при прогоне на проде/локально
|
||||
с ключом LLM (локально ключ отсутствует → LLM не выполняется, только regex).
|
||||
Reference in New Issue
Block a user