Перейти к содержимому
AUTHORВЫПУСК №008 → АВТОМАТИЗАЦИЯ АГЕНТАМИ: 90% НЕ ПРОМПТ / имейте совесть, когда будете делиться или копировать
>AISTUDY_

Модуль md.1 · Урок 2

RAG и опора на источники: заставить агента цитировать

40 мин
md.1 / Урок 2 из 3

Чему вы научитесь

  • Понимать идею RAG: ответ строится из найденных документов, а не из «памяти» модели
  • Проектировать промпт, который требует цитат и запрещает додумывать
  • Отличать настоящее заземление от его имитации
  • Видеть, где RAG всё ещё может ошибиться

Идея RAG в одном абзаце

Retrieval-augmented generation меняет порядок работы агента. Вместо «модель отвечает из головы» агент сначала ищет релевантные фрагменты в проверенной базе (гайдлайны, инструкции к препаратам, статьи), а потом генерирует ответ, опираясь только на найденное и указывая, откуда взят каждый тезис. Это прямой ответ на проблему галлюцинаций из прошлого урока.

flowchart LR
    Q["Вопрос"] --> E["Эмбеддинг\nвопроса"]
    E --> S["Поиск в базе\n(векторный)"]
    S --> C["Найденные фрагменты\nс источниками"]
    C --> G["Генерация ответа\nстрого по фрагментам"]
    G --> A["Ответ + цитаты"]
    style S fill:#eef2ff,stroke:#4400FF
    style A fill:#ecfdf5,stroke:#059669

Как требовать цитаты в промпте

Само по себе наличие найденных фрагментов не гарантирует, что модель ими воспользуется. Нужно явно потребовать опору на источники и запретить додумывание.

RAG_PROMPT = """Ответь на вопрос, используя ТОЛЬКО приведённые ниже фрагменты.
Правила:
1. Каждое утверждение сопровождай номером фрагмента в квадратных скобках, например [2].
2. Если во фрагментах нет ответа, честно напиши "в источниках нет ответа".
3. Не добавляй фактов, которых нет во фрагментах.

Фрагменты:
{context}

Вопрос: {question}
"""

Обратите внимание на правило 2. Возможность сказать «в источниках нет ответа» важнее, чем красивый ответ: она превращает молчание из бага в фичу.


Настоящее заземление против имитации

RAG не магия. Бывает, что цитаты есть, а заземления нет. Сравним.

ПризнакНастоящее заземлениеИмитация
Источник цитатыРеальный фрагмент из базыВыдуман или нерелевантен
ПокрытиеКаждый тезис привязан к фрагментуЧасть утверждений «висит» без ссылки
Поведение при пустом поискеПризнаёт отсутствие ответаВсё равно отвечает уверенно
ПроверяемостьСсылку можно открыть и сверитьСсылку открыть нельзя

Практическое правило: если хотя бы один тезис нельзя сопоставить с конкретным фрагментом — ответ не заземлён, как бы убедительно он ни выглядел.


Как проверять заземление

  1. Проверьте номера ссылок. Программно убедитесь, что каждый номер в ответе указывает на реально переданный фрагмент.

  2. Найдите утверждения без ссылок. Любой тезис без номера — кандидат на галлюцинацию, его нужно вычитать вручную.

  3. Сверьте смысл. Откройте фрагмент и убедитесь, что он действительно подтверждает утверждение, а не просто упомянут рядом.


Что дальше

Мы умеем заземлять ответ. Но как измерить, насколько агент хорош? Следующий урок про бенчмарки: md.1/03.

Скачать урок

Есть идея или нашли ошибку?

// Обсуждение

Можно писать анонимно. Укажите email, чтобы получать уведомления об ответах.