Чистка рудиментов RU-юрисдикции — 28 апреля 2026
2,206 RU-чанков удалено из ChromaDB Люми. Оставались после всех предыдущих чисток (v1.5 в марте удалила 1,165 русских чанков, но часть всплывала регулярно в retrieval).
Как обнаружили
28 апреля при первой боевой проверке нового KB API ([[lyumi/kb_api_bridge]]) запрос наряд-допуск на высоте выдал на первом месте российский «Курсон» с юрисдикцией RU — попал в KZ-выдачу. Камал: «давай российские зачистим отовсюду остатки?»
Скрипт cleanup_ru.py
Написан безопасным по умолчанию:
- Default — dry run, только аудит и выборка примеров
- --execute — реальное удаление
- --collections green_space hard_space ... — ограничить область
Логика фильтрации
Удаляем, если:
1. metadata.jurisdiction == "RU" — точный матч
2. document_title содержит «Российская Федерация» / «Российской Федерации»
3. В тексте есть RU-маркеры (Минтруд России, Ростехнадзор, Роспотребнадзор, Госгортехнадзор СССР, Постановление Правительства РФ, ФЗ РФ, ГОСТ Р + цифры, СанПиН 2.2.4 / 1.2.x) ПРИ ОТСУТСТВИИ KZ-протект маркеров
Защищаем (KZ_PROTECT_MARKERS в тексте): - Республика Казахстан / РК / «кодекс РК» - Әділет / adilet.zan.kz - МТСЗН - тенге / МРП
Защищаем (INT_STANDARD_PROTECT_TITLE в title): - ISO / ИСО + цифры — например «ISO-9001-2015» (русский перевод МС ISO) - IEC / МЭК + цифры - EN + 3 цифры (EN 397, EN 471) - OHSAS / ANSI / IEEE / NFPA / API / IOGP / NIOSH / ACGIH / AIHA / NEBOSH / IOSH / ILO / CCPS / IPIECA / GRI / WHO / OSHA / CSB / HSE UK
Русские переводы международных стандартов ОСТАЮТСЯ — содержательно это международный контент. Потерять «ISO 45001 по-русски» из-за формального ярлыка jurisdiction=RU — жалко.
Результат двух проходов
| Проход | Найдено | Примечание |
|---|---|---|
| 1 (без whitelist) | 2,733 | В выборке «ISO-9001-2015» — сигнал что нужна защита |
| 2 (с whitelist) | 2,206 | 527 русских переводов ISO/OHSAS/IOGP/... сохранены |
| EXECUTE | -2,206 | 170,176 → 167,970 |
Распределение по коллекциям (итог)
| Коллекция | Было | Стало | Удалено |
|---|---|---|---|
| green_space | 50,097 | 49,893 | -204 |
| hard_space | 46,589 | 45,858 | -731 |
| soft_space | 39,121 | 38,188 | -933 |
| emergency_space | 20,358 | 20,339 | -19 |
| health_space | 14,011 | 13,692 | -319 |
| Итого | 170,176 | 167,970 | -2,206 |
Что именно удалили (по выборке)
- green_space (-204): SAP «Отраслевые особенности обеспечения» (российские кейсы ESG)
- hard_space (-731): «Inc invest procedure TNK-BP» (корпоративные процедуры РОСНЕФТИ/ТНК-ВР)
- soft_space (-933): «ОХРАНА ТРУДА: МЕЖДУНАРОДНЫЙ ОПЫТ» (российские пересказы финского опыта)
- emergency_space (-19): КоАП РФ Гл. 9, Приказ МЧС России №5653, ПО КСК (российские курсы)
- health_space (-319): Федеральное стат. наблюдение, лента российских происшествий 2003
Что НЕ тронули (false positives предотвращены)
- Чанки с упоминанием Казахстана — защищены KZ_PROTECT_MARKERS
- ГОСТ без буквы Р (советский, в КЗ применяется) — НЕ под регексом
- СНиП без РФ — НЕ под регексом
- «ISO-9001-2015» / «ИСО 45001» и прочие переводы MS — защищены INT_STANDARD_PROTECT_TITLE
- Курсы/учебники на русском без RU-юрисдикции — это просто язык, не флагаем
Команды
# Аудит (default, ничего не удаляет):
docker run --rm --env-file /opt/lyumi/.env \
-v lyumi-chroma:/app/chroma_db \
-v /opt/lyumi/cleanup_ru.py:/app/cleanup_ru.py \
lyumi-hse-bot python cleanup_ru.py
# Реальное удаление:
docker run --rm --env-file /opt/lyumi/.env \
-v lyumi-chroma:/app/chroma_db \
-v /opt/lyumi/cleanup_ru.py:/app/cleanup_ru.py \
lyumi-hse-bot python cleanup_ru.py --execute
# Перезапуск Lyumi (для пересборки BM25 на очищенной базе):
docker restart lyumi-hse-bot
Что в базе ОСТАЛОСЬ среди RU-материалов
После чистки в базе остаются:
- Русские переводы ISO / OHSAS / IOGP / OSHA / NFPA / IEC — ~527 чанков, содержательно это международные стандарты
- Книги и учебники на русском без RU-юрисдикции и RU-маркеров в тексте (язык ≠ юрисдикция)
- NotebookLM-источники русскоязычные о Казахстане — jurisdiction=KZ, язык RU
Связанные
- [[lyumi/kb_api_bridge]] — KB API, при боевой проверке обнаружили RU-рудименты
- [[lyumi/bot_v3]] — база знаний бота изменилась с 174K на 167.9K
- Memory
feedback_no_russian_gost— hard rule: ГОСТ Р / СНиП РФ / ФЗ РФ не основа для продуктов Lyumi - Memory
project_pushkin_workflow_stable_apr28