3,583 papers
arXiv:2607.22448 72 24 июля 2026 г. FREE

Пропуски фактов в ИИ-агентах: как поймать момент, когда модель прочитала 20 записей из 400 и сказала «всё чисто»

КЛЮЧЕВАЯ СУТЬ
Модель прочитала 20 записей из 400 и уверенно заявила: «аномалий не найдено». Это не глюк и не выдумка факта — это тихое умолчание, и оно опаснее любой галлюцинации, потому что не выглядит как ошибка. Метод coverage accounting и forced citation позволяет поймать момент, когда модель пропустила часть данных, вместо того чтобы верить красивому финальному ответу. Вставляешь в документ контрольный маркер и требуешь отчёт о покрытии — модель обязана процитировать источник каждого факта и посчитать, сколько записей реально обработала. При росте текста с 2 до 32 тысяч токенов риск пропуска растёт в 7 раз, а если искать смысл вместо точного слова — втрое.
Адаптировать под запрос

TL;DR

Исследователи изучали ИИ-агентов, которые работают с закрытыми базами данных — больницы, юридические фирмы, госструктуры — где нельзя слать данные во внешние API. Главный сбой в таких системах — не галлюцинация (когда модель придумывает факт), а её противоположность: умолчание — тихое исчезновение важного факта, который модель просто не увидела. Модель читает первые 20 записей из 400 и уверенно заявляет: «аномалий не найдено» — и этот ответ звучит убедительно именно потому, что он не выглядит как ошибка.

Главная находка: чем длиннее документ, тем резче растёт риск пропуска — при увеличении объёма текста с 2 до 32 тысяч токенов шансы что-то упустить увеличиваются в 7 раз. Ещё хуже, если искомый факт сформулирован не буквально — если нужно найти смысл, а не точное слово, шансы пропуска утраиваются. И большая часть таких потерь (68%) происходит вообще до того, как модель получает данные — на этапе загрузки, пагинации, обрезки текста системой.

Чтобы поймать пропуск, авторы предлагают не доверять красивому финальному ответу модели, а заставлять её явно отчитываться: сколько записей она реально обработала, привести цитату-источник для каждого факта, и заранее «подсадить» в данные контрольный маркер, который модель обязана заметить.


🔬

Схема метода

Это набор проверочных приёмов (не единый алгоритм), которые можно применять по отдельности или вместе:

ПРИЁМ 1 (canary injection): Вставь в документ уникальный "маячок" (код/фраза) 
→ проверка, что модель реально прошла весь текст, а не только начало

ПРИЁМ 2 (coverage accounting): Попроси модель явно указать долю обработанных данных 
→ "проверено X из Y записей" вместо тихого "аномалий не найдено"

ПРИЁМ 3 (forced citation): Требуй ссылку/цитату на источник для каждого вывода 
→ привязка утверждения к конкретному месту в тексте, галлюцинацию видно сразу

ПРИЁМ 4 (two-pass cross-check): Прогони одну и ту же задачу два раза 
→ сравни результаты, расхождение = сигнал ненадёжности

Все четыре приёма выполняются в обычном диалоге, без отдельных запросов к API — это формулировки внутри промпта.


🚀

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

Задача: Юрист загружает в Claude/ChatGPT 120-страничный договор поставки и просит найти все пункты про штрафы, неустойки и ответственность сторон — перед тем как подписывать.

Промпт:

Вот текст договора [вставляю документ].

Перед анализом: в тексте есть контрольная метка "ПУНКТ-QX77" — 
подтверди, что ты её видел, и укажи, в каком разделе она находится.

Теперь найди все пункты про штрафы, неустойки, ответственность сторон.

Для каждого найденного пункта:
- укажи номер пункта/страницы, где он находится
- процитируй фразу целиком

В конце укажи: сколько всего пунктов в договоре ты просмотрел 
(из общего количества пунктов документа), и есть ли разделы, 
которые ты не смог прочитать полностью.

Результат: Модель сначала подтвердит (или не найдёт) контрольную метку — если не найдёт, вы сразу узнаете, что часть текста «выпала» из обработки. Дальше — список пунктов с цитатами и номерами (не абстрактный пересказ). В конце — честный отчёт о покрытии: «просмотрено 45 из 60 пунктов» вместо молчаливого «больше ничего не нашёл».


🧠

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

Модели физически не умеют сказать «я не уверена, что видела весь текст» — они всегда выдают гладкий, законченный ответ, даже если внутри контекста часть данных потерялась (обрезалась, ушла в середину длинного текста, была отфильтрована системой заранее). Это и есть слабость: уверенный тон ответа никак не связан с тем, сколько данных модель реально обработала.

Сильная сторона модели — она честно отвечает, если её явно просят посчитать и процитировать. Модель хорошо считает и цитирует, когда получает точную инструкцию с чёткими требованиями к формату вывода.

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

Рычаги управления: - Контрольная метка — меняйте её сложность (просто слово → редкий код) для более жёсткой проверки внимательности модели - Требование цитаты — можно убрать для скорости, но тогда теряется способ проверить, не придумала ли модель источник - Coverage accounting — особенно критичен при работе с длинными списками (базы данных, реестры, множество файлов) — везде, где легко «прочитать только начало» - Two-pass cross-check — увеличивает затраты времени вдвое, но незаменим для задач с высокой ценой ошибки (юридический due diligence, медицинские записи)


📋

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

Вот документ: {текст/файл}

Перед анализом: подтверди, что ты видел контрольную метку 
"{уникальный_код}" в тексте, и укажи, где она находится.

Задача: {что нужно найти или проанализировать}

Для каждого найденного элемента укажи:
- точное место в документе (номер страницы/раздела/пункта)
- цитату из оригинала

В конце обязательно укажи:
- сколько частей документа (страниц/пунктов/записей) ты реально обработал 
  из общего количества {N}
- есть ли части, которые не удалось прочитать полностью

Перед вставкой в реальный документ добавьте в текст сам контрольный код — любую редкую фразу, которую легко искать (например, "МАРКЕР-KX92Q"), в произвольном месте.

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

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

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

LLM спросит, какой документ анализировать, что именно искать и какой формат отчёта нужен — потому что без этих деталей приём coverage accounting не сработает: модели нужно точно знать, что считать «единицей покрытия» (страницы? пункты? записи?).


⚠️

Ограничения

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

⚠️ Доступ к «внутренностям» модели недоступен в обычном чате: самый точный приём из исследования — анализ вероятностей токенов (logit-декомпозиция), который отличает «модель пропустила отбор» от «модель не увидела факт» — работает только через локальный запуск моделей с доступом к API-логам, не в веб-интерфейсе ChatGPT/Claude.

⚠️ Технические слои (квантование, кэш, архитектура внимания) не переносятся на чат: большая часть выводов статьи касается инфраструктуры серверов, на которых крутится ИИ — это не то, что пользователь контролирует в диалоге.


🔗

Ресурсы

Santhiya Rajan (Multiverse Computing) — «Where Facts Go Missing: A Layerwise Taxonomy and Per-Layer Attribution of Information Omission in Air-Gapped LLM Agent Pipelines». Ключевые отсылки: понятие «lost in the middle» (Liu et al. 2024), устойчивость приоритетов модели при конфликте с контекстом (NQ-Swap, ConflictBank, ClashEval).


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

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

Модель прочитала 20 записей из 400 и уверенно заявила: «аномалий не найдено». Это не глюк и не выдумка факта — это тихое умолчание, и оно опаснее любой галлюцинации, потому что не выглядит как ошибка. Метод coverage accounting и forced citation позволяет поймать момент, когда модель пропустила часть данных, вместо того чтобы верить красивому финальному ответу. Вставляешь в документ контрольный маркер и требуешь отчёт о покрытии — модель обязана процитировать источник каждого факта и посчитать, сколько записей реально обработала. При росте текста с 2 до 32 тысяч токенов риск пропуска растёт в 7 раз, а если искать смысл вместо точного слова — втрое.

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

Правило простое: не верь финальному ответу — верь цифрам покрытия. Модель считает и цитирует честно только если её явно об этом попросили — без этого она выдаёт гладкий законченный ответ, даже если середина документа выпала из контекста. Coverage accounting превращает невидимый пропуск в измеримое число: «просмотрено 45 из 60 пунктов» вместо молчаливого «больше ничего не нашёл».

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

Модель физически не умеет сказать «я не уверена, что видела весь текст» — она всегда договаривает гладкий финал. 68% пропусков случаются ещё до того, как модель получила данные — на этапе загрузки и обрезки текста системой. Уверенный тон ответа никак не связан с тем, сколько модель реально прочитала — вот почему нужен внешний контроль, а не доверие к финальному «всё чисто».

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

Анализ больших документов, договоров, баз данных, реестров → конкретно для задач «найди ВСЕ случаи» (все пункты про штрафы, все аномалии, все упоминания), особенно когда документ длинный и факт может быть сформулирован не буквально. Не подходит, если документ передаётся через встроенный поиск по базе — там проблема на стороне системы, промпт это не исправит.

Мини-рецепт

1. Подсади маркер: вставь в документ редкую фразу типа «МАРКЕР-KX92Q» и попроси модель подтвердить, что она её видела, и указать где.
2. Требуй цитаты: для каждого найденного факта — номер страницы или пункта плюс точная цитата из оригинала.
3. Считай покрытие: в конце попроси указать, сколько частей документа реально обработано из общего числа N.
4. Прогони два раза: сравни результаты первого и второго прогона — расхождение это сигнал, что модель что-то упустила.

Примеры

[ПЛОХО] : Проверь договор на 120 страниц и найди все пункты про штрафы
[ХОРОШО] : Вот документ, внутри есть маркер "ПУНКТ-QX77". Подтверди, что видел его, и укажи где. Найди все пункты про штрафы, неустойки, ответственность сторон — для каждого дай номер пункта и цитату. В конце укажи: сколько пунктов из общего числа ты реально просмотрел, и есть ли непрочитанные разделы
Источник: Where Facts Go Missing: A Layerwise Taxonomy and Per-Layer Attribution of Information Omission in Air-Gapped LLM Agent Pipelines
ArXiv ID: 2607.22448 | Сгенерировано: 2026-07-27 08:26

Проблемы LLM

ПроблемаСутьКак обойти
Тихое умолчание о пропущенном фактеМодель читает часть длинного документа. Не находит нужный факт. Отвечает уверенно: «ничего не найдено». Звучит как чистый результат, а не как ошибка. Пользователь не видит разницы между «факта нет» и «модель его не заметила»Не верь финальному ответу без деталей. Проси отчёт: сколько записей/страниц реально просмотрено из общего числа. Проси цитату-источник для каждого найденного факта

Методы

МетодСуть
Контрольный маркер в тексте — проверка полноты чтенияВставь в документ редкую фразу или код (например «МАРКЕР-KX92Q») в произвольном месте, желательно не в начале. Попроси модель подтвердить, что она видела маркер, и указать где он находится. Перед анализом подтверди, что видел метку "X", укажи раздел. Почему работает: если модель не нашла маркер — значит часть текста физически не попала в её обработку (обрезка, потеря в середине контекста). Работает: любой длинный текст, загруженный целиком в чат. Не работает: если данные подаются через поиск/базу (RAG) — модель может не видеть весь массив, и маркер это не проверит
Принудительная отчётность — счёт покрытия и цитатыТребуй два элемента в ответе: (1) долю обработанных данных — «просмотрено X из Y записей», (2) точную цитату из текста для каждого вывода, а не пересказ. Почему работает: модель хорошо считает и цитирует, когда получает чёткую инструкцию с форматом вывода. Без такой инструкции она даёт гладкий ответ, не показывая механику работы. Работает: анализ списков, реестров, договоров, длинных таблиц. Не работает: короткие тексты, где пропуск физически невозможен
Двойной прогон — сравнение двух ответовПрогони одну и ту же задачу через модель два раза (в новом диалоге или с явной просьбой «перепроверь заново»). Сравни результаты. Расхождение = сигнал, что часть данных обработана нестабильно. Почему работает: если модель реально видит весь текст и уверена в ответе — результат воспроизводится. Если пропуск случайный (зависит от того, что «зацепило» внимание) — ответы будут различаться. Работает: задачи с высокой ценой ошибки (юридические, медицинские документы). Не работает: увеличивает время работы вдвое, избыточно для рутинных задач

Тезисы

ТезисКомментарий
Риск пропуска факта растёт быстрее, чем растёт длина документаЭто не линейная зависимость. Каждое увеличение объёма текста добавляет риск сильнее, чем предыдущее. Механика: внимание модели неравномерно распределено по контексту — к середине и концу длинного текста оно слабеет (эффект «потеряно в середине»). Применяй: для очень длинных документов (десятки страниц) не полагайся на один сплошной запрос — разбивай на части и проверяй покрытие каждой отдельно
📖 Простыми словами

Where FactsGo Missing: A LayerwiseTaxonomy and Per-Layer Attribution of Information Omissionin Air-GappedLLMAgentPipelines

arXiv: 2607.22448

Проблема закрытых ИИ-агентов не в том, что они врут, а в том, что они тихо не договаривают. Когда модель работает с огромной базой данных в контуре больницы или банка, она не галлюцинирует — она просто теряет факты по дороге. Это фундаментальный баг архитектуры: модель сканирует массив данных, выхватывает кусок и выдает уверенный ответ, «забывая» упомянуть, что еще триста страниц текста она просто проигнорировала. Самое паршивое, что на выходе мы получаем идеально гладкий текст, в котором нет признаков ошибки, хотя критически важная аномалия осталась незамеченной.

Это как нанять охранника смотреть в мониторы 12 часов подряд: через какое-то время он начинает моргать чаще, а потом и вовсе залипает в одну точку. Формально он на посту, глаза открыты, и если ты спросишь «все спокойно?», он ответит «да, шеф». Но он не врет специально — он просто пропустил момент, когда вор пролез через забор, потому что его внимание сузилось до размеров замочной скважины. В LLM это работает так же: уверенный тон ответа вообще не гарантирует, что нейронка реально «прожевала» весь объем данных, а не выплюнула первое, что попалось под руку.

Исследователи разложили этот процесс на слои и ввели понятие послойной атрибуции пропусков. Суть в том, что информация теряется на разных этапах: либо контекстное окно «отрезает» хвост документа, либо модель в середине длинного текста впадает в ступор (эффект lost in the middle), либо фильтры безопасности ошибочно принимают важный факт за мусор. Чтобы это лечить, нужно внедрять контрольные точки проверки: заставлять агента не просто давать ответ, а подтверждать, какие именно сегменты данных он просмотрел, и явно указывать на «слепые зоны», которые не попали в анализ.

Хотя эксперименты ставили на закрытых системах, принцип универсален для любого сложного анализа. Юрист, загружающий 120-страничный контракт в ChatGPT, или аналитик, скармливающий модели годовой отчет, рискуют одинаково. Модель может найти три пункта о штрафах и промолчать про четвертый, самый фатальный, просто потому что он лежал в «неудобном» для нее месте. SEO-оптимизация текстов здесь бессильна — тут вопрос к тому, как мы строим саму цепочку рассуждений агента и как заставляем его признавать свою ограниченность.

Короче: главная опасность ИИ сегодня — это не восстание машин, а их уверенная некомпетентность из-за ленивого поиска. Если ты используешь LLM для работы с большими документами, никогда не верь фразе «аномалий не обнаружено». Скорее всего, модель просто не дочитала до того места, где все горит синим пламенем. Нужно перестраивать пайплайны так, чтобы агент отчитывался за каждый прочитанный абзац, иначе риск пропустить «черного лебедя» становится стопроцентным.

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

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

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