3,583 papers
arXiv:2605.29712 73 28 мая 2026 г. FREE

Test-Taking Fact Check: проверка фактов по документу через структурированный чеклист экзаменатора

КЛЮЧЕВАЯ СУТЬ
LLM читает многосоставное утверждение и ставит TRUE, потому что ЧАСТЬ совпала с документом. Про Ивана-директора нашла в тексте — готово. А то, что завод не в Перми, а в Туле, и год другой — пропустила. Модель не проверяет части по очереди, она читает по диагонали. Test-Taking Fact Check позволяет проверять сложные утверждения по документу так, чтобы каждая деталь проходила отдельную проверку. Сначала утверждение разбивается на атомарные факты — каждый независимо проверяем. Потом каждый факт проходит 4 критерия: сначала ищем явное, и только если явного нет — разрешаем один логический шаг вывода.
Адаптировать под запрос

TL;DR

Test-Taking Fact Check — техника, которая переформулирует проверку фактов в задачу "True/False из учебника по языку" и заставляет модель идти по жёсткой 4-шаговой цепочке критериев — от явного к выводимому — вместо того чтобы рассуждать без плана.

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

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


🔬

Схема метода

Вход: [исходный документ] + [утверждение для проверки]

ШАГ 1: ДЕКОМПОЗИЦИЯ (один запрос)
  Сложное утверждение → набор атомарных фактов
  Пример: "Иван был директором завода в Перми в 2019 году"
        → [Иван был директором] + [завод в Перми] + [это было в 2019]

ШАГ 2: ПРОВЕРКА КАЖДОГО ФАКТА (один запрос на факт или все сразу)
  C1: Субъект и объект факта вообще упомянуты в документе?
       Нет → FALSE. Да → C2
  C2: Описания субъекта и объекта прямо подтверждены документом?
       Нет → переход к C4. Да → C3
  C3: Связь между субъектом и объектом прямо подтверждена?
       Нет → переход к C4. Да → TRUE
  C4: Всё ещё непроверенное можно логически вывести из документа?
       Да → TRUE. Нет → FALSE

Выход: TRUE / FALSE + краткое объяснение со ссылкой на фрагмент документа

Шаги можно объединить в один промпт — декомпозиция + проверка по критериям.


🚀

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

Задача: Ты написал краткое резюме условий договора с поставщиком для презентации директору. Хочешь проверить, не исказил ли что-нибудь — особенно сроки, штрафы, условия расторжения.

Промпт:

Ты — внимательный юридический ревьюер. Проверь, подтверждается ли 
утверждение исходным документом.

Исходный документ:
---
[вставь текст договора или нужный раздел]
---

Утверждение для проверки:
"[вставь конкретную фразу из своего резюме — например: 
'Поставщик обязан устранить дефекты в течение 14 дней, 
иначе покупатель вправе расторгнуть договор в одностороннем порядке']"

Действуй строго по шагам:

ШАГ 1 — Разбей утверждение на отдельные атомарные факты.
Перечисли их пронумерованным списком.

ШАГ 2 — Для каждого факта пройди по критериям последовательно:

C1: Упомянуты ли субъект и объект факта в документе?
    Если нет → FALSE, стоп.
C2: Явно ли подтверждены описания субъекта и объекта?
    Если нет → переходи к C4.
C3: Явно ли подтверждена связь между субъектом и объектом?
    Если нет → переходи к C4.
C4: Можно ли логически вывести всё ещё непроверенное из документа?
    Если нет → FALSE. Если да → TRUE.

Для каждого факта выведи: [ФАКТ] → [C1/C2/C3/C4 с обоснованием] → [TRUE/FALSE]
В конце дай итоговый вердикт по всему утверждению.

Результат: Модель покажет список атомарных фактов из утверждения — каждый отдельно. Для каждого — цепочку проверки по критериям с цитатами из документа или указанием на отсутствие. В финале — вердикт TRUE/FALSE с объяснением, какой именно факт не подтверждён и почему.


🧠

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

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

Что умеет модель: Следовать жёстким последовательным инструкциям с явными условиями перехода. Когда критерии заданы как "если A, то B, иначе C" — модель генерирует текст по этому паттерну без отступлений.

Как метод использует это: Критерии выстроены от явного к выводимому. Сначала проверяется то, что должно стоять в тексте буквально — субъект, объект, их описания, связь. Только если явное не нашлось — разрешается рассуждать об импликациях. Это отсекает галлюцинации: модель не может "додумать" факт, пока не убедится, что явное уже проверено.

Рычаги управления: - Детализация C4 → добавь "допускается максимум один логический шаг" — сделает вывод строже, уберёт многоходовые домыслы - Требование к цитате → добавь "приведи дословную цитату из документа для каждого TRUE" — повысит доверие, но удлинит ответ - Порог строгости → замени C4 на "если не подтверждено явно → FALSE" для юридических/финансовых задач, где вывод недопустим


📋

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

Ты — ревьюер фактов. Проверь, подтверждается ли утверждение 
исходным документом.

Исходный документ:
---
{документ_или_фрагмент}
---

Утверждение:
"{утверждение_для_проверки}"

Действуй строго по шагам:

ШАГ 1 — Разбей утверждение на атомарные факты.
Перечисли пронумерованным списком — каждый факт отдельно 
и независимо проверяем.

ШАГ 2 — Для каждого факта:

C1: Упомянуты ли субъект и объект в документе?
    Нет → [FALSE]. Стоп.
C2: Явно ли подтверждены их описания?
    Нет → переходи к C4.
C3: Явно ли подтверждена связь между ними?
    Нет → переходи к C4.
C4: Можно ли вывести непроверенное из документа логически?
    Нет → [FALSE]. Да → [TRUE].

Формат для каждого факта:
Факт N: [текст факта]
→ C1: [да/нет + объяснение]
→ C2: [да/нет + объяснение или "пропуск → C4"]
→ C3: [да/нет + объяснение или "пропуск → C4"]
→ C4: [если применимо]
→ Итог: [TRUE / FALSE]

Итоговый вердикт по утверждению: [TRUE / FALSE / ЧАСТИЧНО]
Объяснение: [какой факт не подтверждён и почему]

Что подставлять: - {документ_или_фрагмент} — исходный текст, с которым сверяем. Это может быть договор, статья, конспект, транскрипт, официальный документ - {утверждение_для_проверки} — конкретная фраза или предложение, которое нужно проверить. Одно утверждение за раз


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

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

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

LLM спросит какой документ и какое утверждение проверяем — потому что метод работает только при наличии конкретного источника истины и конкретного тезиса для сравнения. Она возьмёт структуру критериев и адаптирует под твою задачу.


⚠️

Ограничения

⚠️ Утверждения без исходного документа: Метод работает только при наличии документа-источника. Для проверки общих знаний ("правда ли, что...") — не подходит.

⚠️ Субъективные утверждения: Критерии заточены под факты — кто, что, когда, как. Оценочные суждения ("продукт качественный", "тон письма уважительный") метод не верифицирует.

⚠️ Длинные документы: Если документ большой, а факт упомянут в начале — модель может потерять нить. Лучше подавать релевантный фрагмент, а не весь документ целиком.

⚠️ Сложные многоходовые выводы: C4 хорошо работает для одного логического шага. Если для проверки нужна цепочка из трёх и более выводов — модель может ошибиться, приняв FALSE за TRUE.


🔍

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

Исследователи из Бристольского университета взяли задачу, которую обычно решают специализированными классификаторами — проверку фактической согласованности — и переформулировали её как задачу чтения с пониманием. Идея пришла из педагогики: школьные упражнения True/False на уроках Language Arts давно используют именно такую структуру рассуждения.

Метод проверили на двух бенчмарках: FacTax-Benchmark (суммаризация новостей и диалогов) и LLM-AggreFact (более разнообразные источники и модели-генераторы). Сравнивали с десятком методов — от лёгких классификаторов (DeBERTa, 0.4B) до GPT-4o и Llama-3.3-70B. Метрика — сбалансированная точность (учитывает и ложные позитивы, и ложные негативы поровну).

Главный сюрприз: Qwen3-30B с этим промптом обошёл GPT-4o и Llama-70B, то есть меньшая модель с правильной структурой рассуждения победила вдвое большую. При этом расход токенов снизился на 80% по сравнению с открытым CoT — потому что структурированный чеклист убирает лишние "рассуждения ни о чём". На FacTax-Benchmark метод установил новый рекорд. На LLM-AggreFact занял второе место, уступив только методу, который требует дообучения модели.

Отдельно исследовали дообучение маленькой модели (0.6B) — это уже область MLops и не применимо в чате. Но сам промпт работал в zero-shot режиме без единого примера.


💡

Адаптации и экстраполяции

🔧 Техника: строгий режим без C4 → убираем право на домысел

Для юридических, финансовых, медицинских контекстов — где "можно вывести логически" недостаточно:

C4: Если информация не подтверждена явно в C1–C3 → автоматически FALSE.
Домыслы и импликации не засчитываются.

Итог: проверка становится максимально консервативной — только то, что буквально написано в документе.


🔧 Техника: аудит AI-саммари целиком

Вместо одного утверждения — проверяй весь краткий пересказ разом:

Вот оригинальный документ и его краткое изложение.
Разбей изложение на отдельные утверждения.
Каждое проверь по критериям C1–C4.
В конце дай список: что подтверждено, что искажено, что добавлено от себя.

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


🔗

Ресурсы

Название работы: Teaching Language Models to Check Grounded Claim Factuality with Human Test-Taking Strategies

GitHub: https://github.com/Haruhi07/Test-Taking

Авторы: Yuxuan Ye, Raul Santos-Rodriguez, Edwin Simpson

Организация: Intelligent Systems Laboratory, University of Bristol, UK

Бенчмарки: FacTax-Benchmark (Xu et al., 2024), LLM-AggreFact (Tang et al., 2024)


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

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

LLM читает многосоставное утверждение и ставит TRUE, потому что ЧАСТЬ совпала с документом. Про Ивана-директора нашла в тексте — готово. А то, что завод не в Перми, а в Туле, и год другой — пропустила. Модель не проверяет части по очереди, она читает по диагонали. Test-Taking Fact Check позволяет проверять сложные утверждения по документу так, чтобы каждая деталь проходила отдельную проверку. Сначала утверждение разбивается на атомарные факты — каждый независимо проверяем. Потом каждый факт проходит 4 критерия: сначала ищем явное, и только если явного нет — разрешаем один логический шаг вывода.

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

Критерии выстроены от строгого к мягкому. C1: субъект и объект вообще упомянуты в документе? Нет — FALSE, стоп. C2: их описания явно подтверждены? Нет — прыгаем к C4. C3: связь между ними явно подтверждена? Нет — прыгаем к C4. C4: можно ли недостающее логически вывести? Нет — FALSE. Модель не может "додумать" факт, пока не убедилась что явное уже проверено. Это как экзамен по иностранному языку: сначала ищи прямым цитированием, потом — логическим выводом из текста. Нет ни того ни другого — FALSE.

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

LLM хорошо идёт по строгим инструкциям с явными условиями перехода. Написано "если A — то B, иначе C" — модель держится этого паттерна без отступлений. Без структуры она ищет общее впечатление и ставит оценку оптом. С критериями — идёт шаг за шагом. Декомпозиция на атомарные факты убирает ловушку частичной правды — нельзя подтвердить всё утверждение, если хотя бы один атомарный факт не прошёл цепочку. Плюс: цепочка обязывает модель привязываться к тексту документа, а не к общим знаниям.

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

Проверка резюме договоров и официальных документов — особенно когда важна точность по каждому конкретному условию. Журналистика: цитата из источника действительно там есть? Корпоративная переписка: не исказил ли менеджер суть согласованного в саммари? Учёба: соответствует ли конспект первоисточнику? НЕ подходит для: оценочных суждений и субъективных описаний, проверки утверждений без документа-источника, задач где нужна цепочка из трёх и более логических шагов вывода.

Мини-рецепт

1. Выбери одно утверждение и один документ. Метод работает на паре: конкретная фраза — конкретный источник. Много утверждений — проверяй по очереди, не вали в одну кучу.
2. Задай структуру явно. Попроси модель: шаг 1 — разбить на атомарные факты, шаг 2 — проверить каждый по цепочке C1→C2→C3→C4 с указанием итога TRUE/FALSE и причины.
3. Настрой строгость C4 под задачу. Для договоров и юридических текстов добавь: "логический вывод не допускается — если явно не написано, ставь FALSE". Для обычных текстов оставь как есть.
4. Подавай релевантный фрагмент, не весь документ. Если документ длинный — вырежи нужный раздел. Модель теряет детали из начала большого текста.

Примеры

[ПЛОХО] : Проверь, правильно ли я пересказал этот договор
[ХОРОШО] : Ты — ревьюер фактов. Проверь, подтверждается ли утверждение документом. Документ: [вставь нужный раздел договора] Утверждение: "Поставщик обязан устранить дефекты в течение 14 дней, иначе покупатель вправе расторгнуть договор в одностороннем порядке." Шаг 1: разбей утверждение на атомарные факты — каждый отдельно. Шаг 2: для каждого факта пройди последовательно: C1: субъект и объект упомянуты в документе? Нет → FALSE, стоп. C2: их описания явно подтверждены? Нет → переходи к C4. C3: связь между ними явно подтверждена? Нет → переходи к C4. C4: можно ли недостающее логически вывести? Нет → FALSE. Да → TRUE. Для каждого факта выведи итог TRUE/FALSE с объяснением. В конце — итоговый вердикт по всему утверждению.
Источник: Teaching Language Models to Check Grounded Claim Factuality with Human Test-Taking Strategies
ArXiv ID: 2605.29712 | Сгенерировано: 2026-05-29 15:35

Проблемы LLM

ПроблемаСутьКак обойти
Модель подтверждает «частично верное» как верноеУтверждение содержит три факта. Два верных, один ошибочный. Модель читает всё сразу. Видит знакомые слова. Говорит «верно» — ошибочная деталь не замечена. Хуже всего с датами, числами, атрибуциейРазбей утверждение на атомарные факты. Проверяй каждый отдельно по жёсткой цепочке критериев

Методы

МетодСуть
Цепочка критериев от явного к выводимомуСначала разбей утверждение на атомарные факты. Потом проверяй каждый по четырём шагам: C1 — субъект и объект вообще упомянуты в документе? Нет FALSE, стоп. C2 — их описания явно подтверждены? Нет прыгай к C4. C3 — связь между ними явно подтверждена? Нет прыгай к C4. C4 — непроверенное можно вывести логически? Нет FALSE. Да TRUE. Почему работает: модель не может «додумать» факт пока не проверила явное. Вывод разрешён только после явной проверки. Когда применять: проверка резюме, конспектов, пересказов по исходному документу. Не работает: без документа-источника, для оценочных суждений, для цепочек из трёх+ логических шагов

Тезисы

ТезисКомментарий
Жёсткий порядок проверки не даёт модели галлюцинироватьБез структуры модель видит утверждение целиком и «угадывает» по общему сходству с документом. С порядком C1C2C3C4 — сначала ищет явное, только потом рассуждает о выводимом. Вывод заблокирован пока не подтверждено прямое. Применяй: добавь в запрос «Вывод допустим только если явное уже подтверждено» — это усилит блокировку
📖 Простыми словами

TeachingLanguageModelsto Check Grounded Claim Factuality with Human Test-Taking Strategies

arXiv: 2605.29712

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

Это как если бы ты дал другу прочитать сложный договор и спросил: «Ну что, там всё норм?». Друг бы ответил: «Да, вроде ок», пропустив мелкий шрифт про штрафы. А метод Test-Taking Fact Check — это когда ты заставляешь друга пройти тест на знание языка, где по каждому пункту нужно четко ответить: «Это написано прямо?», «Это логически следует из текста?» или «Этого там вообще нет?». Формально всё проверить уже не получится — придется вчитываться в каждое слово, чтобы не завалить экзамен.

В основе лежат четыре конкретных критерия, которые модель обязана проверить по цепочке. Сначала ищется явное подтверждение (буквальное совпадение), затем логический вывод (если А, то Б), следом идет проверка на противоречие и, наконец, стадия отсутствия информации. Если модель не находит прямого доказательства, она не имеет права сказать «да». Этот алгоритм превращает хаотичное рассуждение в структурированный протокол, где 10 из 10 ошибок отлавливаются просто за счет того, что модели запретили «срезать углы» и додумывать за автора.

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

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

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

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

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