TL;DR
DrugRAG — метод, который разбивает сложный вопрос на ключевые концепции, находит по ним достоверные факты и подаёт всё вместе модели. Вместо того чтобы полагаться на память LLM, метод даёт ей конкретные данные прямо в промпте: сначала одна модель выделяет 3-6 ключевых терминов из вопроса, затем по этим терминам извлекаются структурированные факты из надёжного источника, и только потом целевая модель получает вопрос + факты и даёт ответ.
Исследователи тестировали 11 моделей на 141 вопросе фармацевтического экзамена. Базовая точность варьировалась драматически: маленькие модели (8 млрд параметров) давали 46% правильных ответов, GPT-5 — 92%. Главная находка: даже продвинутые модели путаются в специфичных фактах — забывают формулы дозировок, подставляют неправильные параметры, выдают то 80, то 120 в повторных попытках одного расчёта, путают похожие названия препаратов (Tavist vs Tavist ND). Модель хорошо рассуждает, но плохо помнит точные данные.
DrugRAG улучшил все модели на 7-21 процентных пунктов. Llama 3.1 8B прыгнула с 46% до 67% — рост на 21 пункт. Даже сильные модели выросли: Gemini 3 Pro с 75% до 84%. Метод работает потому что даёт внешние факты, а не полагается на память. Модель перестаёт гадать — она видит конкретные цифры, формулы, ограничения и рассуждает на их основе.
Схема метода
Три отдельных запроса:
ШАГ 1: Извлечение концепций
Вход: сложный вопрос
Модель: o3 (или любая сильная модель)
Выход: 3-6 ключевых терминов
ШАГ 2: Поиск фактов
Вход: ключевые термины
Источник: Medical Chat API (база медицинских знаний)
Выход: структурированная справка (до 200 слов)
ШАГ 3: Итоговый ответ
Вход: оригинальный вопрос + справка из шага 2
Модель: целевая LLM (та, которую хотим улучшить)
Выход: финальный ответ, основанный на фактах
Важно: каждый шаг — отдельный запрос. Весь процесс происходит снаружи модели, без изменения её весов или архитектуры.
Пример применения
⚠️ Зона силы метода: Вопросы, требующие точных специфичных фактов (технические характеристики, нормативы, формулы, актуальные данные). НЕ для: творческих задач, субъективных оценок, простых вопросов общего характера.
Задача: Проверяешь бизнес-идею — запуск доставки из «Самоката» в спальном районе Москвы. Нужно понять реальные цифры: минимальный заказ, комиссия сервиса, средний чек конкурентов, рентабельность. LLM часто выдумывает цифры или путает данные разных сервисов.
Шаг 1 — Извлечение концепций:
Промпт в ChatGPT/Claude:
Выдели 3-6 ключевых терминов для поиска актуальной информации:
"Планирую запустить доставку из Самоката в московском спальном районе.
Сколько беру с клиента за доставку? Какую комиссию забирает сервис?
Какой средний чек у конкурентов типа Яндекс Лавки?"
Только термины, без объяснений.
Ожидаемый результат шага 1: Модель выдаст 4-5 терминов: "Самокат комиссия партнёры", "Яндекс Лавка средний чек", "доставка продуктов Москва стоимость", "даркстор маржинальность".
Шаг 2 — Поиск фактов (вручную):
По каждому термину ищешь актуальные данные: - Открываешь сайты Самоката, Яндекс Лавки, отзывы партнёров - Смотришь отраслевые отчёты вроде Data Insight - Собираешь конкретные цифры: "Самокат берёт 25-30% комиссии", "средний чек Яндекс Лавки — 1200₽", "доставка 0-199₽ в зависимости от суммы заказа"
Формируешь структурированную справку (аналог того, что Medical Chat API даёт автоматически):
САМОКАТ — УСЛОВИЯ ПАРТНЁРСТВА:
- Комиссия сервиса: 25-30% от заказа
- Формат: товар партнёра продаётся через даркстор Самоката
- Клиент платит за доставку: 0₽ от 1000₽, до 1000₽ — 99-199₽
ЯНДЕКС ЛАВКА — КОНКУРЕНТ:
- Средний чек: 1200₽ (Data Insight 2024)
- Доставка клиенту: бесплатная от 500₽
- Конверсия в повторный заказ: ~40%
МАРЖИНАЛЬНОСТЬ ДАРКСТОР-ДОСТАВКИ:
- Средняя по рынку: 8-12% после всех издержек
- Рентабельность зависит от плотности заказов
Шаг 3 — Итоговый запрос:
Промпт в ChatGPT/Claude:
Вот актуальные данные по рынку доставки продуктов в Москве:
[вставить справку из шага 2]
На основе ЭТИХ ФАКТОВ (не общих знаний) ответь:
"Планирую запустить доставку из Самоката в московском спальном районе.
Сколько беру с клиента за доставку? Какую комиссию забирает сервис?
Какой средний чек у конкурентов типа Яндекс Лавки?"
Используй только данные выше. Если чего-то нет в справке — скажи "нет данных",
не выдумывай.
Результат: Модель даст расчёт на основе реальных цифр: покажет экономику с комиссией 25-30%, сравнит со средним чеком 1200₽, объяснит как Самокат структурирует доставку. Не будет выдумывать цифры — будет оперировать фактами из твоей справки.
Почему это работает
Слабость LLM: Модель плохо помнит точные специфичные факты. Она отлично рассуждает, но в памяти хранятся паттерны, а не база данных. Спроси "какая комиссия у Самоката" — модель выдумает правдоподобное число (15%? 20%? 35%?) на основе общих паттернов рынка, а не реальных условий. Повтори вопрос — получишь другую цифру. Это не ошибка, это как работает архитектура: веса нейросети кодируют закономерности, а не справочник.
Сильная сторона LLM: Модель отлично рассуждает над конкретными данными. Если дать ей факты прямо в промпте — она видит их здесь и сейчас, не вспоминает из памяти. Дал формулу и числа — модель правильно подставит. Дал технические характеристики — модель корректно сравнит. Дал актуальные цены — модель точно рассчитает. Рассуждение работает, память подводит.
Как метод использует это: DrugRAG разделяет задачу на две: (1) найти факты — тут модель слаба, поэтому идём в надёжный источник, (2) рассуждать над фактами — тут модель сильна. Первый шаг (извлечение концепций) помогает сфокусировать поиск: вместо "дай мне всё про доставку" получаем 4-5 точных терминов. Второй шаг вообще не использует LLM — тут человек или API находит проверенные данные. Третий шаг даёт модели вопрос + факты одновременно, и модель не гадает — она анализирует то, что видит.
Рычаги управления:
- Количество концепций (3-6): Увеличь до 8-10 для сложной многофакторной задачи, сократи до 2-3 для простой узкой — контролируешь широту поиска.
- Объём справки (200 слов): Подавай больше если задача требует контекста, меньше если нужны только ключевые цифры — баланс между полнотой и шумом.
- Инструкция "используй только данные выше": Убери и модель добавит общие знания к фактам; оставь и получишь строгий ответ только по справке — контролируешь степень "заземления".
- Источник фактов: В оригинале Medical Chat API, но можешь подставить любой надёжный источник под свою задачу — отраслевые базы, внутренние справочники компании, актуальная статистика.
Шаблон промпта
Шаг 1: Извлечение ключевых концепций
Выдели {число} ключевых терминов для поиска достоверной информации по этому вопросу:
"{твой_вопрос}"
Только термины, без пояснений. Каждый термин — конкретная концепция, которую можно искать.
Где: {число} = 3-6 для большинства задач, {твой_вопрос} = сложный вопрос, требующий фактов.
Шаг 2: Поиск фактов
Этот шаг выполняешь вручную или через специализированный API: - Бери термины из шага 1 - Ищи в надёжных источниках (базы данных, официальные сайты, отраслевые отчёты, внутренние справочники) - Собирай в структурированную справку: заголовки + ключевые факты + цифры
Формат справки:
ТЕРМИН 1 — КОНТЕКСТ:
- Факт 1: [конкретная цифра/правило]
- Факт 2: [конкретная цифра/правило]
ТЕРМИН 2 — КОНТЕКСТ:
- Факт 1: [конкретная цифра/правило]
- Факт 2: [конкретная цифра/правило]
Шаг 3: Ответ на основе фактов
Вот достоверные данные по теме:
{справка_из_шага_2}
На основе ЭТИХ ФАКТОВ (не общих знаний) ответь на вопрос:
"{твой_вопрос}"
Используй только данные выше. Если информации недостаточно — скажи "нет данных в справке", не додумывай.
Где: {справка_из_шага_2} = структурированная справка, которую собрал на шаге 2.
Пояснение плейсхолдеров:
- {число} — количество концепций для извлечения (3-6 обычно)
- {твой_вопрос} — исходный сложный вопрос, требующий точных фактов
- {справка_из_шага_2} — собранные тобой (или API) проверенные данные
🚀 Быстрый старт — вставь в чат:
Вот шаблон трёхшагового метода для точных ответов на основе фактов.
Адаптируй под мою задачу: [опиши свою задачу].
Задавай вопросы чтобы понять:
- Какие факты критичны для ответа?
- Где их искать?
- Как структурировать справку?
[вставить три шаблона выше]
LLM спросит про твою задачу и источники данных — потому что шаг 2 (поиск фактов) требует понимания где брать достоверную информацию. Она возьмёт паттерн "концепции → факты → ответ" и подскажет как адаптировать под твой домен.
Ограничения
⚠️ Требует workflow из нескольких запросов: Это не один промпт, а три последовательных действия. Шаг 2 (поиск фактов) нужно делать вручную или через API — модель сама не пойдёт искать данные. Для быстрых вопросов это избыточно, метод для сложных задач где цена ошибки высока.
⚠️ Качество зависит от источника фактов: Если справка неточная или устаревшая — модель даст ответ на основе плохих данных. Метод не делает факты достоверными, он только гарантирует что модель будет их использовать вместо памяти. Ты отвечаешь за качество справки.
⚠️ Не для творческих задач: Метод сильно "заземляет" модель на конкретные факты. Это убивает креативность. Не используй для генерации идей, сторителлинга, брейншторма — там как раз нужна широта ассоциаций, а не жёсткая привязка к справке.
⚠️ Оверхед на простых вопросах: "Столица Франции?" — не нужен трёхшаговый процесс. Метод для случаев когда модель систематически ошибается в фактах и ошибка критична.
Как исследовали
Команда собрала 141 вопрос из банка подготовки к американскому фармацевтическому экзамену NAPLEX — это стандарт для лицензирования фармацевтов. Вопросы покрывают пять доменов: базовые знания фармакологии, процесс назначения лекарств, индивидуальный подбор терапии, профессиональная практика, управление аптекой. Распределение соответствует реальному экзамену: 40% — подбор терапии под конкретного пациента, по 25% — базовые знания и процесс назначения, по 5% — этика и менеджмент.
Сначала прогнали 11 моделей разного размера (от 8 млрд до 70+ млрд параметров, плюс закрытые модели вроде GPT-5) через все 141 вопрос без подсказок. Каждая модель видела клинический кейс и 4-5 вариантов ответа, как на настоящем экзамене. Засчитывали только финальный выбор (A/B/C/D) — либо правильно, либо нет. Настроили все модели одинаково (температура 0.2, чтобы минимизировать случайность) и замерили базовую точность.
Результаты показали драматическую разницу: маленькие модели 8B застряли на 46%, а GPT-5 выдал 92%. Любопытная находка: Bio-Medical Llama 3 (специально обученная на медицине) показала те же 46%, что и обычная Llama 3.1 того же размера. Похоже, 8 млрд параметров — слишком мало для фармакологии, даже если специально дообучать. Зато Medical Chat (доменно-специализированная модель неизвестного размера) достиг 85%, почти догнав топовые общие модели — значит, правильное обучение на узком домене даёт эффект.
Потом исследователи разработали DrugRAG и прогнали пять моделей (от слабых до сильных) через тот же тест, но уже с трёхшаговым процессом. Почему улучшение было тем больше, чем слабее модель? Маленькая модель просто не знает фактов — у неё мало памяти. Когда ей дали справку с конкретными цифрами дозировок и противопоказаний, она перестала гадать и начала рассуждать правильно. Llama 3.1 8B подскочила на 21 пункт (46% → 67%) — это как дать студенту учебник прямо на экзамене. Сильные модели типа Gemini 3 Pro росли меньше (+9 пунктов, 75% → 84%), потому что у них факты частично уже в памяти, но всё равно точная внешняя справка лучше вероятностной памяти.
Противоречило ожиданиям: Medical Chat, специально обученная на медицине модель, набрала 85% без DrugRAG — меньше чем GPT-5 (92%) и o3 (89%). Это показывает что узкая специализация не гарантирует победу над мощными общими моделями. Но когда Medical Chat использовали как источник фактов (шаг 2 в DrugRAG), она сыграла другую роль — не отвечала сама, а давала структурированную справку другим моделям. И это сработало лучше чем просто её ответы.
Инсайт для практики: Если модель систематически ошибается в фактах (путает препараты, неправильно считает дозы, забывает противопоказания) — проблема не в рассуждении, а в памяти. Дай ей конкретную справку в промпте, и точность взлетит. Это работает даже на слабых моделях: Llama 3.1 8B с DrugRAG (67%) обогнала соло-Gemma 3 27B без него (61%), хотя Gemma в 3+ раза больше по параметрам.
Адаптации и экстраполяции
🔧 Техника: Упрости для быстрых задач → пропусти шаг 1
Оригинальный DrugRAG использует o3 для извлечения концепций. Но если задача простая и ты сам видишь какие факты нужны — пропусти шаг 1, иди сразу к поиску.
Пример: Вопрос: "Какую наценку делают рестораны на вино?"
Тут очевидно нужны факты про "наценка вино ресторан маржа". Не трать запрос на извлечение концепций — сразу гугли, собирай справку, подавай модели.
Когда пропускать шаг 1: - Ты эксперт в теме и знаешь что искать - Вопрос узкий, нужно 1-2 факта - Экономишь запросы/время
Когда НЕ пропускать: - Вопрос многофакторный, не видишь все углы - Хочешь чтобы LLM нашла неочевидные концепции - Задача новая для тебя
🔧 Техника: Добавь проверку противоречий → шаг 4
Оригинал останавливается на шаге 3 (ответ на основе фактов). Но факты могут противоречить друг другу — устаревшие данные, разные методики расчёта, региональные различия.
Добавь шаг 4:
Вот справка которую я использовал:
{справка_из_шага_2}
И вот ответ на её основе:
{ответ_модели_из_шага_3}
Проверь:
1. Есть ли противоречия внутри справки?
2. Какие допущения я сделал в ответе?
3. Что может быть неточно если данные устарели или неполны?
Кратко, только критичные моменты.
Зачем: Модель укажет на слабые места. Например: "В справке две цифры средней маржи — 8% и 12%, я взял среднее 10%, но для точного расчёта нужно уточнить какой сегмент рынка".
🔧 Техника: Итеративное уточнение → повторный цикл
Если после шага 3 видишь что не хватает фактов, запусти новый цикл:
Цикл 1:
Концепции → Справка 1 → Предварительный ответ
[Видишь пробел в данных]
Цикл 2:
Новые концепции (из пробелов) → Справка 2 → Финальный ответ (на основе Справка 1 + 2)
Пример: Спросил про рентабельность даркстор-доставки, получил справку про комиссии и средний чек. Модель ответила, но указала: "Для точного расчёта не хватает данных о стоимости аренды даркстора". Идёшь в второй цикл: концепция "аренда даркстор Москва стоимость" → новая справка → объединяешь с первой → полный расчёт.
Ресурсы
DrugRAG: Enhancing Pharmacy LLM Performance Through A Novel Retrieval-Augmented Generation Pipeline
Ключевые отсылки из исследования: - NAPLEX (North American Pharmacist Licensure Examination) — стандарт фармацевтического лицензирования - Medical Chat API (medical.chat-data.com) — специализированная медицинская LLM, использована как источник фактов - PharmacyExam.com — источник вопросов для бенчмарка - OpenFDA, DrugCentral, DrugBank, RxNorm — открытые базы лекарств (оценены, но не использованы в финальной версии)
Авторы: Houman Kazemzadeh, Kiarash Mokhtari Dizaji, Seyed Reza Tavakoli, Farbod Davoodi, MohammadReza KarimiNejad, Parham Abed Azad, Ali Sabzi, Armin Khosravi, Siavash Ahmadi (corresponding), Mohammad Hossein Rohban, Glolamali Aminian, Tahereh Javaheri (corresponding)
Институции: Tehran University of Medical Sciences, Amir Kabir University of Technology, Sharif University of Technology, Missouri University of Science and Technology, Alan Turing Institute (London), Boston University
Препринт, направлен в Computer Methods and Programs in Biomedicine
