Проверяем, честно ли RAG цитирует источники

Урок 12 из 80 курса «Gemini API: примеры использования»: официальный курс Gemini API Cookbook (Гугл Джемини) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

Когда ответ Gemini RAG ссылается на свои источники — посредством grounding metadata или запрашивая structured citations с помощью response schema — цитаты могут быть ошибочными таким образом, что выглядят абсолютно авторитетными, и LLM, которому задали вопрос "подтверждает ли эта цитата утверждение?", пропускает их: сфабрикованная — цитируемый фрагмент, который отсутствует ни в одном исходном документе; франкенцитата — каждое слово реально, но точный фрагмент никогда не был написан непрерывно в источнике; неверно атрибутированная — реальный фрагмент, но приписанный неверному документу. Этот notebook демонстрирует шаблон дешёвый детерминированный детектор → дорогой judge: Попросить Gemini, используя structured output (response_schema), вернуть каждое утверждение с document_id, на который оно опирается, и короткой дословной цитатой. Запустить 0-token verbatim gate (чистый Python — без модели, без API key), который проверяет, появляется ли каждая цитата в цитируемом документе. Это отсеивает три описанных выше режима отказа и работает в автономном режиме. Только для цитат, прошедших gate, опционально вызвать burden-of-proof judge — сфабрикованные цитаты никогда до него не доходят, поэтому они стоят ноль токенов. Gate встроен здесь; его автономная, не зависящая от фреймворка версия (gate + burden-of-proof judge) находится по адресу verbatim-citation-gate. Здесь не требуется API key — это формат цитат, возвращаемых response_schema, с одной достоверной цитатой и тремя заложенными режимами отказа. Gate отвечает только на один вопрос: появляется ли эта цитата, дословно, в документе, которому она приписана? misattributed и not_found могут быть помечены или отброшены прямо здесь, детерминированно, за ноль токенов. Цитата со статусом found ещё не является корректной — реальная, правильно атрибутированная цитата всё ещё может не подтверждать утверждение, к которому она прикреплена. Именно для такой оценки предназначен опциональный judge ниже. Используя API key, попросите Gemini ответить и вернуть структурированные цитаты, затем пропустите их через тот же gate. Использует Interactions API SDK google-genai с JSON-schema response_format; считывает Colab secret GEMINI_API_KEY (не запускается в CI). Gate определяет, существует ли цитата.

План урока

  1. Verbatim gate (детерминированный, работает офлайн)
  2. Проверка офлайн на структурированных цитатах
  3. Генерация цитат с помощью Gemini structured output
  4. Опционально: burden-of-proof judge для неоднозначных случаев
  5. Дальнейшие шаги
  6. Полезные ссылки на API
  7. Связанные примеры
  8. Продолжите изучение Gemini API

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Урок входит в темы

Полезные гиды