Как разбор RAG-сбоев снижает долю необоснованных ответов с 34% до 9%
Когда RAG выдаёт правдоподобную выдумку, команда часто правит промпт наугад. Но одинаково неверный ответ может появиться из-за плохого поиска, разорванного чанкингом факта или игнорирования найденного контекста. Практичный способ найти причину — сохранить top-k фрагментов, разложить ответ на отдельные утверждения и повторить запрос, поочерёдно убирая источники. В описанном примере такой разбор помог снизить долю необоснованных утверждений с 34% до 9%.
AI-обработка оригинала Habr AI; редакция Hamidun News
Когда RAG-система уверенно сообщает неверный срок, цену или правило, первой реакцией обычно становится правка промпта. Добавляют фразу «отвечай только по документам», повышают строгость формулировок и снова запускают тест. Иногда это помогает. Но если нужный факт вообще не попал в контекст, модель не сможет воспользоваться им при любой инструкции.
Главная мысль материала проста: одинаково неверный ответ может быть следствием разных поломок. Поиск мог не найти документ. Чанкинг мог разорвать важное утверждение. Реранкер мог поднять наверх похожий, но неподходящий фрагмент. Наконец, модель могла получить правильный контекст, проигнорировать его и ответить по памяти. Для каждого случая нужен свой ремонт.
Один ответ — три возможные поломки
Представим помощника по документации облачного сервиса. Пользователь спрашивает, можно ли восстановить удалённый топик Kafka. В документации сказано: удаление необратимо, хотя данные физически хранятся ещё семь дней. Система отвечает: «Топик можно восстановить в течение семи дней через консоль, бесплатно».
Здесь сразу три неподтверждённых утверждения: возможность восстановления, способ и цена. Однако число «семь дней» действительно встречается в источнике. Поэтому поверхностная проверка по совпадению слов может принять ответ за обоснованный.
Сначала нужно посмотреть, какие фрагменты вернул поиск. Если абзац о необратимости не найден, проблема находится в retrieval: следует проверять чанкинг, эмбеддинги, фильтры, гибридный поиск и реранжирование. Если правильный фрагмент присутствовал, но модель всё равно придумала восстановление, сбой уже в генерации или в конфликте контекста с внутренними знаниями модели.
Абляция показывает, что действительно повлияло на ответ
Полезный приём — повторить запрос, удаляя из промпта отдельные фрагменты. Если после удаления чанка про семидневное хранение модель перестала говорить о восстановлении, значит, она неверно достроила причинную связь: превратила срок физического хранения в срок доступной пользователю операции.
Затем ответ разбивают на отдельные проверяемые утверждения. Для каждого числа, срока, цены и действия требуется конкретный подтверждающий фрагмент. Простого упоминания сущности недостаточно: документ со словом «Берлин» ещё не доказывает, что Берлин назван там столицей Германии.
Наконец, стоит убрать весь релевантный контекст. Если ответ почти не изменился, вероятно, модель сгенерировала его по памяти, а найденный документ использовала лишь как декоративную ссылку. Обычная проверка логического соответствия текста источнику такую подмену может не заметить, потому что она отвечает на вопрос «совместимы ли утверждения», но не показывает, повлиял ли источник на генерацию.
Что внедрить в рабочий RAG
Минимальный набор наблюдаемости — логировать запрос, top-k найденных фрагментов, их оценки и итоговый промпт. Для размеченных запросов полезно считать Recall@k: оказался ли нужный фрагмент среди результатов поиска. Эту метрику лучше измерять на реальном трафике, а не только на аккуратных синтетических примерах.
Для критичных ответов следует требовать подтверждающий фрагмент для каждого существенного утверждения. Если прямой опоры нет, честный ответ «в документации не указано» безопаснее уверенной догадки. Числа, сроки и цены можно автоматически отправлять на дополнительную проверку.
У метода есть ограничения. Абляции требуют дополнительных вызовов модели, повышают задержку и стоимость, а изменение ответа не всегда однозначно доказывает причинность. Поэтому их разумно запускать выборочно: на небольшой доле трафика, на ответах с цитатами и на сценариях с высоким риском.
Практический результат — команда перестаёт лечить все ошибки одним промптом. Если не найден источник, чинят поиск и чанкинг. Если контекст найден, но проигнорирован, работают с инструкциями и архитектурой генерации. Если ссылка подобрана задним числом, усиливают проверку атрибуции. В описанном автором примере совокупность таких мер снизила долю необоснованных утверждений с 34% до 9%.
- 9 нояб. 2026 г.GPT-6 Astra исправила веса Qwen и подняла результат MATH-500 до 48,1%
- 19 июл. 2026 г.AI-агенты в продакшене: шесть архитектурных ошибок, из-за которых они не доживают до запуска
- 8 нояб. 2026 г.Правка 10% слов снижает обнаружение водяного знака OpenAI с 92% до 66%
- 2 нояб. 2026 г.Надпись на снимке вызвала у дерматологического агента 55% совместных ошибок обоих каналов
Вопросы и ответы по материалу
Что известно по теме: один ответ — три возможные поломки?
Представим помощника по документации облачного сервиса. Пользователь спрашивает, можно ли восстановить удалённый топик Kafka. В документации сказано: удаление необратимо, хотя данные физически хранятся ещё семь дней. Система отвечает: «Топик можно восстановить в течение семи дней через консоль, бесплатно». Здесь сразу три неподтверждённых утверждения: возможность восстановления, способ и цена. Однако число «семь дней» действительно встречается в источнике.
Что известно по теме: абляция показывает, что действительно повлияло на ответ?
Полезный приём — повторить запрос, удаляя из промпта отдельные фрагменты. Если после удаления чанка про семидневное хранение модель перестала говорить о восстановлении, значит, она неверно достроила причинную связь: превратила срок физического хранения в срок доступной пользователю операции. Затем ответ разбивают на отдельные проверяемые утверждения. Для каждого числа, срока, цены и действия требуется конкретный подтверждающий фрагмент.
Что известно по теме: что внедрить в рабочий RAG?
Минимальный набор наблюдаемости — логировать запрос, top-k найденных фрагментов, их оценки и итоговый промпт. Для размеченных запросов полезно считать Recall@k: оказался ли нужный фрагмент среди результатов поиска. Эту метрику лучше измерять на реальном трафике, а не только на аккуратных синтетических примерах. Для критичных ответов следует требовать подтверждающий фрагмент для каждого существенного утверждения. Если прямой опоры нет, честный ответ «в документации не указано» безопаснее уверенной догадки.
Протестируйте новые LLM и мультимодальные модели в одном окне
Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.