Кэширование запросов к модели — это способ не платить дважды за один и тот же ответ. В типовой клиентской поддержке 30–50 % вопросов повторяются почти дословно: условия доставки, сроки гарантии, как оформить возврат, что делать с браком. Модель отвечает на них одинаково, а счёт выставляется каждый раз заново.

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

Дальше — чем эти два кэша отличаются на схеме потока данных; расчёт экономии на 6 000 обращений в месяц при доле повторов 35 % и в рублях, и в секундах; главный риск и механика его снятия; список того, что нельзя кэшировать ни при каких условиях; и способ измерить свою долю повторов по журналу до того, как заказывать работу.

Два разных кэша, и путать их дорого

Разница видна на одном вопросе. Клиент пишет «сколько идёт доставка до Казани». Кэш готовых ответов ищет похожий вопрос среди уже отвеченных и, если находит, отдаёт сохранённый текст за доли секунды и за 0 ₽. Кэш неизменной части устроен иначе: он не знает про вопросы вообще, он просто помечает первые 1 200 токенов запроса как «эти же самые, что и в прошлый раз», и провайдер считает их по сниженной ставке.

Кэш готовых ответовКэш неизменной части запроса
Что хранитсяПара «нормализованный вопрос — ответ» вместе с датами ревизии источниковНачало запроса: инструкция, формат ответа, описание функций
Что экономитЗапрос к модели целиком: и вход, и выходЧасть входных токенов на каждом запросе, дошедшем до модели
Эффект в расчёте ниже4 230 ₽ в месяц2 430 ₽ в месяц
Влияние на задержкуОтвет за доли секунды вместо нескольких секундНебольшое: короче обработка входа
Главный рискОтдать устаревший ответ как актуальныйПрактически нет, если постоянная часть действительно постоянна
Цена работы30 000–50 000 ₽ разово плюс механика обновления4 часа инженера, около 12 000 ₽
схема процессаkeshirovanie-zaprosov-k-modeli--01
Поток данных: вопрос, нормализация, кэш ответов, сборка запроса, кэш неизменной части, модель

Схема потока данных слева направо. «Вопрос клиента» → «Нормализация: нижний регистр, номера и имена в заглушки» → ромб «есть в кэше ответов и ревизии совпадают?». Ветка «да» подписана «25 % запросов, 0 ₽, ответ за 0,2 секунды» и идёт короткой петлёй сразу в блок «Ответ клиенту». Ветка «нет» подписана «75 %, 13 500 запросов» и ведёт в блок «Сборка запроса», внутри которого две подписанные части: «неизменная часть, 1 200 токенов — из кэша по сниженной ставке» и «переменная часть: фрагменты базы, история, вопрос». Дальше стрелка в «Модель», от неё в «Ответ клиенту» и вниз пунктиром в «Запись в кэш: ответ плюс даты ревизии источников». Внизу отдельная стрелка от блока «Обновление документа» к картотеке с подписью «запись перестаёт совпадать по ключу». Чертёжный стиль, все подписи по-русски.

Первый кэш стоит до модели и снимает обращение целиком, второй — внутри запроса

Расчёт на 6 000 обращений при доле повторов 35 %

Вводные те же, что и в остальных наших расчётах по состоянию на сентябрь 2026 года: 6 000 обращений в месяц, в среднем три реплики на обращение — 18 000 запросов к модели, средний запрос 0,94 ₽. Из 6 000 обращений 2 100 (35 %) повторяются по смыслу, но кэшировать можно не все: около 600 из них имеют повторяющуюся формулировку при уникальном ответе — «где мой заказ» звучит одинаково у всех, а отвечать надо по-разному. Остаются 1 500 обращений, или 4 500 запросов, — 25 % потока.

Месяц эксплуатации, 18 000 запросов
Было: 18 000 запросов × 0,94 ₽16 920 ₽
Кэш готовых ответов: 4 500 запросов не доходят до модели−4 230 ₽
Кэш неизменной части: 13 500 запросов × 1 200 токенов × 0,15 ₽ за 1 000−2 430 ₽
Стало: счёт за модель после обоих кэшей10 260 ₽
Разовые работы: кэш ответов 40 000 ₽, инвалидация 24 000 ₽, настройка 12 000 ₽, журнал 9 000 ₽85 000 ₽
ИтогоЭкономия 6 660 ₽ в месяц и 79 920 ₽ в год; вложение возвращается за 12,8 месяца

Число 0,15 ₽ во второй строке — это разница между обычной входной ставкой 0,20 ₽ и сниженной ставкой чтения из кэша, взятой в расчёте как 0,05 ₽ за 1 000 токенов. Свою разницу берите из прайса провайдера: у части поставщиков запись в кэш платная, а чтение дешёвое, у части кэш живёт всего несколько минут, и на редком потоке от него не остаётся ничего. Это надо увидеть в документе до того, как строка попадёт в смету. Общая механика подсчёта разобрана в материале про токены и стоимость запросов.

Второй эффект — время. Возьмём типичный ответ модели за 3,0 секунды, ответ из кэша за 0,2 секунды. Средняя задержка по всему потоку становится 0,25 × 0,2 + 0,75 × 3,0 = 2,3 секунды вместо 3,0 — минус 23 %. Ускоряется при этом не «в среднем всё», а именно та четверть обращений, которая и так была самой простой: человек спрашивает про сроки доставки и получает ответ мгновенно. На восприятие сервиса это влияет сильнее, чем сокращение средней цифры.

графикkeshirovanie-zaprosov-k-modeli--02
Счёт за модель падает с 16 920 ₽ до 10 260 ₽: два кэша дают 4 230 ₽ и 2 430 ₽ экономии

Две горизонтальные полосы одинаковой шкалы, ось в рублях в месяц от 0 до 18 000. Верхняя «Было — 16 920 ₽» сплошная, подпись внутри «18 000 запросов × 0,94 ₽». Нижняя «Стало — 10 260 ₽» с двумя отсечёнными сегментами справа, показанными штриховкой и подписанными «кэш ответов −4 230 ₽» и «кэш неизменной части −2 430 ₽». Справа от полос вертикальная врезка с двумя числами: «средняя задержка 3,0 с» и «2,3 с». Внизу сноска: «разовые работы 85 000 ₽, возврат за 12,8 месяца; при 20 000 обращений — за 4 месяца». Чертёжный стиль, подписи по-русски.

Оба кэша вместе снимают 40 % счёта за модель и четверть средней задержки

Главный риск: свежий ответ по вчерашнему прайсу

Кэш не знает, что вы поменяли регламент

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

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

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

Что нельзя кэшировать никогда

Правило одно: если ответ зависит от чего-то, что меняется без вашего ведома, он не кэшируется. Формулировка вопроса при этом может повторяться сколько угодно — решает не вопрос, а ответ.

  • Всё, что зависит от конкретного клиента. Статус заказа, сумма долга, история покупок, персональная скидка. Даже если вопрос звучит дословно одинаково у тысячи человек.
  • Остатки, цены и доступность. Они меняются в учётной системе непрерывно, и правильный маршрут для них — не кэш, а прямой запрос в систему. Это как раз тот случай, когда дешевле и надёжнее правило вместо модели.
  • Всё, что зависит от текущей даты. «Успею ли к празднику», «работаете ли завтра», «сколько дней осталось по гарантии» — вчерашний ответ на такой вопрос неверен по определению.
  • Ответы, содержащие персональные данные. Кэш — это ещё одно хранилище: попав в него, фамилия и телефон живут там до истечения срока записи. По 152-ФЗ такое хранилище требует тех же оснований и той же защиты, что и основная база, поэтому проще не класть туда ПДн вовсе.
  • Ответы, по которым идёт спор. Если формулировка обсуждается с юристами или менялась дважды за месяц, держите её вне кэша до стабилизации: цена ошибки здесь выше сэкономленного рубля.

Как замерить долю повторов по своему журналу

Замер делается до заказа работы и занимает несколько часов. Он же даёт честный ответ на вопрос, нужен ли кэш вообще.

  1. 1
    Выгрузите первые реплики всех обращений за месяц

    Именно первые: они содержат исходный вопрос, а не уточнения. В модельном примере это 6 000 строк, выгрузка занимает минуты, если журнал вёлся.

  2. 2
    Нормализуйте текст

    Нижний регистр, убрать знаки препинания, заменить номера заказов и имена на заглушки. Без этого «Сколько идёт доставка?» и «сколько идет доставка» окажутся разными вопросами, и доля повторов выйдет заниженной вдвое.

  3. 3
    Посчитайте две границы

    Точные дубли после нормализации — нижняя граница; в наших расчётах по токенам она составляла 15 %. Группировка по смыслу через векторный поиск даёт верхнюю, в этой статье — 35 %. Реальная кэшируемая доля лежит между ними.

  4. 4
    Отсеките клиентозависимые группы

    Пройдите по двадцати самым крупным группам и отметьте те, где ответ зависит от клиента, остатка или даты. В модельном примере так отсеиваются 600 обращений из 2 100 — почти треть повторов.

  5. 5
    Сверьте с порогом

    Если кэшируемая доля меньше 15 % запросов, отдельный проект не окупится: при 6 000 обращений это около 5 300 ₽ экономии в месяц против 85 000 ₽ работ, то есть больше года. Тогда кэш делается попутно, вместе с основной разработкой, и стоит 12 000–20 000 ₽.

Когда кэш не нужен

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

  • Поток меньше 2 000 обращений в месяц. Весь счёт за модель на таком объёме — несколько тысяч рублей, и 40 % от него не оправдывают ни работы, ни риска устаревших ответов.
  • База знаний ещё меняется каждую неделю. На этапе, когда формулировки правятся постоянно, кэш будет сбрасываться быстрее, чем наполняться. Возвращайтесь к нему через два-три месяца после запуска.
  • Качество ответов ещё не измеряется. Кэш закрепляет то, что модель отвечает сейчас. Если метрики качества ответов не настроены, вы рискуете зафиксировать и растиражировать неудачную формулировку.
  • Вопросы почти не повторяются. Во внутренних инженерных и юридических помощниках доля точных повторов бывает ниже 5 %: там люди задают разные вопросы по разным документам, и экономить не на чем.
  • У базы знаний нет владельца. Без человека, проставляющего дату ревизии, инвалидация не работает, и кэш из инструмента экономии превращается в источник устаревших ответов.

Кэш экономит деньги за счёт того, что перестаёт спрашивать. Поэтому единственный важный вопрос к нему — как он узнаёт, что пора спросить заново.