TL;DR
FVA-RAG (Falsification-Verification Alignment RAG) — техника, которая превращает проверку фактов в охоту за опровержениями. Вместо поиска подтверждений модель генерирует "kill queries" (запросы-убийцы) — специальные поисковые фразы, нацеленные на противоречащие доказательства. Первый ответ модели становится черновой гипотезой, которую система пытается опровергнуть, а не подтвердить.
Стандартные RAG-системы страдают retrieval sycophancy (подхалимаж при поиске) — если пользователь спрашивает с ложной предпосылкой, поисковик находит документы, поддерживающие эту ложь. Спросите "какая польза от поедания стекла?" — система найдёт сатирические статьи, мифы или метафоры, которые LLM воспримет как подтверждение. Причина: семантический поиск оптимизирует близость, а не истинность. Retriever ищет слова "польза", "еда", "стекло" — и находит то, что семантически похоже на вопрос, даже если фактически неверно.
FVA-RAG работает в 3 фазы: (1) генерация черновика через обычный RAG, (2) Falsification Loop — агент-фальсификатор разбивает черновик на атомарные утверждения и для каждого создаёт query, ищущий опровержение, собирает "анти-контекст", (3) Dual-verification — арбитр сравнивает черновик с противоречащими доказательствами и либо оставляет ответ, либо исправляет с объяснением.
Схема метода
ФАЗА 1: Черновая гипотеза
User Query → Стандартный поиск → Draft Answer
ФАЗА 2: Falsification Loop
Draft Answer → Разбивка на атомарные утверждения [c₁, c₂, ..., cₙ]
Для каждого cᵢ → Генерация "kill query" (логическое отрицание)
Kill Queries → Adversarial Retrieval → Anti-Context (противоречащие документы)
ФАЗА 3: Dual-Verification
Арбитр сравнивает Draft + Anti-Context
→ Если противоречий < порог: оставить Draft
→ Если противоречий ≥ порог: исправить + показать Chain-of-Thought
Все 3 фазы требуют отдельных запросов — это workflow, не один промпт.
Пример применения
Задача: Вы пишете статью про SMM и проверяете распространённый миф: "Чем больше постов в неделю, тем выше охват в соцсетях."
Промпт (Фаза 1 — черновик):
Объясни, почему частая публикация постов в соцсетях (7+ в неделю)
увеличивает органический охват. Приведи механику алгоритмов.
Промпт (Фаза 2 — фальсификация):
Возьми это утверждение: "Частая публикация (7+ постов в неделю)
увеличивает органический охват."
Разбей на атомарные утверждения. Для каждого сгенерируй
"kill query" — поисковую фразу, которая найдёт ОПРОВЕРЖЕНИЯ.
Формат kill query:
- Если утверждение говорит "X увеличивает Y" → ищи "X снижает Y" или "X не влияет на Y"
- Если утверждение говорит "X безопасно" → ищи "X риски" или "X побочные эффекты"
- Если утверждение говорит "X всегда работает" → ищи "когда X не работает" или "исключения для X"
Выдай список kill queries.
Промпт (Фаза 3 — верификация):
Черновой ответ утверждал: [вставить Draft из Фазы 1]
Kill queries нашли противоречащие факты:
- "Алгоритмы Instagram снижают охват при частых постах низкого качества"
- "Частота публикаций не влияет на охват, если engagement rate падает"
- "Оптимум для большинства брендов — 3-4 поста в неделю"
Сравни черновой ответ с этими фактами. Если есть противоречия —
исправь ответ и объясни, что изменилось и почему.
Результат:
Модель выдаст исправленный ответ с Chain-of-Thought объяснением: покажет, что исходное утверждение было упрощением, какие факты его опровергают (алгоритмы штрафуют за частоту без качества), и как правильно сформулировать (частота работает только при высоком engagement). Вы увидите прозрачную логику: "Черновик говорил X, но анти-контекст показал Y, поэтому правильный ответ — Z."
Почему это работает
Семантический поиск оптимизирует близость, а не истинность. Если в запросе есть ложная предпосылка, retriever найдёт документы, семантически близкие к этой предпосылке — сатиру, мифы, метафоры. LLM воспримет их как подтверждение и сгенерирует "галлюцинацию с цитатами". Проблема не в генерации, а в confirmation bias на этапе поиска.
LLM хорошо генерирует логические отрицания. Модель может взять утверждение "X увеличивает Y" и сформулировать kill query "X снижает Y" или "X не влияет на Y". Это переворачивает задачу поиска: вместо "найди похожее" мы говорим "найди противоположное".
Adversarial retrieval создаёт диалектическое напряжение. Когда модель видит два конфликтующих набора фактов (Draft Context + Anti-Context), она вынуждена явно взвесить доказательства. Это обходит режим "подтверждения гипотезы" и активирует режим "критической оценки". Метод заимствует логику Поппера: гипотезу нельзя доказать, можно только не суметь опровергнуть.
Рычаги управления:
- Порог противоречий (τ) — можете поменять: низкий порог (строже, больше исправлений), высокий порог (либеральнее, меньше ложных тревог)
- Инструкции для kill queries — добавьте специфику: "ищи научные опровержения", "ищи статистику против", "ищи кейсы провала"
- Формат Chain-of-Thought — уберите CoT, если нужен только финальный ответ без объяснений
- Количество атомарных утверждений — для простых задач можно не разбивать, а сразу генерировать kill query для всего утверждения
Шаблон промпта
Фаза 1: Черновая гипотеза
{ваш_исходный_запрос}
Фаза 2: Генерация kill queries
Возьми это утверждение: "{утверждение_из_черновика}"
Разбей на атомарные утверждения (если сложное). Для каждого
сгенерируй "kill query" — поисковую фразу, которая найдёт ОПРОВЕРЖЕНИЯ.
Правила генерации kill query:
- "X увеличивает Y" → "X снижает Y", "X не влияет на Y"
- "X безопасно" → "X риски", "X побочные эффекты", "X failed safety"
- "X всегда работает" → "когда X не работает", "исключения для X"
- "Все эксперты согласны с X" → "эксперты критикуют X", "споры вокруг X"
Выдай список kill queries.
Пояснение: В {утверждение_из_черновика} подставьте ключевое утверждение из первого ответа. Если ответ сложный — модель сама разобьёт на части.
Фаза 3: Dual-Verification
Черновой ответ утверждал: {Draft_Answer}
Kill queries нашли противоречащие факты:
{Anti-Context — результаты поиска по kill queries}
Сравни черновой ответ с этими фактами.
Если противоречий < {порог_уверенности}, подтверди черновик.
Если противоречий ≥ {порог_уверенности}, исправь ответ.
Формат вывода:
1. Статус: [Подтверждён / Исправлен]
2. Логика: "Черновик утверждал X. Анти-контекст показал Y. Вывод: Z."
3. Финальный ответ
Пояснение:
- {Draft_Answer} — ответ из Фазы 1
- {Anti-Context} — результаты поиска по kill queries (вручную или через поисковик)
- {порог_уверенности} — "значительных", "убедительных", "множественных" (словесно, не числом)
🚀 Быстрый старт — вставь в чат:
Вот техника FVA-RAG для проверки фактов через поиск опровержений.
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы понять:
- Какое утверждение проверяем?
- Какие kill queries сгенерировать?
- Где искать анти-контекст?
[вставить шаблон выше]
LLM спросит какое утверждение проверять и где искать противоречия — потому что метод требует adversarial retrieval. Она возьмёт логику генерации kill queries из шаблона и адаптирует под вашу задачу.
Ограничения
⚠️ Двойные затраты на поиск: Метод требует минимум 3 запроса (черновик → kill queries → верификация) и двух раундов поиска информации. Для задач реального времени это медленно.
⚠️ Зависимость от качества поиска: Если Anti-Context содержит слабые опровержения (форумы, мнения дилетантов), арбитр может неверно скорректировать правильный черновик. Метод работает только если источники противоречий авторитетны.
⚠️ Не для всех задач: FVA-RAG нацелен на фактологические утверждения. Для субъективных вопросов (оценка креатива, личные предпочтения) "опровержение" бессмысленно — нет объективной истины.
⚠️ Искусственное завышение конфликта: В исследовании использовали "Sycophantic Generator" (модель, специально подтверждающую ложные предпосылки) для стресс-теста. На современных aligned моделях (GPT-4, Claude) естественный уровень галлюцинаций ниже, поэтому Intervention Rate 45% не означает, что в половине случаев обычная модель врёт. Это показатель эффективности коррекции при наличии галлюцинации.
Как исследовали
Исследователи создали Red Teaming Stress Test на базе TruthfulQA — набора вопросов с распространёнными заблуждениями (медицина, суеверия, мифы). Фокус на high-stakes ошибки — те, где галлюцинация может навредить (медицинские советы, опасные процедуры).
Хитрость эксперимента: Современные модели (GPT-4) обучены для безопасности, естественный уровень галлюцинаций низкий. Чтобы реально проверить силу Falsification Loop, исследователи использовали Sycophantic Generator — baseline-модель, явно проинструктированную подтверждать предпосылки пользователя вместо фактов. Это worst-case сценарий: модель активно пытается поддержать ложь.
Протестировали на N=20 adversarial queries (вопросы-ловушки с ложными предпосылками). Измеряли Intervention Rate — процент случаев, когда Adjudicator успешно выявил ложь в черновике и перезаписал ответ на основе Anti-Context.
Результат: Intervention Rate 45% — в половине случаев, где модель пыталась поддержать заведомую ложь, Adversarial Verification нашла опровержение и исправила ответ. Особенно сильно в медицине (50%) — там где цена ошибки высока: пример с дефибрилляцией при асистолии (черновик предложил опасную процедуру из фильмов, kill query нашёл медицинские гайдлайны "только CPR", финальный ответ исправлен). Слабее в суевериях (37.5%) — там сложнее найти авторитетные опровержения.
Почему это важно: Метод доказал, что можно восстановиться даже от злонамеренной галлюцинации. Если Falsification Loop работает на "враждебной" модели, на обычной aligned модели он будет ещё эффективнее как страховка от редких, но критичных ошибок.
Адаптации и экстраполяции
🔧 Техника: Упрощение для одного запроса → экономия времени
Если 3 фазы слишком сложны, можно свернуть в один промпт:
Задача: {ваш_запрос}
Шаг 1: Дай предварительный ответ.
Шаг 2: Сгенерируй 3 "kill queries" — поисковые фразы, которые
найдут ОПРОВЕРЖЕНИЯ твоего ответа. Представь, что ты адвокат
противоположной стороны.
Шаг 3: Предположи, что эти kill queries нашли противоречащие факты.
Скорректируй свой ответ с учётом возможных опровержений.
Покажи все 3 шага в выводе.
Эффект: Модель симулирует adversarial thinking внутренне, без реального поиска. Слабее чем полный FVA-RAG (нет реальных Anti-Context документов), но быстрее и подходит для задач где важна самокритика, а не доступ к внешним фактам.
🔧 Техника: Kill queries для креатива → острее критика
Метод работает не только для фактов. Адаптируем для оценки идей:
Идея: {ваша_бизнес-идея / концепция / решение}
Сгенерируй 5 "kill questions" — вопросы, которые могут ЗАВАЛИТЬ эту идею:
- Почему это может НЕ сработать?
- Какой сценарий делает это убыточным?
- Какую конкурентную угрозу мы игнорируем?
- Какое критическое допущение может оказаться ложным?
- Какой риск мы недооцениваем?
Затем ответь на каждый kill question честно. Если идея выдерживает —
оставь как есть. Если нет — предложи модификацию.
Эффект: Превращает LLM из "да-человека" в red team для ваших идей. Это adversarial thinking применённый к креативу, не к фактам.
Ресурсы
FVA-RAG: Falsification-Verification Alignment for Mitigating Sycophantic Hallucinations | Mayank Ravishankara (Independent Researcher) | Опубликовано как препринт | В работе упоминаются: Self-RAG (Asai et al., 2023), Corrective RAG / CRAG (Yan et al., 2024), AC-RAG (Zhang et al., 2025), SR-DCR (Chen et al., 2025), CF-RAG (Wang et al., 2025), TruthfulQA benchmark (Lin et al., 2022), Popper's The Logic of Scientific Discovery (1959)
