3,583 papers
arXiv:2510.02967 74 3 окт. 2025 г. FREE

Manual RAG: техника антигаллюцинаций через строгий контекст

КЛЮЧЕВАЯ СУТЬ
Парадокс: LLM знает тему, но всё равно врёт. GPT-4.1 на медицинских вопросах дал 59.6% фактической точности, хотя обучался на этих данных. Проблема не в знаниях, а в том, что модель смешивает факты с домыслами когда работает "из памяти". Manual RAG решает это через жёсткое ограничение: сначала сам находишь нужный кусок документа, потом вставляешь в промпт с инструкцией "отвечай ТОЛЬКО по этому тексту". Результат — 99.5% точности вместо 60%.
Адаптировать под запрос

TL;DR

Manual RAG — техника работы с LLM, где вы сначала сами находите нужный фрагмент документа, затем вставляете его в промпт и строго ограничиваете модель отвечать только по этому тексту. Суть в двух шагах: (1) retrieval вручную — находите релевантный кусок, (2) generation с ограничением — промпт "отвечай ТОЛЬКО по этому контексту, ничего не выдумывай".

Исследование на британских медицинских гайдлайнах NICE показало: LLM галлюцинируют даже когда знают тему. GPT-4.1 без контекста дал 59.6% фактической точности (Faithfulness), медицинская модель Meditron3-8B — 43%. Проблема не в знаниях, а в том, что модель смешивает факты с домыслами, когда работает "из памяти". Claude Sonnet 4 с web-search по NICE.org.uk дал 88.3% — лучше, но всё равно ненадёжно.

Решение: строгий промпт "отвечай ТОЛЬКО по вставленному тексту" поднял Faithfulness до 99.5% для O4-Mini. Модель перестала выдумывать, потому что инструкция блокирует доступ к её обучению — только явный контекст. Это как дать студенту открытую книгу на экзамене и сказать "цитируй только отсюда" вместо "вспоминай что учил".


🔬

Схема метода

Автоматический RAG (как в исследовании):

ШАГ 1: Векторный поиск → топ-10 релевантных чанков (автоматом)
ШАГ 2: Reranking → сортировка по точности совпадения
ШАГ 3: LLM с промптом "только контекст" → ответ строго по тексту

Manual RAG (для чата):

ШАГ 1: Вы сами находите нужный фрагмент документа
ШАГ 2: Вставляете в промпт + инструкция "отвечай ТОЛЬКО по этому"
ШАГ 3: LLM генерирует ответ, ограниченный контекстом

🚀

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

⚠️ Ограничения метода: Работает когда у вас есть нужный документ. Не подходит для задач где нужен синтез из головы (креатив, мнения). Лучшая зона — проверяемые факты из конкретных источников.

Задача: Вы юрист, готовите меморандум по новому закону о маркетплейсах. Нужно процитировать конкретные пункты закона, но боитесь что LLM напутает цифры или исказит формулировки.

Промпт:

Вот текст статьи 15.3 ФЗ-381 "О маркетплейсах":

"""
[вы вставляете сюда полный текст статьи из СПС КонсультантПлюс]
"""

Ответь на вопрос строго по этому тексту, ничего не добавляя от себя:
Какие обязательства маркетплейса при возврате товара ненадлежащего качества?

Правила:
- Используй только информацию из вставленного текста
- Если в тексте нет ответа, напиши "в предоставленном фрагменте закона этот момент не раскрыт"
- Сохраняй формулировки закона, не перефразируй юридические термины

Результат: Модель выдаст точный ответ на основе текста закона, не домысливая "из памяти". Если статья не покрывает вопрос — скажет прямо. Вы получаете цитирование без риска галлюцинаций (искажения сроков, сумм, ответственности).


🧠

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

Слабость LLM: Модели не умеют разделять "что я точно знаю" и "что мне кажется правдоподобным". Когда GPT-4.1 отвечает из памяти на вопрос про медицинские рекомендации, она генерирует статистически вероятный текст, который звучит как гайдлайн, но может содержать неточности. Модель не "врёт сознательно" — она просто продолжает паттерн, смешивая факты с похожими на правду домыслами.

Сильная сторона LLM: Модели отлично извлекают информацию из явно данного текста и следуют инструкциям. Когда вы даёте контекст и говорите "только отсюда", модель работает как экстрактор фактов, а не как генератор домыслов. Она видит конкретный текст → находит в нём ответ → переформулирует, не выходя за границы.

Как метод использует сильную сторону: Промпт блокирует режим "вспоминания" и активирует режим "чтения". Инструкция "если нет в тексте → скажи 'не найдено'" даёт модели легальный выход вместо попытки заполнить пробелы домыслами. Результат: Faithfulness 99.5% вместо 35-60%.

Рычаги управления:

  • Строгость ограничения — "только контекст" vs "можешь добавить от себя" → первое даёт точность, второе гибкость
  • Формат вывода — "сохраняй формулировки" vs "перефразируй проще" → для юридических/медицинских текстов лучше первое
  • Поведение при пробелах — "скажи 'не нашёл'" vs "попробуй вывести логически" → первое безопаснее
  • Объём контекста — 1 абзац vs вся статья → больше контекста = больше шансов найти ответ, но дольше обработка

📋

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

Вот текст из источника "{название_документа}":

"""
{текст_фрагмента}
"""

Ответь на вопрос строго по этому тексту: {вопрос}

Правила:
- Используй только информацию из вставленного текста
- Если ответа нет в тексте, напиши "{фраза_при_отсутствии}"
- {дополнительные_требования}

Как заполнять:

  • {название_документа} — источник для контекста, например "Статья 228 УК РФ" или "Раздел 3.2 техзадания"
  • {текст_фрагмента} — релевантный кусок документа (статья, параграф, раздел)
  • {вопрос} — ваш конкретный вопрос по этому тексту
  • {фраза_при_отсутствии} — что сказать если ответа нет, например "в предоставленном фрагменте это не раскрыто"
  • {дополнительные_требования} — опционально: "сохраняй юридические термины", "выдели ключевые цифры", "процитируй дословно"

📋

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

Блокировка "памяти": Фраза "строго по этому тексту" переключает режим работы модели. Вместо "вспомни всё что знаешь про X" модель получает задачу "прочитай этот кусок и найди Y". Это как разница между экзаменом по памяти и экзаменом с открытой книгой.

Легальный выход: Инструкция "если нет → скажи 'не найдено'" убирает давление генерировать ответ любой ценой. Модели обучены быть полезными, поэтому без явного разрешения они пытаются ответить всегда, даже домысливая. Разрешение сказать "не знаю" снимает это давление.

Проверяемость: Когда модель отвечает "по контексту", вы видите источник в том же промпте. Можете проверить утверждение за 10 секунд. Когда модель отвечает из памяти — источник неявен, проверка требует гугления.

Особенность для сложных документов: Если вставляете большой кусок (например, всю статью закона на 5 страниц), добавьте инструкцию "сначала найди релевантные пункты, потом ответь". Это помогает модели не потеряться в длинном тексте.


⚠️

Ограничения

⚠️ Нужен исходный документ: Метод работает только если у вас есть нужный текст. Для вопросов "в вакууме" (например, "как вообще работает маркетплейс") техника бесполезна.

⚠️ Ручной retrieval: Вы сами находите релевантный кусок документа. Если документ огромный (100+ страниц) — можно промахнуться с фрагментом или не найти нужное место. Автоматический RAG решает это поиском по векторам.

⚠️ Токен-лимиты: Большие документы могут не влезть в контекстное окно модели. Для GPT-4.1/O4-Mini/Claude Sonnet 4 это не проблема (200k-1M токенов), но для других моделей может быть критично.

⚠️ Не для креатива: Техника убивает творчество. Если нужен синтез идей, метафоры, новые углы зрения — строгое ограничение контекстом вредит. Используйте для фактических задач.


🔍

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

Команда из University College London взяла 300 клинических гайдлайнов NICE (британские медицинские рекомендации), разбила на 10,195 кусков текста, создала векторную базу данных. Тестировали на 7,901 синтетическом запросе (сгенерировали через GPT-4.1-Nano: для каждого чанка — реалистичный вопрос медработника).

Retrieval: Сравнивали sparse (BM25, keyword-based) vs dense embeddings (Voyage-3-Large, семантический поиск) vs гибрид. Гибрид + reranker показал лучшие результаты: правильный чанк в топ-1 для 81% запросов, в топ-10 для 99.1%. MRR (Mean Reciprocal Rank) = 0.814 — в среднем правильный ответ на первой позиции.

Generation: Вручную составили 70 пар вопрос-ответ из гайдлайнов. Прогнали через RAG (топ-10 чанков + строгий промпт) и через baseline LLM без контекста. Использовали RAGAs framework для оценки: Context Precision (релевантность извлечённого), Faithfulness (соответствие ответа контексту), Response Relevancy.

Результаты удивили масштабом разрыва: O4-Mini без RAG дал Faithfulness 34.8% (каждый третий факт — выдумка), с RAG — 99.5%. GPT-4.1 без RAG — 59.6%, Claude Sonnet 4 — 58.9%. Даже медицинская модель Meditron3-8B, обученная на PubMed и гайдлайнах, показала только 43% без RAG.

Почему так: Модели не "тупые" — они смешивают реальные знания с вероятностными домыслами. Когда GPT знает тему, но не помнит конкретики (например, "какой препарат для детей до 5 лет"), она генерирует правдоподобный, но не обязательно верный ответ. RAG убирает эту вариативность — модель видит точный текст гайдлайна и просто переформулирует его.

Инсайт для практики: Даже топовые модели ненадёжны для фактических задач без явного контекста. Claude с web-search (88.3% Faithfulness) лучше "слепого" режима, но всё равно в 8 раз чаще ошибается чем RAG. Для медицины, юриспруденции, техдокументации — строгий контекст критичен.


📄

Оригинал из исследования

Контекст: Исследователи использовали двухчастную структуру промпта (System + User) для управления LLM в режиме RAG. Это full production-ready промпт из их системы.

SYSTEM PROMPT:

You are a medical AI assistant tasked with answering clinical questions strictly based on the provided NICE clinical guidelines context. Follow the requirements below to ensure accurate, consistent, and professional responses.

# Response Rules

1. Context Restriction:
 - Only use information given in the provided NICE guidelines context.
 - Do not generate or speculate with information not explicitly found in the given context.

2. Answer Format:
 - Provide a clear and concise response based solely on the context.
 - When including a list, use standard markdown bullet points ('*' or '-').
 - If a list follows introductory text, insert a line break before the first bullet point.
 - Each bullet point must be on its own line.

3. Preserve Tables:
 - If relevant markdown tables appear in the context, reproduce them in your answer.
 - Maintain the original structure, formatting, and content of any included tables.

4. Links and URLs:
 - Include any URLs or web links from the context directly in your response when relevant.
 - Integrate links naturally within sentences, using markdown syntax for clickable text links.
 - DO NOT generate or invent any URLs not explicitly present in the context.

5. Markdown Link Formatting:
 - In responses, only the descriptive text in brackets should be visible and clickable (e.g., '[NICE...](https://...)').
 - Readers should never see raw URLs in the text.

6. If No Relevant Information:
 - If the context contains no relevant information, state clearly:
 "No relevant NICE guidelines were found."

# Output Format
- All responses should be in plain text, using markdown formatting for lists and links.
- Do not use code blocks.
- Answers should be concise, accurate, and formatted according to the rules above.

REMINDER: Strictly adhere to all formatting and content rules above.

---

USER PROMPT:

{query_text}

Context from NICE clinical guidelines:

{context_text}

Ключевые элементы промпта:

  • Context Restriction — явный запрет на домысливание
  • "If No Relevant Information" — легальный выход, убирает давление генерировать всегда
  • Markdown formatting — для читаемости (списки, таблицы, ссылки)
  • "Do not use code blocks" — чтобы текст был сразу юзабельный, не в коде

💡

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

💡 Адаптация для проверки AI-генерированного контента:

Сценарий: ChatGPT написал вам статью про закон. Вы хотите проверить не напутала ли модель факты.

Вот статья, которую сгенерировала LLM:

"""
{текст_статьи_от_AI}
"""

Вот официальный текст закона из КонсультантПлюс:

"""
{текст_закона}
"""

Задача: проверь каждое утверждение в статье на соответствие закону.

Для каждого факта укажи:
- ✅ Верно (если точно соответствует закону)
- ⚠️ Неточно (если искажает формулировку)
- ❌ Ошибка (если противоречит закону)
- ❓ Не проверяемо (если в законе этого нет)

Отвечай строго по предоставленному тексту закона. Не используй своё знание права.

🔧 Техника: Multi-source RAG → кросс-проверка источников

Если у вас несколько документов по одной теме (например, федеральный закон + региональный регламент), можно проверить согласованность:

Источник 1 — Федеральный закон:
"""
{текст_ФЗ}
"""

Источник 2 — Региональный регламент:
"""
{текст_регламента}
"""

Вопрос: {ваш_вопрос}

Ответь по каждому источнику отдельно:
1. Что говорит ФЗ
2. Что говорит регламент
3. Есть ли противоречия между ними

Используй только тексты из источников, не добавляй своё толкование.

Эффект: Видите расхождения между документами. Полезно для юристов, комплаенса, аудита.


💡 Адаптация для работы с таблицами и числовыми данными:

Сценарий: У вас Excel-выгрузка продаж, нужно ответить на вопрос по цифрам.

Вот данные продаж за Q4 2024 (таблица в формате markdown):

{вставляете таблицу из Excel, скопированную как markdown или plain text}

Вопрос: Какой менеджер показал лучший результат по Москве в декабре?

Правила:
- Считай только по вставленной таблице
- Если данных нет (например, нет разбивки по городам) → скажи "в таблице этого нет"
- Покажи расчёт: какие строки использовал, как посчитал

Эффект: Модель работает как аналитик данных, но без галлюцинаций. Вы видите источник цифр (таблица в промпте) и логику расчёта.


🔗

Ресурсы

Grounding Large Language Models in Clinical Evidence: A Retrieval-Augmented Generation System for Querying UK NICE Clinical Guidelines — Matthew Lewis, Samuel Thio, Richard JB Dobson, Spiros Denaxas (University College London, King's College London, 2025)

RAGAs framework — [Es et al., 2024] Automated evaluation tool for RAG systems

Voyage AI embeddings — state-of-the-art dense embeddings для retrieval

NICE Guidelines — www.nice.org.uk официальный источник британских клинических рекомендаций


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

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

Парадокс: LLM знает тему, но всё равно врёт. GPT-4.1 на медицинских вопросах дал 59.6% фактической точности, хотя обучался на этих данных. Проблема не в знаниях, а в том, что модель смешивает факты с домыслами когда работает "из памяти". Manual RAG решает это через жёсткое ограничение: сначала сам находишь нужный кусок документа, потом вставляешь в промпт с инструкцией "отвечай ТОЛЬКО по этому тексту". Результат — 99.5% точности вместо 60%.

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

Не давай модели вспоминать — дай читать. Вместо Что говорит закон о возврате товара? (модель плывёт, додумывает) делай: вставляешь статью закона + промпт Ответь строго по этому тексту, ничего не добавляй от себя. Модель переключается из режима "генерирую правдоподобное" в режим "извлекаю из явного контекста". Обязательно добавь инструкцию "если ответа нет в тексте — скажи 'не нашёл'" — это даёт легальный выход вместо домысливания.

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

LLM не умеет разделять "знаю точно" и "звучит правдоподобно". Когда модель отвечает из памяти, она генерирует статистически вероятный текст — продолжает паттерн, а не цитирует факт. Строгий промпт блокирует доступ к обучению и заставляет работать как экстрактор фактов. Модель видит конкретный текст → находит ответ → переформулирует, не выходя за границы. Исследование на британских медицинских гайдлайнах NICE показало: даже специализированная Meditron3-8B без контекста дала 43% точности, а O4-Mini со строгим промптом — 99.5%. Разница в 2.3 раза от одной инструкции.

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

Для проверяемых фактов из конкретных источников → законы, техническая документация, медицинские протоколы, корпоративные регламенты. Особенно когда ошибка дорого стоит (юридические меморандумы, клинические решения, финансовые расчёты). НЕ подходит для задач где нужен синтез из головы — креатив, мнения, генерация идей. Метод убивает творчество ради точности.

Мини-рецепт

1. Найди фрагмент: Открой исходный документ, вытащи релевантный кусок (статья закона, параграф инструкции, раздел гайдлайна).
2. Вставь в промпт: Вот текст из [источник]: """ [текст] """ Ответь на вопрос строго по этому тексту: [вопрос]
3. Добавь ограничения: Правила: используй только информацию из вставленного текста. Если ответа нет — напиши "в предоставленном фрагменте это не раскрыто". Сохраняй формулировки, не перефразируй термины.
4. Проверь ответ: Модель выдала утверждение — сверь с исходным текстом за 10 секунд. Источник у тебя в промпте.

Примеры

[ПЛОХО] : Какие обязательства маркетплейса при возврате товара ненадлежащего качества по ФЗ-381? — модель сгенерирует правдоподобный ответ из памяти, может исказить сроки или ответственность.
[ХОРОШО] : Вот текст статьи 15.3 ФЗ-381 "О маркетплейсах": """ [вставляешь полный текст статьи из КонсультантПлюс] """ Ответь строго по этому тексту: какие обязательства маркетплейса при возврате товара ненадлежащего качества? Правила: используй только вставленный текст, если нет ответа — скажи прямо, сохраняй юридические формулировки. — модель извлечёт точный ответ из статьи, не додумывая.
Источник: Grounding Large Language Models in Clinical Evidence: A Retrieval-Augmented Generation System for Querying UK NICE Clinical Guidelines
ArXiv ID: 2510.02967 | Сгенерировано: 2026-01-12 00:46

Концепты не выделены.

📖 Простыми словами

Manual RAG: техника антигаллюцинаций через строгий контекст

arXiv: 2510.02967

Суть проблемы в том, что нейросети — это патологические лжецы, которые сами не понимают, когда врут. Когда ты спрашиваешь GPT-4 о медицинских протоколах, она не лезет в справочник, а просто подбирает слова, которые звучат правильно. В итоге получается текст, который выглядит как официальный документ, но на деле — опасная галлюцинация. Чтобы это исправить, придумали RAG (Retrieval-Augmented Generation): систему, где модель сначала находит реальный документ, а потом пересказывает его, не включая фантазию.

Это как если бы ты пришел к врачу, который прогулял половину лекций, но очень уверенно говорит. Вместо того чтобы слушать его байки, ты кладешь перед ним клинический протокол NICE и говоришь: "Читай отсюда и не смей добавлять ничего от себя". Врач все еще умный и умеет объяснять сложные вещи, но теперь он привязан к жесткому факту, а не к своим смутным воспоминаниям из университета.

В исследовании на примере британских гайдлайнов NICE показали, что ручной контроль над контекстом — это единственный способ заставить LLM не лажать. Метод работает просто: ты сам находишь нужный кусок текста, вставляешь его в промпт и ставишь модели жесткий ограничитель. Если в тексте нет ответа — модель должна честно сказать "я не знаю", а не выдумывать состав таблеток из головы. Это превращает нейронку из сказочника в точного навигатора по базе знаний.

Хотя тестировали это на медицине, принцип универсален. Это база для любого бизнеса, где цена ошибки выше нуля: юристы, инженеры, техподдержка. Если у тебя есть база знаний, не надейся, что нейросеть ее "выучила" во время тренировки. Она ее размазала по весам, и на выходе ты получишь кашу. Только явная подача контекста гарантирует, что ответ будет основан на реальности, а не на статистической вероятности букв.

Короче: если хочешь адекватный результат, забудь про веру в "интеллект" модели. Используй Manual RAG — находи пруфы сам и заставляй AI работать только с ними. Это убивает креативность, зато спасает от полного провала в фактах. Либо ты контролируешь источник данных, либо твоя нейронка рано или поздно выдаст правдоподобную чушь, за которую придется отвечать тебе.

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

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

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