1. Главная
  2. Блог
  3. RAG и базы знаний
  4. Цитирование источников в RAG: чтобы ответ можно было проверить

Цитирование источников в RAG: чтобы ответ можно было проверить

14 августа 2026
51

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

Для пользователя — возможность проверить. Ответ без источника приходится принимать на веру, а в регулируемых сферах это неприемлемо в принципе.

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

Для системы — сдерживающий механизм. Требование сослаться на переданный источник заметно снижает склонность модели дописывать от себя: утверждение, которое не подкрепить ссылкой, она формулирует реже.

Третий эффект — главный. Цитирование не столько показывает происхождение ответа, сколько меняет сам ответ в лучшую сторону.

Три уровня привязки

Различаются трудоёмкостью и пользой.

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

Уровень 2: ссылка на фрагмент. Указан конкретный раздел или пункт, откуда взяты сведения, со ссылкой на место в документе. Рабочий вариант для большинства систем.

Уровень 3: привязка к утверждению. Каждое утверждение ответа помечено источником, из которого следует. Самый полезный и самый трудоёмкий уровень: позволяет увидеть, что первое предложение подтверждено, а второе модель добавила от себя.

Разумный ориентир — второй уровень как основной, третий в темах с высокой ценой ошибки.

Как это делают

Пометки на фрагментах. Каждому переданному фрагменту присваивается номер, и модели предписано ставить его рядом с утверждением. Просто и работает.

Слабое место: модель может поставить номер несуществующего фрагмента или приписать утверждение не к тому. Поэтому обязателен следующий пункт.

Проверка ссылок после генерации. Ссылки из ответа сверяются с тем, что реально передавалось. Несуществующие удаляются или ответ переформулируется. Это дешёвая программная проверка, а не обращение к модели, и она обязательна: непроверенная ссылка хуже отсутствующей, потому что создаёт ложное ощущение достоверности.

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

Точная привязка внутри документа. Ссылка ведёт не на документ, а на место: страницу, пункт, абзац. Требует, чтобы координаты сохранялись при извлечении текста и нарезке — задним числом это не восстановить.

Что должно быть в ссылке

  • название документа — понятное человеку, а не имя файла;
  • раздел или пункт — «п. 4.2», «Раздел 3. Условия доставки»;
  • дата редакции — критично там, где документы обновляются;
  • ссылка для перехода, если документ доступен пользователю;
  • сама цитата — короткая выдержка, на которой основан ответ.

Последнее недооценивают. Выдержка позволяет проверить ответ, не открывая документ, и резко сокращает время разбора жалоб.

Осторожно с правами. Название документа само по себе может быть закрытой информацией. Ссылки формируются из того же отфильтрованного набора, что и контекст, — «Разграничение доступа в RAG».

Отказ — часть той же механики

Цитирование и отказ от ответа — две стороны одного правила: отвечать только по переданным источникам.

Если подходящих фрагментов не нашлось или их оценка ниже порога, правильное поведение — сказать, что сведений нет, и предложить человека. Порог удобно брать по оценке реранкера.

Система, обязанная отвечать всегда, будет заполнять пробелы — «Почему нейросеть выдумывает». Требование ссылки без возможности отказаться приводит к худшему из исходов: модель придумывает ответ и подкрепляет его ссылкой на фрагмент, где этого нет.

Разбор: ссылки, которые вели не туда

Задача. Система для юридического отдела: ответы по внутренним положениям и типовым договорам. Требование заказчика — обязательная ссылка на пункт.

Симптом. Юристы стали жаловаться не на ответы, а на ссылки: ответ верный, а указанный пункт про другое. Иногда пункт вообще не существовал.

Что показал разбор.

Модели передавались фрагменты с пометками вида «[Источник 3]», и предписывалось ссылаться. Проверки ссылок после генерации не было.

Обнаружилось три разных сбоя.

Первый: модель ставила номера фрагментов, которых в контексте не было, — например, «[Источник 7]», когда передавалось пять. Редко, но регулярно.

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

Третий, самый неприятный: номера пунктов модель брала из текста фрагмента, а не из его метаданных. Если во фрагменте упоминалось «в соответствии с п. 7.3», модель ссылалась на 7.3, хотя сам фрагмент был из пункта 5.1. Ссылка выглядела правдоподобно и вела не туда.

Что сделали.

Добавили программную проверку: ссылки из ответа сверяются со списком переданных фрагментов, несуществующие удаляются, ответ помечается как неполный.

Разделили роли: номер пункта берётся из метаданных фрагмента и подставляется системой, а не пишется моделью. Модель указывает только, каким фрагментом подтверждается утверждение; человекочитаемую ссылку формирует код.

Перешли на привязку по предложениям: каждое утверждение получает свою ссылку, а не одна на весь ответ.

Добавили короткую цитату под ответом — ту самую выдержку, на которой утверждение основано.

Что изменилось. Жалобы на ссылки прекратились. Побочный и более ценный эффект: юристы начали замечать случаи, когда ответ верный, но подтверждается слабо, — и это стало источником доработки корпуса. Раньше такие случаи были невидимы.

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

Как проверять качество цитирования

Отдельная метрика, а не часть общего качества ответов:

  • доля ответов со ссылками — должна быть близка к полной, кроме отказов;
  • доля существующих ссылок — сверка с переданными фрагментами, программно;
  • доля утверждений, подтверждённых источником — обоснованность, «Метрики RAG»;
  • доля ответов без источника — прямой признак, что модель ответила от себя;
  • корректность отказа — отказывается ли система, когда подходящих фрагментов нет.

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

Частые вопросы

Зачем нужны ссылки на источники в RAG?

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

Может ли модель выдумать ссылку?

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

Как сделать ссылку на конкретный пункт документа?

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

Что делать, если подходящих источников нет?

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

Нужно ли показывать цитату, а не только ссылку?

Желательно. Короткая выдержка позволяет проверить ответ, не открывая документ, и резко сокращает время разбора спорных случаев. В регулируемых сферах это обычно обязательное требование.

Как проверить, что ссылки правильные?

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

Что дальше

Точность ссылок упирается в подготовку корпуса — «Чанкинг документов» и «OCR и PDF». Порог отказа удобно брать от реранкера. Как измерять обоснованность ответов — «Метрики RAG».

Проектирование систем с проверяемыми ответами, включая привязку утверждений к источникам, — часть работы по разработке и внедрению ИИ.