3,583 papers
arXiv:2608.27580 74 27 авг. 2026 г. FREE

Safety Needle-in-a-Haystack: длинный текст "растворяет" опасность от внимания AI-модератора

КЛЮЧЕВАЯ СУТЬ
Обнаружено: AI-фильтры безопасности видят угрозу в коротком тексте почти всегда. Но упускают ту же фразу в два раза чаще, если её «утопить» в документе на 32 тысячи слов. Метод Chunked Detection позволяет находить угрозы, мошенничество и токсичный контент в длинных документах с той же точностью, что и в коротких — без дообучения и доступа к внутренностям модели. Разбей документ на куски и проверяй каждый отдельно — модель возвращается в свою сильную зону, где внимание не размывается шумом текста вокруг. Правило простое: если хоть один кусок помечен опасным — весь документ считается опасным.
Адаптировать под запрос

TL;DR

AI-фильтры безопасности (guardrails) отлично находят угрозы, мошенничество и токсичный контент в коротких текстах — но стабильно пропускают ту же самую фразу, если она "спрятана" в длинном документе. Причина не в том, что текст длинный сам по себе, а в том, что доля опасного фрагмента относительно всего объёма падает — модель буквально распределяет внимание по всему тексту, и на конкретную опасную строчку его остаётся всё меньше.

Исследователи вставляли одну и ту же опасную фразу в документы разной длины — от 250 слов до 32 тысяч. При коротком тексте фильтры находили угрозу почти всегда. При длинном — обнаружение падало больше чем в два раза. Причём если ту же опасную фразу просто повторяли много раз (без "мусорного" текста вокруг), падение было в разы меньше. Значит, дело не в длине как таковой, а в разбавлении — чем больше "шума" вокруг иголки, тем хуже видно иголку.

Решение простое: не кидай модели весь длинный текст целиком для проверки. Разбей его на куски, проверь каждый кусок отдельно, и если хотя бы один кусок помечен как опасный — весь документ считается опасным. Это возвращает текст в "короткий" режим, где модель видит опасность отчётливо.


🔬

Схема метода (Chunked Detection)

ШАГ 1: Разбей длинный текст на куски по N слов → список кусков
ШАГ 2: Проверь каждый кусок ОТДЕЛЬНЫМ запросом на наличие опасного контента → вердикт safe/unsafe по каждому куску
ШАГ 3: Агрегируй по правилу "ИЛИ": если хоть один кусок помечен unsafe → весь документ = unsafe

Все три шага можно выполнить как отдельные запросы к LLM в одном чате — без кода и API.


🚀

Пример применения

Задача: Служба поддержки крупного маркетплейса (условно Wildberries) хочет автоматически проверять длинные переписки с покупателями — искать угрозы, попытки мошенничества с возвратами, скрытые манипуляции — чтобы эскалировать диалог на живого модератора.

Промпт:

Вот длинная переписка поддержки с клиентом (около 8000 слов).

Раздели её на части по 300 слов.

Для каждой части отдельно ответь:
- Номер части
- Есть ли признаки угрозы, мошенничества или манипуляции (да/нет)
- Короткая причина, если "да"

В конце дай итоговый вердикт: если хотя бы одна часть помечена "да" — весь диалог считается подозрительным и требует внимания модератора.

Текст переписки:
{текст}

Результат: Модель выдаст таблицу или список из N частей с вердиктом по каждой, короткое пояснение к подозрительным кускам, и финальную строку с общим вердиктом. Если кинуть тот же текст без разбивки одним запросом — есть высокий риск, что единственная опасная фраза среди тысяч нейтральных слов останется незамеченной.


🧠

Почему это работает

Внимание модели — это ограниченный ресурс, который делится между всеми токенами входа. Когда опасная фраза занимает 90% текста — модель смотрит почти только на неё. Когда та же фраза занимает 0,5% от документа в 32 тысячи слов — внимание "разбавляется" окружающим текстом, и модель буквально видит опасность слабее, даже если смысл фразы не изменился.

На коротких текстах у модели нет конкурентов за внимание — она видит опасность отчётливо. Разбивка на куски искусственно пересобирает длинный документ в набор коротких — и возвращает модель в её сильную зону.

Рычаги управления: - Размер куска — меньше кусок → выше чувствительность к мелким деталям, но больше запросов и дороже по времени/токенам. - Правило агрегации — вместо строгого "хоть один кусок unsafe = весь текст unsafe" можно поставить порог ("минимум 2 куска из 10"), если хочешь меньше ложных срабатываний. - Критерий проверки — вместо "угроза/мошенничество" можно подставить любой другой критерий поиска: противоречие в договоре, ошибку в отчёте, нарушение регламента.


📋

Шаблон промпта

У меня длинный текст на проверку: {критерий_проверки} (например: угрозы, токсичность, скрытое мошенничество, нарушение регламента).

Раздели текст на части по {N} слов.

Для каждой части ответь:
- Номер части
- Обнаружен ли {критерий_проверки} (да/нет)
- Краткое объяснение, если "да"

В конце дай итоговый вердикт по всему тексту: если хотя бы одна часть помечена "да" — весь текст считается проблемным.

Текст:
{текст}

Подставь свой критерий проверки (что именно ищешь), размер куска (обычно 200–500 слов достаточно) и сам текст.

🚀 Быстрый старт — вставь в чат:

Вот шаблон для проверки длинного текста по частям (Chunked Detection). Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит какой критерий проверки использовать и какой размер куска подойдёт — потому что от этого зависит чувствительность метода к твоей конкретной задаче.


⚠️

Ограничения

⚠️ Не всё из статьи применимо в чате: метод "заострение внимания" (Attention-Head Sharpening) требует прямого доступа к весам модели и её внутренним attention-механизмам — это невозможно сделать в обычном чате ChatGPT/Claude. Из всей статьи руками применим только принцип разбивки на части (Chunked Detection).

⚠️ Больше запросов — дороже и дольше: разбивка длинного документа на куски по 300 слов означает десятки отдельных проверок вместо одной. Для очень длинных текстов это заметно увеличивает время и расход токенов.

⚠️ Не универсальное улучшение: на одной из моделей в исследовании (PolyGuard) разбивка почти не дала прироста — метод сильнее работает там, где модель изначально плохо держит длинный контекст.

⚠️ Проверено на специализированных фильтрах безопасности, не на обычных ChatGPT/Claude в роли "проверь текст на риски". Перенос принципа на обычные диалоговые модели логичен, но не проверен напрямую в этой работе.


🔍

Как исследовали

Исследователи взяли 15 популярных фильтров безопасности (guardrails) и синтетически создали тексты разной длины — от 250 слов до 32 тысяч, — куда вставляли одну опасную фразу ("иголку") среди нейтрального текста из Википедии ("стога"). Чтобы отделить эффект "разбавления" от эффекта "просто длины", сделали два варианта: Benign-Fill (опасная фраза среди нейтрального текста) и Needle-Repeat (опасную фразу просто повторяли много раз без разбавления).

Оказалось: в первом варианте обнаружение падало вдвое, во втором — почти не менялось. Это и доказало, что виноват именно эффект разбавления, а не длина сама по себе. Дальше команда залезла "под капот" шести моделей и посмотрела на паттерны внимания на уровне отдельных нейронных "голов" — обнаружили, что несколько специализированных голов внимания реально отслеживают опасный контент, но их сигнал слабеет пропорционально степени разбавления. На основе этого предложили два метода лечения: разбивку на части (работает без доступа к весам) и "заострение" специализированных голов внимания (работает только с доступом к внутренностям модели). Оба метода протестировали на пяти разных наборах данных, включая атаки типа Many-shot Jailbreaking — и оба дали устойчивый прирост качества обнаружения.


🔗

Ресурсы

LongGuard: Mechanistic Analysis and Training-Free Mitigation of Long-Context Failure in Safety Guardrails. Ziyang Chen, Xing Wu, Songlin Hu — Institute of Information Engineering, Chinese Academy of Sciences. Код и данные: github.com/czyPL/LongGuard


📋 Дайджест исследования

Ключевая суть

Обнаружено: AI-фильтры безопасности видят угрозу в коротком тексте почти всегда. Но упускают ту же фразу в два раза чаще, если её «утопить» в документе на 32 тысячи слов. Метод Chunked Detection позволяет находить угрозы, мошенничество и токсичный контент в длинных документах с той же точностью, что и в коротких — без дообучения и доступа к внутренностям модели. Разбей документ на куски и проверяй каждый отдельно — модель возвращается в свою сильную зону, где внимание не размывается шумом текста вокруг. Правило простое: если хоть один кусок помечен опасным — весь документ считается опасным.

Принцип работы

Внимание модели — ограниченный ресурс. Когда опасная фраза занимает 90% текста, модель смотрит почти только на неё. Когда та же фраза — это 0,5% от документа на 32 тысячи слов, внимание расползается по шуму вокруг. Дело не в длине текста, а в разбавлении опасности шумом. Доказательство: если ту же фразу просто повторить много раз без мусора вокруг — падение обнаружения в разы меньше.

Почему работает

Почему разбивка на куски лечит проблему? Она пересобирает длинный документ в набор коротких. А короткие тексты модель проверяет отлично — там у опасной фразы нет конкурентов за внимание. Это возвращает модель в её сильную зону. Цифры: обнаружение падало больше чем в 2 раза на длинных текстах без разбивки. Но на одной модели (PolyGuard) разбивка почти не дала прироста — метод сильнее работает там, где модель изначально плохо держит длинный контекст.

Когда применять

Модерация контента → длинные переписки поддержки, юридические документы, договоры, отчёты — где нужно найти одну опасную строчку среди тысяч нейтральных слов. Особенно критично, когда фильтр безопасности уже хорошо работает на коротких текстах, но не проверен на длинных. Не подходит без адаптации для обычных ChatGPT/Claude в роли модератора — метод проверен на специализированных фильтрах безопасности, перенос на диалоговые модели логичен, но напрямую не тестировался.

Мини-рецепт

1. Разбей документ: раздели текст на куски по 200-500 слов. Меньше кусок — выше чувствительность к деталям, но больше запросов и дороже по времени.
2. Проверь каждый кусок отдельно: отдельным запросом спроси модель — есть ли в этом куске искомый признак (да/нет) и почему.
3. Собери вердикт по правилу «ИЛИ»: если хоть один кусок помечен «да» — весь документ считается проблемным.
4. Настрой порог при необходимости: если ложных срабатываний много, замени правило «хоть один» на «минимум 2 куска из 10».

Примеры

[ПЛОХО] : Проверь этот текст на угрозы и мошенничество: {переписка на 8000 слов}
[ХОРОШО] : Раздели переписку на части по 300 слов. Для каждой части отдельно ответь: есть ли угроза или мошенничество (да/нет) и почему. В конце — если хоть одна часть «да», весь диалог считается подозрительным и требует внимания модератора.
Источник: LongGuard: Mechanistic Analysis and Training-Free Mitigation of Long-Context Failure in Safety Guardrails
ArXiv ID: 2608.27580 | Сгенерировано: 2026-08-31 04:27

Проблемы LLM

ПроблемаСутьКак обойти
Модель пропускает опасность, растворённую в длинном текстеОдна и та же опасная фраза находится почти всегда в коротком документе. В длинном тексте обнаружение падает больше чем в два раза — хотя фраза не изменилась. Дело не в длине как таковой, а в разбавлении: доля опасного фрагмента относительно всего объёма падает, и внимание модели размывается по всему тексту. Актуально для любой задачи поиска редкого сигнала в большом объёме — угроза, мошенничество, нарушение регламента, ошибка в договореРазбей текст на куски по 200–500 слов. Проверь каждый кусок отдельным запросом. Если хотя бы один кусок помечен как опасный — весь документ считается опасным

Методы

МетодСуть
Разбивка на куски + агрегация "хотя бы один" (Chunked Detection)Раздели длинный текст на куски фиксированного размера. Проверь каждый кусок отдельным запросом на нужный критерий (угроза, мошенничество, ошибка). Объедини вердикты правилом "ИЛИ": один опасный кусок — весь документ опасный. Можно смягчить правило до порога, например "минимум 2 из 10 кусков". Почему работает: каждый кусок по отдельности снова становится "коротким текстом" — внимание модели не размывается конкурирующим содержимым вокруг. Когда применять: нужно найти редкий сигнал в большом объёме текста — угрозу, нарушение, противоречие. Когда не работает: увеличивает число запросов и расход токенов; на моделях, которые изначально хорошо держат длинный контекст, прирост минимальный
📖 Простыми словами

LongGuard: Mechanistic Analysis and Training-Free Mitigation of Long-Context Failure in Safety Guardrails

arXiv: 2608.27580

Фильтры безопасности в нейросетях катастрофически тупеют от длинных текстов. Модель мгновенно заблокирует угрозу или токсичность в коротком запросе, но в упор пропустит ту же самую грязь, если закопать её в документ на сотню страниц. Всё дело в механизме внимания: ресурс LLM ограничен, и он тупо размазывается по всему объёму, превращая опасный кусок в незаметный шум.

Это как капнуть ложку яда в рюмку против целого бассейна. В рюмке отраву спалит каждый, а в бассейне концентрация растворяется в ноль. Модель не забыла правила безопасности — просто опасная фраза занимает жалкие 0.5% от 32 тысяч токенов, и внутренний цензор нейросети физически проглядывает подставу за огромным полотном текста.

Метод LongGuard решает этот косяк без повторного обучения модели. Вместо того чтобы надеяться на стандартное распределение внимания, алгоритм механистически вскрывает слабые зоны и точечно возвращает критическим фразам максимальный вес. В итоге нейросеть оценивает фрагмент без искажений, и эффективность детекции угроз возвращается к показателям коротких запросов.

Проблема критична везде, где есть длинный контекст. Например, в поддержке крупного маркетплейса мошенник может спрятать схему с левым возвратом в гигантской простыне вежливых жалоб за месяц. Базовый AI-фильтр сольёт проверку и решит, что покупатель душка, а исправленный алгоритм сразу выцепит гнилую строчку и отправит тикет живому модератору.

Короче: стандартные AI-фильтры на длинных дистанциях — это дыра в безопасности, которой легко пользоваться. Если твоя система анализирует договоры, серверные логи или длинные переписки, тебя разведут банальным раздуванием текста. Либо ты внедряешь точечную фокусировку внимания, либо остаёшься с абсолютно слепым охранником.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с