3,583 papers
arXiv:2610.29812 85 21 окт. 2026 г. FREE

Harness для проверки утверждений: пусть модель сама пишет поисковые запросы, а цитаты проверяй на релевантность, а не на существование

КЛЮЧЕВАЯ СУТЬ
Из 327 существующих ссылок на PubMed релевантными оказались 3. Модель без поиска называет настоящие номера статей, но статья про очки для детей, а утверждение про цитокины. Метод позволяет проверять научные тезисы и получать ссылки, которые реально по теме: у агента с поиском релевантны около 67% цитат, у модели без поиска около 1%. Фишка: агент сам превращает утверждение в короткий запрос из 2–6 терминов и цитирует только найденное. Потом отдельный запрос проверяет не «ссылка существует?», а «статья вообще про то же?». Нужную статью агент находит втрое чаще, чем поиск по тексту утверждения.
Адаптировать под запрос
⚡

TL;DR

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

Главная боль в другом: модель без поиска цитирует реальные, но совершенно нерелевантные статьи. Номера PubMed существуют, а статья при этом про очки для детей, хотя утверждение про цитокины. Из 327 существующих цитат релевантными оказались 3. Поэтому проверка «ссылка существует» ничего не гарантирует. У агента с поиском релевантны около 67% цитат. Модель в таком случае не ищет подтверждение в памяти, а берёт статьи из того, что реально нашла.

Метод простой: агенту разрешают переформулировать запрос, объясняют правила поиска, требуют ссылаться только на найденное, а цитаты затем проверяют отдельным запросом «статья изучает именно эти объекты и связь из утверждения?». Узкое место не рассуждение, а поиск: когда модели дали нужные статьи, точность выросла с ~60% до 79–86%.


🔬

Схема метода

ШАГ 1: Модель получает утверждение + правила поиска → короткий запрос (2–6 ключевых терминов)
ШАГ 2: Поиск → показываем только новые результаты → модель решает: искать ещё или отвечать
        (лимит 4 поиска, после лимита — принудительный ответ)
ШАГ 3: Вердикт → JSON: label (SUPPORT / CONTRADICT / NEI), cited_pmids, rationale
        (цитировать можно только то, что вернул поиск)
ШАГ 4: Отдельный запрос-судья: для каждой цитаты "изучает ли статья именно эти объекты и связь?" → yes/no

Шаги 1–3 — один агентный цикл. Шаг 4 — отдельный запрос, лучше в другой модели.


🚀

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

Задача: Вы руководите контентом в бренде БАДов на Wildberries. Маркетолог принёс карточку: «Коллаген в капсулах восстанавливает суставной хрящ у людей старше 40». Нужно понять, есть ли у тезиса опора в литературе, и не получить от модели красивые, но пустые ссылки.

Промпт (для агента с доступом к поиску: Claude с веб-поиском, ChatGPT Search, Perplexity и т. п.):

Ты — ассистент по проверке медицинских утверждений. Реши, ПОДТВЕРЖДАЕТ ли научная литература утверждение (SUPPORT), ОПРОВЕРГАЕТ его (CONTRADICT) или информации НЕДОСТАТОЧНО (NEI). Используй NEI, если найденные данные не отвечают на утверждение напрямую.

Утверждение: «Пероральный коллаген восстанавливает суставной хрящ у людей старше 40 лет».

Ты можешь искать в PubMed и научных источниках. Поиск работает по ключевым словам (термины соединяются через AND), поэтому лучше всего короткие запросы из 2–6 ключевых терминов. Можно использовать OR. Не вставляй утверждение целиком как запрос. Пиши запросы сам: выдели сущности (вещество, состояние, популяция) и исправь опечатки. У тебя максимум 4 поиска.

Выбирай на каждом шаге: либо новый поисковый запрос, либо ответ.
Вердикт основывай только на найденных статьях. Ссылайся только на те, что реально вернул поиск, и никогда не называй статьи «по памяти».

Формат ответа — JSON:
{"label": "...", "cited_pmids": [...], "rationale": "..."}

Результат: Модель сделает несколько поисков с короткими запросами из терминов (вещество, сустав, возраст). Затем выдаст JSON с вердиктом, списком найденных статей и обоснованием. Все цитаты должны быть из выдачи поиска. Если прямых данных нет, ожидайте NEI, а не уверенное «да» или «нет». Вторым запросом (шаблон ниже) прогоните цитаты через проверку релевантности и перед публикацией откройте 2–3 источника руками.


🧠

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

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

Сильная сторона. Модель хорошо делает две вещи. Первая: превращать длинную фразу в короткий запрос из сущностей и чинить опечатки (это и дало прирост поиска в 3 раза). Вторая: рассуждать над текстом, который перед ней лежит. С правильными статьями точность достигла 79–86%. Рассуждение у модели в порядке, не хватает материала.

Как метод это использует. Он отдаёт модели ту часть, где она сильна: формулировку запроса. Он запрещает ту, где она врёт: цитирование по памяти. Правило «цитируй только найденное» почти убрало «внешние» цитаты у агентов (0–2,6%). Отдельная проверка релевантности ловит то, что проверка существования не видит.

Рычаги: - Лимит поисков (4 в исследовании). Агенты использовали в среднем 1,4–1,7 из 4. Поднимать лимит бессмысленно, пока не заставишь им пользоваться. - Правила запроса («2–6 терминов, OR, теги полей»): подстройте под свой источник: Google Scholar, Росстат, свою базу. - Строгость NEI. Агент реже говорит «недостаточно данных», чем должен (33–42% верных NEI против 72–81% у поиска «в лоб»). Если для вас дороже ложное «подтверждено», усилите требование к NEI. - Критерий судьи. «Только если статья изучает конкретные объекты и связь» — строго. Ослабите его, и пропустите больше «около темы».


📋

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

Это промпты из приложения исследования, переведённые на русский.

Агент поиска:

Ты — ассистент по проверке научных утверждений в области {область}.
Реши, ПОДТВЕРЖДАЕТ ли литература утверждение (SUPPORT), ОПРОВЕРГАЕТ его (CONTRADICT) или информации НЕДОСТАТОЧНО (NEI). Используй NEI, если найденные данные не отвечают на утверждение напрямую.

Утверждение: «{утверждение}»

Ты можешь искать в {источник_поиска}. Поиск работает по ключевым словам (термины соединяются через AND), поэтому лучше всего короткие запросы из 2–6 ключевых терминов. Можно использовать OR{и_теги_полей}. У тебя максимум {число} поисков.

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

Формат ответа — JSON:
{"label": "SUPPORT | CONTRADICT | NEI", "cited_pmids": [...], "rationale": "..."}

Проверка цитат (отдельный запрос, лучше в другой модели):

Утверждение: «{утверждение}»
Цитируемая статья: {название_и_аннотация}

Ответь «да», только если статья изучает именно те объекты и ту связь, о которых говорится в утверждении (то есть могла бы правдоподобно его подтвердить или опровергнуть). Ответь «нет», если она не по теме или связана лишь отдалённо.

Что подставлять: {область} — медицина, нутрициология, финансы и т. п. {источник_поиска} — инструмент, который есть у агента. {число} — лимит поисков (в исследовании 4). {утверждение} — одна проверяемая фраза. Для проверки цитат берите название и аннотацию из найденного, а не из ответа модели.

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

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

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

LLM спросит, какой у тебя поисковый инструмент, как он обрабатывает запросы (AND/OR, язык, теги), какая у тебя область и что для тебя дороже: пропустить ошибку или перестраховаться. Это нужно, чтобы правила запроса соответствовали твоему источнику. Остальное она возьмёт из шаблона.


⚠️

Ограничения

⚠️ Пилотное исследование: на 100 утверждениях ни одно различие между реалистичными вариантами (агент, поиск «в лоб», без поиска) не достигло статистической значимости. Направление совпало у обеих моделей, но это тенденция, а не доказанный факт.

⚠️ Малые модели одного провайдера: тестировали быстрые облегчённые модели. На более мощных и на других семействах результаты могут отличаться.

⚠️ Агент всё равно находит мало: нужная статья находилась только в ~20% случаев. Прирост в 3 раза значим как доля, но абсолютный уровень низкий.

⚠️ Агент ленится искать: почти ничего не ищет сверх первого запроса и меньше говорит «недостаточно данных», чем следует. Совет «заставить искать минимум» авторы предлагают, но не проверяли.

⚠️ Судья релевантности — одна модель: он проверен лишь на 50 контрольных примерах (хорошо отличал, но выборка мала). Это не замена человеческой проверке критичных ссылок.

⚠️ «Ошибки» не всегда ошибки: метки датасета привязаны к конкретным аннотациям, а агент искал по всему PubMed 2026 года. Часть «промахов» могла быть новыми данными.


🔍

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

Автор взял датасет SciFact: научные утверждения, размеченные экспертами как «подтверждает», «опровергает» или «недостаточно данных». Случайно выбрал 100 утверждений и прогнал их через четыре способа проверки на двух облегчённых моделях Gemini, а поиск вёл по настоящему PubMed. Модель, формат ответа и температура были одинаковы, менялся только «обвес» вокруг модели. Это позволило отделить влияние поиска от влияния самой модели.

Четыре режима: без поиска, один запрос из самого утверждения, агент с самостоятельными запросами (до 4) и «оракул» с готовыми правильными статьями. Оракул стал потолком: он показал, на что способны модели при идеальном поиске. Отдельно проверили цитаты: существует ли указанный номер, совпадает ли он с эталонной статьёй и релевантна ли она утверждению. Релевантность оценивала модель другого семейства (Qwen). Её проверили на контролях: 21 из 25 верных статей признала релевантными, 0 из 25 подложных.

Главные результаты. Поиск «в лоб» нашёл нужную статью только в 6% случаев и не улучшил точность. Он превратил уверенные ошибки в «недостаточно данных». Агент утроил долю находок (до 19–20%) и дал лучшую точность (62%), но разница не значима. Оракул дал 79–86%, то есть разрыв в 17–24 пункта значим, и узкое место именно в поиске. Самое яркое: 3 релевантных из 327 существующих цитат у модели без поиска против ~67% у агента. Из этого вывод для практики: «ссылка существует» — не защита.


💡

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

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

Авторы предлагают этот шаг как идею (не проверяли). Допишите в промпт агента:

Не отвечай после первого поиска. Сделай минимум 2 разных запроса (например, по другому названию вещества или по синониму) и ответь, только если нашёл хотя бы одну статью, напрямую отвечающую на утверждение. Если после всех поисков такой статьи нет — NEI.

Эффект нужно проверить на своей выборке: сравните долю верных NEI до и после.

🔧 Техника: судья-фильтр на выходе → в отчёт попадают только релевантные цитаты

Экстраполяция принципа: перед сдачей отчёта пропустите каждую цитату через проверку релевантности и оставьте только «да»:

Для каждой цитаты в списке ниже ответь «да» или «нет» по критерию: статья изучает именно те объекты и ту связь, что в утверждении. Верни только цитаты с «да»; для остальных напиши, почему не подходят.
Утверждение: «{утверждение}»
Цитаты: {список_названий_и_аннотаций}

Это перенос идеи судьи из исследования на любые отчёты с цитатами: рыночные обзоры, юридические справки. Эффект за пределами биомедицины в работе не проверяли.


🔗

Ресурсы

  • Работа: Real PMIDs, Wrong Papers: Harness Design for Biomedical Claim-Verification Agents — Mohammed Saqlain (независимый исследователь, Бангалор).
  • Код, промпты и кэш вызовов: github.com/saqlain2204/real-pmids-wrong-papers
  • Датасет: SciFact (Wadden et al., 2020).
  • Связанные работы: ReAct (Yao et al., 2023), PaperQA/PaperQA2 (Lála et al., 2023; Skarlinski et al., 2024), MedRAG (Xiong et al., 2024), GeneGPT (Jin et al., 2024), анализ фальсификации цитат ChatGPT (Walters & Wilder, 2023).

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

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

Из 327 существующих ссылок на PubMed релевантными оказались 3. Модель без поиска называет настоящие номера статей, но статья про очки для детей, а утверждение про цитокины. Метод позволяет проверять научные тезисы и получать ссылки, которые реально по теме: у агента с поиском релевантны около 67% цитат, у модели без поиска около 1%. Фишка: агент сам превращает утверждение в короткий запрос из 2–6 терминов и цитирует только найденное. Потом отдельный запрос проверяет не «ссылка существует?», а «статья вообще про то же?». Нужную статью агент находит втрое чаще, чем поиск по тексту утверждения.

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

Две проверки вместо одной. Раньше было так: номер есть в базе, значит ссылка хорошая. Теперь так: статья должна изучать те же объекты и ту же связь, что и утверждение. Как это идёт. Агент получает утверждение и правила поиска. Пишет короткий запрос. Видит только новые результаты. Решает: искать ещё или отвечать (максимум 4 поиска). Потом отдаёт вердикт в JSON с номерами найденных статей. Затем отдельный судья читает название и аннотацию каждой цитаты и отвечает «да» или «нет». Это как проверять не «есть ли такая книга в библиотеке», а «написано ли на нужной странице то, что тебе процитировали».

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

Если подать утверждение в поиск целиком, слова не совпадают с текстом статей. Одна опечатка в названии вещества, и поиск пустой. Модель отлично превращает длинную фразу в запрос из сущностей и чинит опечатки. Это и дало рост в 3 раза. Без поиска модель угадывает, как выглядит ссылка, а не помнит, что в ней написано. Формат верный, номер настоящий, смысла нет. Рассуждать модель умеет, ей не хватает материала: когда дали нужные статьи, точность выросла с ~60% до 79–86%. Правило «цитируй только найденное» почти убрало выдуманные ссылки: 0–2,6% у агентов. Есть и слабое место. Агент ленится: в среднем 1,4–1,7 поиска из 4. Нужную статью он находит лишь в ~20% случаев. Втрое лучше, чем поиск «в лоб», но уровень всё равно низкий.

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

Проверка фактов (медицина, нутрициология, БАДы, научпоп) → конкретно для карточек товаров, статей и отчётов, где тезис нужно подкрепить источниками, особенно когда модель выдаёт красивые, но пустые ссылки. НЕ подходит как замена человеку для критичных ссылок: судья проверен только на 50 примерах. Агент также реже говорит «недостаточно данных», чем нужно (33–42% верных ответов против 72–81% у поиска «в лоб»). Если для вас хуже ложное «подтверждено», усиль требование к этому ответу. Исследование пилотное: на 100 утверждениях разница между вариантами не дошла до статистической значимости, и тестировали лёгкие модели одного провайдера. Это тенденция, а не доказанный факт.

Мини-рецепт

1. Дай роль и три исхода: подтверждает (SUPPORT), опровергает (CONTRADICT) или недостаточно данных (NEI). Скажи: NEI, если найденное не отвечает на утверждение напрямую.
2. Объясни правила поиска: 2–6 ключевых терминов, можно OR, утверждение целиком в запрос не вставлять. Пусть выделит сущности (вещество, состояние, возраст) и исправит опечатки.
3. Поставь лимит: максимум 4 поиска. Авторы советуют ещё требовать минимум 1–2 поиска, потому что агент ленится. Но этот совет они не проверяли.
4. Запрети память: цитировать можно только то, что вернул поиск. Статьи «по памяти» называть нельзя.
5. Потребуй JSON: вердикт, список номеров статей, обоснование.
6. Запусти судью отдельным запросом: лучше в другой модели. Подставь название и аннотацию из выдачи поиска, а не из ответа модели.
7. Проверь руками: перед публикацией открой 2–3 источника сам.

Примеры

[ПЛОХО] : Проверь утверждение: коллаген восстанавливает хрящ. Дай ссылки на PubMed
[ХОРОШО] : Ты ассистент по проверке медицинских утверждений. Вердикт: SUPPORT (подтверждает), CONTRADICT (опровергает) или NEI (недостаточно данных). NEI ставь, если найденное не отвечает на утверждение напрямую. Утверждение: «Пероральный коллаген восстанавливает суставной хрящ у людей старше 40 лет». Ищи в PubMed короткими запросами из 2–6 терминов, утверждение целиком не вставляй, опечатки исправляй. Максимум 4 поиска. Вердикт строй только на найденных статьях. Статьи по памяти не называй. Ответ в JSON: {"label": "...", "cited_pmids": [...], "rationale": "..."} Дальше второй запрос для каждой цитаты, лучше в другой модели: Утверждение: «Пероральный коллаген восстанавливает суставной хрящ у людей старше 40 лет». Статья: {название и аннотация из выдачи}. Ответь «да», только если статья изучает именно эти объекты и эту связь. Если она не по теме или связана отдалённо, ответь «нет».
Источник: Real PMIDs, Wrong Papers: Harness Design for Biomedical Claim-Verification Agents
ArXiv ID: 2610.29812 | Сгенерировано: 2026-10-22 14:10

Проблемы LLM

ПроблемаСутьКак обойти
Ссылка настоящая, но статья не про тоПросишь модель обосновать ответ источниками, а она отвечает по памяти. Номера статей, книг или документов существуют, формат верный. Но содержание не связано с утверждением. Например, утверждение про цитокины, а статья про очки для детей. Проверка «ссылка существует» ничего не показывает. Модель угадывает, как выглядит ссылка, а не помнит, что в ней написано. Это касается любых задач со ссылками: медицина, право, финансы, аналитикаТри шага. 1) Дай модели поиск и запрети ссылаться на что-либо, кроме найденного: «Цитируй только то, что вернул поиск. Никогда не называй источники по памяти». 2) Проверяй каждую ссылку на релевантность, а не на существование (см. метод 2). 3) Заголовок и аннотацию для проверки бери из результатов поиска, а не из ответа модели. Критичные ссылки открой руками

Методы

МетодСуть
Пусть модель сама пишет поисковые запросы — находишь нужное втрое чащеНе вставляй в поиск длинную фразу целиком. Попроси модель превратить её в короткий запрос из 2–6 ключевых терминов. Выдели сущности (вещество, состояние, группа людей), исправь опечатки, не вставляй утверждение целиком. Почему работает: поиск по ключевым словам ищет совпадения слов. Длинная фраза почти не совпадает с текстом статей. Опечатка ломает совпадение полностью. Превращать фразу в набор терминов и чинить опечатки модель умеет хорошо. Как: опиши в запросе, как работает твой поиск: AND или OR, язык, теги полей. Дай лимит попыток (например, 4). Разреши на каждом шаге выбрать: искать ещё или отвечать. Показывай модели только новые результаты. После лимита требуй ответ. Когда да: любой поиск по ключевым словам, база статей, внутренняя документация. Когда нет: поиск по смыслу (векторный). Он и так понимает длинные фразы
Отдельный запрос-судья проверяет релевантность каждой ссылкиВторым запросом, лучше в другой модели, проверь каждую ссылку. Дай утверждение и название с аннотацией источника. Вопрос: Ответь «да», только если источник изучает именно те объекты и ту связь, о которых говорится в утверждении. «Нет», если он не по теме или связан лишь отдалённо. Почему работает: проверка существования видит только формат. Узкий вопрос да/нет заставляет сравнить содержание. Другая модель не повторяет ошибки первой. Рычаг: строгость критерия. Ослабишь слова «именно эти объекты и связь» — пропустишь больше работ «около темы». Когда да: есть список ссылок и нужна быстрая фильтрация. Когда нет: как единственная защита для критичных ссылок. Судья — тоже модель и тоже ошибается

Тезисы

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

Real PMIDs, Wrong Papers: Harness Design for Biomedical Claim-Verification Agents

arXiv: 2610.29812

Модели не умеют проверять факты из головы: они просто генерируют правдоподобный мусор. Если спросить нейросеть о научном факте без поиска, она выдаст реальный номер статьи (PMID), но внутри будет полная дичь, вообще не связанная с темой. А если скормить в поисковик сырое утверждение целиком, ключевики банально не совпадут, и на выходе ты получишь дырку от бублика.

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

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

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

Короче: никогда не верь ссылкам модели на слово и не суй длинный текст прямо в поиск. Заставляй LLM сначала дробить задачу и работать как автономный агент-библиотекарь. Иначе выкатишь в продакшн откровенную чушь с красивыми, но абсолютно левыми пруфами.

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

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

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