TL;DR
Масштабное исследование RAG (когда LLM отвечает с опорой на загруженные документы) в медицине показало: добавление внешних документов в контекст часто ухудшает ответы, а не улучшает. 18 медицинских экспертов оценили 80 тысяч элементов в ответах GPT-4o и Llama-3.1 с документами и без. Результат: точность (factuality) упала на 6%, полнота ответа — на 5%. Модели чаще цитировали нерелевантные куски из документов, чем релевантные.
Три точки отказа RAG: (1) Retrieval — из топ-16 извлечённых фрагментов только 22% оказались релевантны запросу, для сложных кейсов — 15%. В 31% случаев вообще ни один фрагмент не подходил. (2) Selection — модели плохо фильтруют: GPT-4o процитировала в среднем 2.6 нерелевантных фрагмента против 1.8 релевантных, Llama-3.1 — 1.6 против 1.2. Precision 41-43%, recall 27-49%. (3) Generation — итоговый ответ с документами оказался менее точным и полным, чем без них.
Два решения работают: фильтрация нерелевантного контекста перед подачей в модель + переформулирование запроса для лучшего поиска. В комбинации подняли точность на 12% (MedMCQA) и 8.2% (MedXpertQA) для Llama-3.1, на 3.4% и 6.6% для GPT-4o.
Почему это важно
Когда вы загружаете документы в ChatGPT/Claude (PDF, Word, корпоративная база знаний) — срабатывает RAG. Модель ищет куски текста в документах и встраивает в ответ. Исследование показывает: это не магия улучшения, а источник новых ошибок.
Что идёт не так:
1. Поиск находит мусор
Retriever вытаскивает фрагменты по семантической близости. Но "близость" ≠ "релевантность". Вы спросили про бюджет на обучение в 2025 — модель нашла абзац про бюджет 2023 года из другого раздела. Формально слова похожи, по сути — не то.
В исследовании: только 22% фрагментов из топ-16 были релевантны. Для сложных запросов (как вопросы USMLE с длинным контекстом) — всего 15%. В трети случаев retriever вообще не нашёл ничего подходящего среди топ-16.
2. Модель не умеет фильтровать контекст
LLM получает микс релевантного и мусора в контексте. Казалось бы — умная модель отсеет лишнее? Нет. GPT-4o процитировала нерелевантное в 1.4 раза чаще, чем релевантное (2.6 vs 1.8 фрагментов на запрос). Llama-3.1 — в 1.3 раза (1.6 vs 1.2).
При этом модели игнорировали релевантное: GPT-4o использовала только 1.8 из ~3.5 подходящих фрагментов (recall 49%), Llama-3.1 — 1.2 (recall 28%). Две трети полезного контекста остались неучтёнными.
3. Плохой контекст портит ответ
Когда модель опирается на нерелевантные куски, точность падает. В исследовании:
- Точность ответов GPT-4o упала на 6% с RAG против версии без документов
- Полнота ответов Llama-3.1 упала на 5%
- Когда Llama цитировала нерелевантное — точность минус 8%, когда не находила релевантное — полнота минус 6%
Парадокс: RAG создан улучшать ответы через внешние знания. На практике — добавляет шум, который модель не умеет игнорировать.
Где вы сталкиваетесь с этим
Каждый раз, когда работаете с документами в LLM:
Корпоративная база знаний: Загрузили 50 PDF с политиками компании в ChatGPT Enterprise. Спросили про лимит на командировки. Модель процитировала устаревший регламент 2022 года вместо актуального.
Подготовка к экзамену: Загрузили конспекты лекций в Claude. Спросили про теорему. Модель вытащила кусок из другой темы, где встречались похожие слова, и дала путаный ответ.
Работа с длинными PDF: Загрузили договор на 80 страниц. Спросили про пункт об ответственности. Модель нашла слово "ответственность" в другом контексте и дала неполный ответ.
Признаки проблемы: - Ответ содержит информацию "около" темы, но не по сути - Цитаты из документов не отвечают на вопрос напрямую - Ответ без документов (чистое знание модели) точнее, чем с ними
Два приёма для улучшения
Исследователи проверили простые техники — работают.
1. Фильтрация контекста
Суть: Попросите модель сначала оценить релевантность найденного, потом отвечать.
Промпт:
Шаг 1: Оцени каждый фрагмент из документов — релевантен ли он моему вопросу?
Отбрось нерелевантное.
Шаг 2: Используй только релевантные фрагменты для ответа.
Вопрос: {ваш вопрос}
Почему работает: Модель плохо фильтрует "на лету" — когда одновременно читает контекст и генерирует ответ. Разделение задач (сначала оценка, потом ответ) снижает шум.
Эффект в исследовании: Улучшение точности на 3-5% на сложных датасетах.
2. Переформулирование запроса
Суть: Ваш вопрос может быть неточным для поиска. Попросите модель переписать запрос для retrieval.
Промпт:
Мой запрос: {исходный вопрос}
Переформулируй этот запрос так, чтобы по нему легче найти нужную информацию
в документах. Добавь ключевые термины, уточни контекст.
Затем найди ответ, используя переформулированный запрос.
Почему работает: Retriever — тупой. Он ищет по словам. "Где про бюджет?" найдёт всё со словом "бюджет". "Каков утверждённый лимит расходов на обучение сотрудников отдела маркетинга в 2025 году?" — найдёт точнее.
Эффект в исследовании: +4-6% точности.
3. Комбинация (максимальный эффект)
Сначала переформулируйте → потом фильтруйте → потом отвечайте.
Промпт:
Шаг 1: Переформулируй мой вопрос для точного поиска в документах.
Шаг 2: Оцени найденные фрагменты — какие релевантны переформулированному запросу?
Шаг 3: Ответь, используя только релевантные фрагменты.
Вопрос: {ваш вопрос}
Эффект в исследовании:
- Llama-3.1: +12% на MedMCQA, +8.2% на MedXpertQA
- GPT-4o: +3.4% и +6.6% на тех же датасетах
Пример применения
Задача: Вы загрузили в ChatGPT 15 PDF с внутренними регламентами IT-компании. Нужно узнать: кто согласовывает покупку ноутбуков дороже 150 тысяч рублей.
Промпт (с фильтрацией и переформулированием):
Шаг 1: Переформулируй мой вопрос для точного поиска в регламентах:
"Кто согласовывает покупку ноутбуков дороже 150 тысяч рублей?"
Шаг 2: Найди в загруженных документах фрагменты по переформулированному запросу.
Шаг 3: Оцени каждый найденный фрагмент — действительно ли он содержит информацию
о процедуре согласования закупки техники с указанием суммы и ответственных лиц?
Шаг 4: Используй только релевантные фрагменты для ответа. Укажи, из какого
документа взята информация.
Если релевантных фрагментов нет — скажи об этом, не выдумывай.
Результат:
Модель выдаст: 1. Переформулированный запрос (например: "процедура согласования закупки оборудования IT-отдел лимит 150000 руб ответственные лица") 2. Список найденных фрагментов с оценкой релевантности 3. Финальный ответ с цитатами только из релевантных частей документов 4. Если ничего не нашлось — честное "В загруженных документах нет информации об этом"
Ограничения
⚠️ Контроль над retrieval ограничен: В ChatGPT/Claude Projects вы не управляете тем, КАК система ищет фрагменты в документах. Фильтрация через промпт работает, но не заменит правильный retriever.
⚠️ Работает лучше для фактических вопросов: Если вопрос требует рассуждений или синтеза из многих мест документа — фильтрация может отсечь нужное.
⚠️ Увеличивает длину диалога: Два шага (оценка + ответ) = два запроса или длиннее промпт. Для быстрых вопросов избыточно.
⚠️ Не исправляет плохой поиск полностью: Если retriever не нашёл релевантное среди топ-16 фрагментов — фильтрация не поможет. Переформулирование частично компенсирует.
Как исследовали
Исследователи из Yale, Stanford, Harvard и ETH Zurich собрали 18 медицинских экспертов, которые вручную оценили 80,502 элемента. Взяли 200 медицинских вопросов: 100 реальных пациентских (тип "У меня болит живот, что делать?") и 100 сложных экзаменационных (USMLE-стиль с длинным описанием случая). Прогнали через GPT-4o и Llama-3.1-8B — с RAG и без.
Почему три стадии оценки:
RAG — это конвейер. Если сломалось на первом этапе (retrieval нашёл мусор) — следующие этапы обречены. Разделили оценку:
Evidence Retrieval: Эксперты смотрели топ-16 извлечённых фрагментов для каждого вопроса. Метка: "релевантен запросу" или нет. Результат: только 22% релевантны в среднем. Для USMLE-вопросов — 15%. В 31% случаев ни один из топ-16 не подходил.
Evidence Selection: Эксперты проверили, какие фрагменты модель процитировала в ответе. Сравнили с метками релевантности. Результат: precision 41-43% (больше половины процитированного — мусор), recall 27-49% (модели игнорировали большую часть релевантного).
Response Generation: Разбили ответы на атомарные утверждения (statement-level). Эксперты оценили каждое: верно ли фактически? Содержит ли ответ всё необходимое из эталона? Результат: точность с RAG упала на 6%, полнота — на 5%.
Почему результаты такие:
Retriever (MedCPT) ищет по семантической близости векторов. "Близкие слова" ≠ "правильный контекст". Медицинские термины повторяются в разных значениях — retriever путается. LLM обучены использовать весь контекст (helpful), а не игнорировать части (skeptical) — отсюда низкая фильтрация. Нерелевантный контекст "отвлекает" модель от её внутренних знаний, которые могли быть точнее.
Что удивило:
RAG считается must-have для медицинских LLM (65% исследований в обзоре используют RAG). А на практике — в 40% случаев ответ БЕЗ документов был точнее. Особенно для Llama-3.1, у которой 77% самогенерированных ссылок оказались фейковыми (несуществующие статьи с правдоподобными названиями).
Инсайт для практики:
Больше контекста ≠ лучше ответ. Если ваша база знаний зашумлена или retriever плохой — отключите RAG для критичных вопросов. Чистое знание модели может быть надёжнее, чем знание + мусор из документов.
Ресурсы
Rethinking Retrieval-Augmented Generation for Medicine: A Large-Scale, Systematic Expert Evaluation and Practical Insights
Исследование: MedCPT (медицинский retriever), корпуса PubMed / Wikipedia / StatPearls
Авторы: Hyunjae Kim, Jiwoong Sohn, Qingyu Chen et al.
Институты: Yale School of Medicine, Stanford Medicine, Harvard Medical School, ETH Zurich
