feat(ops): замер качества детекции — первые честные цифры
О качестве проверки мы до сих пор знали только «механизм жив»: находит подброшенный фрагмент. Продукт при этом продаёт процент заимствований, за который никто не ручался — неизвестно было ни сколько списываний система пропускает, ни как часто обвиняет невиновных. Бенчмарк делает из документов корпуса «студенческие работы» четырёх видов и гоняет их через настоящий путь L1. Первый замер на проде: дословно 100% найдено лёгкий рерайт 100% найдено сильный рерайт 0% — это работа L3/L4, не L1 оригинал 0% ложных обвинений То есть основа работает как задумано. Показательно другое: из 20 взятых документов в замер попали 8 — у остальных нет полного текста нужной длины. Узкое место не алгоритм, а глубина корпуса. Запускать после изменения порогов и параметров winnowing — иначе непонятно, улучшение сделано или ухудшение. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -214,6 +214,24 @@ Identity (Universal Auth) и генерирует `.env` заново (`infisica
|
||||
|
||||
## 11. Качество и тесты
|
||||
|
||||
**Замер качества детекции** — [`scripts/ops/detection_benchmark.py`](../scripts/ops/detection_benchmark.py).
|
||||
Делает из документов корпуса «студенческие работы» (дословная копия, лёгкий и
|
||||
сильный рерайт, плюс заведомо оригинальный текст) и прогоняет через настоящий
|
||||
путь L1. Первый замер, 05.09.2026:
|
||||
|
||||
| Случай | Доля найденных |
|
||||
|--------|---------------:|
|
||||
| дословно | 100% |
|
||||
| лёгкий рерайт (выброшено каждое 10-е слово) | 100% |
|
||||
| сильный рерайт (каждое 3-е слово) | 0% — задача L3/L4, не L1 |
|
||||
| оригинальный текст | 0% ложных обвинений |
|
||||
|
||||
Запускать после изменения порогов (`EXACT_FRAGMENT_THRESHOLD`), параметров
|
||||
winnowing и плотности отпечатков: без этих чисел непонятно, улучшение сделано
|
||||
или ухудшение. Ограничение замера: в выборку попадают только документы с
|
||||
реальной глубиной (>800 отпечатков) — по документам с одной аннотацией мерить
|
||||
нечего, и это само по себе показатель состояния корпуса.
|
||||
|
||||
- **113 юнит-тестов** (pytest, per-service) на чистую логику L1-L4/скоринг/фрагменты/
|
||||
ГОСТ/библиография; инфра замокана или не нужна. Запуск: `make test`.
|
||||
- **Гейты CI**: ruff (весь Python) + mypy (доменная логика) + тесты — блокируют деплой.
|
||||
|
||||
Reference in New Issue
Block a user