Главная мысль урока: даже при идеальном поиске модель может «приукрасить» — добавить от себя то, чего в найденных документах нет. Для бизнеса это самый опасный сценарий: ассистент школы, выдумавший условия тарифа, — это возвраты и скандалы. Три инструмента защиты: три контрольных вопроса к каждому ответу, цитаты из коробки и явное право говорить «не знаю».
Три вопроса к каждому ответу
Практик Джейсон Лю свёл всю оценку RAG-ответов к отношениям между тремя вещами: Вопросом, Найденными документами и Ответом. Для заказчика достаточно трёх контрольных вопросов: (Jason Liu, There Are Only 6 RAG Evals, май 2025)
① Нашли ли нужное?
Качество поиска — это прошлый урок: золотой набор и recall. Если здесь провал — дальше можно не смотреть.
② Ответ опирается на найденное?
Это верность источникам (faithfulness). Провал выглядит так: документы нашлись правильные, а модель добавила «от себя» — даты, цифры, условия, которых в документах нет. Ответ звучит уверенно и красиво. Это и есть галлюцинация в RAG.
③ Ответ отвечает на вопрос?
Релевантность ответа. Бывает: всё нашли, ничего не выдумали — но ответили не на то, что спрашивали («какой тариф?» → лекция об истории тарифной сетки).
Зачем разделять? Потому что лечатся они в разных местах: ① — поиск и база, ② — настройка генерации (этот урок), ③ — промпт и формат ответа. Сказать разработчику «ответы плохие» — бесполезно; сказать «провал по верности источникам» — это диагноз.
Цитаты из коробки: Citations
Раньше честность ответов выпрашивали промптом: «обязательно указывай источники!» — модель указывала… и иногда выдумывала сами источники. Сейчас это решено на уровне платформы: у Anthropic есть Citations — режим, в котором каждое утверждение ответа автоматически привязывается к конкретным предложениям из переданных документов. (дока Citations; разбор Саймона Уиллисона)
Цифры внедривших: у финансового ассистента Endex выдуманные ссылки на источники упали с 10% до нуля; юридический CoCounsel (Thomson Reuters) выбросил собственную самодельную систему цитирования. Точность ссылок — до +15% против промпт-решений. И приятная мелочь: процитированный текст не тарифицируется как сгенерированные токены.
Для вас это значит: «ассистент с честными ссылками на документы» — больше не отдельный подпроект, а одна строка в ТЗ: «использовать нативный механизм цитирования (Citations)». Есть и парный механизм search_result: результаты вашего поиска передаются модели так, что она цитирует их со ссылкой на документ-источник.
🔬 Под капотом: почему модель выдумывает — и почему цитаты помогают
Модель не «сверяется с базой данных» — она продолжает текст наиболее правдоподобным образом (вспомните урок 1: она умеет только писать текст). «Тариф Профи стоит…» имеет правдоподобные продолжения, и модель выберет одно из них, даже если точной цифры в контексте нет.
Вдобавок модели обучены быть полезными: без явного разрешения «не знать» ответ «не могу сказать» для неё проигрышный — и она тянется к правдоподобному.
Citations меняют саму задачу: вместо «вспомни и расскажи» — «подчеркни в переданном тексте, на что опираешься». Подчёркивать в реальном тексте принципиально надёжнее, чем генерировать: выдумать позицию в документе намного сложнее, чем выдумать факт.
Право на «не знаю»
Официальный рецепт Anthropic против выдумок до смешного прост: явно разрешить модели говорить «я не знаю». Одна фраза в системном промпте — «если ответа нет в документах, скажи об этом прямо» — резко снижает выдумывание. (официальный гайд Reduce Hallucinations)
Два усиления из того же гайда:
Сначала цитаты, потом ответ: для длинных документов модель сначала выписывает дословные цитаты по теме вопроса, а ответ строит только из них.
Право отзыва: каждое утверждение должно подтверждаться цитатой; не нашлось цитаты — утверждение убирается из ответа.
Для ассистента школы «не знаю» — это не провал, а фича: честное «не нашёл в материалах, передаю ваш вопрос куратору» бережёт репутацию лучше любого красивого выдуманного ответа.
Чего цитаты НЕ решают
Важная граница: цитаты гарантируют, что ответ опирается на найденные документы. Они не гарантируют, что найденные документы — правильные и свежие. Если в базе лежит прошлогодняя версия тарифов (урок 11: чистка базы!), ассистент будет честно, с точными цитатами, отвечать по устаревшему документу.
Цитаты — контроль честности генерации, а не качества базы. Три вопроса из начала урока работают только вместе.
Зачем это вам как заказчику
В ТЗ: «нативный механизм цитирования (Citations); каждое фактическое утверждение — со ссылкой на документ».
В ТЗ: «при отсутствии ответа в базе — явное „не найдено в материалах“ + передача человеку, не импровизация».
На приёмке задайте 5–10 вопросов, ответов на которые в базе точно нет. Ассистент, который на все ответил, — провалил проверку.
Жалуйтесь диагнозами: «провал поиска» / «провал верности источникам» / «отвечает не на то» — три разных починки.
Проверьте себя
Повторение урока 12. Что должно быть в ТЗ вместо «приёмка по демонстрации»?
Верно! Демо из пяти удачных вопросов делается за вечер. Recall на золотом наборе — объективная цифра, которую нельзя «сыграть».
Вспомните урок 12: единственная объективная приёмка поиска — recall на золотом наборе («из всех нужных документов — сколько попало в топ выдачи»).
Поиск нашёл правильные документы, но ответ содержит цифру, которой в них нет. Это провал какого из трёх вопросов?
Именно! Поиск отработал, а модель добавила «от себя» — классический провал faithfulness. Лечение: Citations, «сначала цитаты — потом ответ», право отзыва утверждений.
Поиск-то нашёл правильное — провал не в нём. Цифра «из ниоткуда» — это нарушение верности источникам (вопрос ②), лечится настройкой генерации: цитаты и право на «не знаю».
Что даёт нативный механизм Citations по сравнению с промптом «указывай источники»?
Верно! Промпт-цитаты модель могла выдумывать вместе с ответом. Citations переводят задачу в «подчеркни в тексте» — на уровне платформы, одной строкой в ТЗ.
Citations — не про длину и не про интернет: это машинная привязка каждого утверждения к предложениям переданных документов. Выдуманные ссылки у внедривших упали до нуля.
На приёмке вы задали ассистенту 10 вопросов, ответов на которые в базе нет. Он уверенно ответил на все. Вердикт?
Именно! Это была проверка честности, и он её провалил. Требуйте: явное «не найдено в материалах» + передача человеку. Уверенность без источника — худшее качество бизнес-ассистента.
Уверенные ответы на вопросы без ответа в базе — это выдумки. Сегодня он «эрудированный», завтра выдумает условия возврата денег. Право на «не знаю» — обязательное требование.
Практика: устройте проверку честности
🛠 Задание на 7 минут
Откройте Claude Code в папке с 2–3 вашими документами и попросите: «Отвечай на мои вопросы строго по этим документам. Если ответа нет — прямо говори „в документах этого нет“. Каждое утверждение подтверждай цитатой».
Задайте 3 вопроса, ответы на которые в документах есть, — проверьте цитаты.
Задайте 2 вопроса, ответов на которые точно нет (например, про цены конкурента). Скажет ли «не знаю»?
Теперь уберите из промпта право на «не знаю» и повторите вопрос без ответа. Почувствуйте разницу — вы только что воспроизвели главный эксперимент урока.
Что дальше
Конвейер собран целиком: база → поиск → честный ответ. Следующий урок — жизнь после запуска: обновления, деньги и агентная надстройка. Сколько всё это стоит в месяц, что дорожает первым и когда обычному конвейеру нужен агент сверху.