Практик Джейсон Лю свёл всю оценку RAG-ответов к отношениям между тремя вещами: Вопросом, Найденными документами и Ответом. Для заказчика достаточно трёх контрольных вопросов: (Jason Liu, There Are Only 6 RAG Evals, май 2025)
Качество поиска — это прошлый урок: золотой набор и recall. Если здесь провал — дальше можно не смотреть.
Это верность источникам (faithfulness). Провал выглядит так: документы нашлись правильные, а модель добавила «от себя» — даты, цифры, условия, которых в документах нет. Ответ звучит уверенно и красиво. Это и есть галлюцинация в RAG.
Релевантность ответа. Бывает: всё нашли, ничего не выдумали — но ответили не на то, что спрашивали («какой тариф?» → лекция об истории тарифной сетки).
Зачем разделять? Потому что лечатся они в разных местах: ① — поиск и база, ② — настройка генерации (этот урок), ③ — промпт и формат ответа. Сказать разработчику «ответы плохие» — бесполезно; сказать «провал по верности источникам» — это диагноз.
Раньше честность ответов выпрашивали промптом: «обязательно указывай источники!» — модель указывала… и иногда выдумывала сами источники. Сейчас это решено на уровне платформы: у Anthropic есть Citations — режим, в котором каждое утверждение ответа автоматически привязывается к конкретным предложениям из переданных документов. (дока Citations; разбор Саймона Уиллисона)
Цифры внедривших: у финансового ассистента Endex выдуманные ссылки на источники упали с 10% до нуля; юридический CoCounsel (Thomson Reuters) выбросил собственную самодельную систему цитирования. Точность ссылок — до +15% против промпт-решений. И приятная мелочь: процитированный текст не тарифицируется как сгенерированные токены.
Для вас это значит: «ассистент с честными ссылками на документы» — больше не отдельный подпроект, а одна строка в ТЗ: «использовать нативный механизм цитирования (Citations)». Есть и парный механизм search_result: результаты вашего поиска передаются модели так, что она цитирует их со ссылкой на документ-источник.
Модель не «сверяется с базой данных» — она продолжает текст наиболее правдоподобным образом (вспомните урок 1: она умеет только писать текст). «Тариф Профи стоит…» имеет правдоподобные продолжения, и модель выберет одно из них, даже если точной цифры в контексте нет.
Вдобавок модели обучены быть полезными: без явного разрешения «не знать» ответ «не могу сказать» для неё проигрышный — и она тянется к правдоподобному.
Citations меняют саму задачу: вместо «вспомни и расскажи» — «подчеркни в переданном тексте, на что опираешься». Подчёркивать в реальном тексте принципиально надёжнее, чем генерировать: выдумать позицию в документе намного сложнее, чем выдумать факт.
Что это технически. Не отдельный сервис и не кнопка в интерфейсе — это режим Claude API. Разработчик передаёт документы прямо в запрос (PDF, текст или готовые куски из вашего поиска) и помечает каждый: «цитирование включено». Платформа сама нарезает документы на предложения — это и есть единицы, на которые можно сослаться.
Ответ приходит не одной строкой, а чередованием блоков (как с вызовами инструментов из урока 1): кусок текста → машинные указатели «документ такой-то, предложения такие-то» → следующий кусок. Указатели гарантированно ведут в реальные места документов — выдумать их нельзя, они извлекаются, а не генерируются. Интерфейс ассистента рисует из них сноски.
Фишка Claude или есть у всех? В таком виде — фирменная механика Anthropic. У OpenAI аналог — File Search: managed-поиск по вашим файлам, ответ приходит с пометками-аннотациями «процитирован такой-то файл»; гранулярность грубее — файл и фрагмент выдачи, а не конкретные предложения.
У Google — grounding («заземление» ответа) с метаданными источников. А на опенсорс-моделях нативных цитат нет: атрибуцию строит RAG-фреймворк или промпт — то самое ненадёжное «указывай источники».
Что писать в ТЗ, чтобы не привязываться к платформе: «каждое фактическое утверждение — с машинной привязкой к месту в документе-источнике; промпт-цитаты не считаются». Какой платформой это закрыть — решение разработчика, но теперь вы понимаете, между чем он выбирает.
Ограничение для блока 3: Citations несовместимы со строгим форматом ответа (structured outputs, урок 19) — нельзя одновременно требовать «ответ строго по схеме» и «ответ с чередованием цитат». Для ассистентов-собеседников это не мешает, для конвейеров — учитывать. (проверено по живой доке Citations и доке OpenAI File Search, июнь 2026)
Официальный рецепт Anthropic против выдумок до смешного прост: явно разрешить модели говорить «я не знаю». Одна фраза в системном промпте — «если ответа нет в документах, скажи об этом прямо» — резко снижает выдумывание. (официальный гайд Reduce Hallucinations)
Два усиления из того же гайда:
Для ассистента школы «не знаю» — это не провал, а фича: честное «не нашёл в материалах, передаю ваш вопрос куратору» бережёт репутацию лучше любого красивого выдуманного ответа.
Важная граница: цитаты гарантируют, что ответ опирается на найденные документы. Они не гарантируют, что найденные документы — правильные и свежие. Если в базе лежит прошлогодняя версия тарифов (урок 11: чистка базы!), ассистент будет честно, с точными цитатами, отвечать по устаревшему документу.
Цитаты — контроль честности генерации, а не качества базы. Три вопроса из начала урока работают только вместе.
«Отвечай на мои вопросы строго по этим документам. Если ответа нет — прямо говори „в документах этого нет“. Каждое утверждение подтверждай цитатой».Конвейер собран целиком: база → поиск → честный ответ. Следующий урок — жизнь после запуска: обновления, деньги и агентная надстройка. Сколько всё это стоит в месяц, что дорожает первым и когда обычному конвейеру нужен агент сверху.