Методология CiteFlow

Мы измеряем, как нейросети отвечают на вопросы покупателей: упоминают ли бренд, кого рекомендуют вместо него и на какие источники опираются. На этой странице – полный протокол измерения. Мы публикуем его, потому что цифра без методологии – это мнение, а не измерение.

Панель запросов

Для каждого проекта мы строим панель из 100–150 запросов – не ключевых слов из SEO-инструментов, а вопросов в том виде, в каком их задают нейросетям живые люди: «где заказать букет с доставкой за час», а не «доставка цветов москва купить». Панель покрывает всю воронку: от общих вопросов категории до сравнений конкретных брендов.

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

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

Движки и два класса ответов

Мы опрашиваем движки двух принципиально разных классов и никогда не смешиваем их в одной метрике.

Движки с поиском (grounded): Алиса/Нейро, ChatGPT с веб-поиском. Они ищут информацию в интернете и цитируют источники. Здесь измеримы и упоминания бренда, и доля цитирований его сайта, и карта источников, которым движок доверяет.

Движки без поиска (ungrounded): GigaChat, DeepSeek (в API-версиях). Они отвечают из того, что выучили при обучении. Источников здесь нет и быть не может – измеримы только упоминания. Это не дефект измерения, а свойство движка: 38% российских пользователей ИИ спрашивают GigaChat, и то, что модель «знает» о бренде из коробки, – самостоятельный и важный сигнал.

Мы всегда указываем, каким способом получен ответ (API или интерфейс) и какая модель фактически ответила – модель из ответа провайдера, а не из нашего запроса: провайдеры перенаправляют алиасы моделей без предупреждения, и мы это логируем.

Почему каждый вопрос задаётся минимум трижды

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

Поэтому одиночный замер – это шум. Каждая цифра CiteFlow – результат минимум трёх прогонов каждого запроса (K≥3), а рядом с цифрой мы показываем интервал неопределённости. Если доля упоминаний бренда – «12% ± 3 п.п.», это значит: при повторении измерения тем же протоколом результат ляжет в этот диапазон.

Из этого следует неудобное, но честное правило: не всякое изменение – результат. Для каждой панели мы считаем минимальный обнаружимый эффект (MDE) – порог, ниже которого «рост» неотличим от шума. Изменение на 2 п.п. при MDE 5 п.п. – это не динамика, это погрешность, и мы так и пишем.

Метрики и их знаменатели

У каждой метрики опубликован знаменатель – без него процент не значит ничего.

Mention Rate – доля ответов, в которых упомянут бренд. Знаменатель: все успешные ответы движка по панели, включая ответы «не знаю» и отказы (это тоже данные о видимости).

Citation Share – доля ответов grounded-движка, в которых процитирован домен. Мы засчитываем только источники, которые движок реально использовал в ответе: Яндекс, например, отдаёт и найденные, но не использованные источники – они учитываются отдельно, как «шорт-лист без цитаты».

Grounding Rate – доля ответов с источниками вообще; показывает, в какой мере видимость в движке управляется через публикации, а в какой зашита в веса модели.

Эхо промпта не засчитывается. Если бренд или домен звучит в самом вопросе («CiteFlow отзывы»), его повторение в ответе – не заработанное упоминание, и в Mention Rate оно не входит. Без этого правила брендовые запросы панели создают видимость ненулевой базы из ничего.

Ошибки провайдера не выбрасываются из знаменателя, а учитываются как исходы – иначе метрика завышается в дни сбоев. При этом мы различаем два вида ошибок: отказ провайдера при корректном обращении – это наблюдение, оно остаётся в данных; ошибка нашего собственного инструмента (например, превышение нами же лимитов запросов) – это брак измерения, он исключается с сохранением сырья и явной пометкой в отчёте.

Что мы храним и показываем

Каждый сырой ответ каждого прогона сохраняется с датой измерения, движком, фактической моделью и источниками. Любую цифру в отчёте можно раскрыть до конкретных ответов, на которых она посчитана. Если клиент вручную задаст тот же вопрос и получит другой ответ – это ожидаемо (см. про три прогона), и именно поэтому мы показываем распределение, а не один ответ.

Ограничения – о них честно

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

Движки обновляются без предупреждения. Одновременный сдвиг метрик у всех проектов – признак обновления модели, а не работы всех брендов сразу; такие события мы аннотируем на графиках.

Мы не гарантируем «места в ответах нейросетей» – их не контролирует никто. Мы гарантируем честное измерение, воспроизводимый протокол и план действий, эффект которых можно проверить этим же протоколом.


Вопросы к методологии – hello@citeflow.ru. Если вы нашли слабое место в протоколе, мы хотим об этом узнать первыми.

Проверить свой бренд этим протоколом