RAG и данныеИнструкция
Сколько стоит вопрос в RAG и сколько чанков слать
Прикиньте токены одного RAG-вопроса, посмотрите цену 1000 и 100 000 вопросов на живых ценах и выберите число чанков под свой бюджет.

Содержание
Бот по документам заработал, пришёл первый счёт — и он больше, чем стоят сами вопросы. Почти в любом RAG деньги уходят в одно место: найденные чанки, которые вы вставляете перед каждым вопросом. Один RAG-вопрос стоит токенов вопроса, ваших инструкций и N чанков на входе плюс короткого ответа на выходе. Чанки — та часть, которой вы управляете, и каждый добавляет одно и то же число токенов в каждый запрос.
Здесь мы посчитаем один запрос, оценим 1000 и 100 000 запросов на живых ценах и посмотрим, что меняется при переходе с top-k 3 на 10. Сам поиск (ваше векторное хранилище и нарезка) остаётся на вашей стороне; к API уходит только последний вызов — генерация. Если про оплату входа и выхода вы раньше не читали, начните с входных и выходных токенов.
Из чего состоит один RAG-запрос#
Допустим, у вас бот поддержки по документам компании. Клиент спрашивает: «Как сбросить двухфакторный вход?», поиск возвращает пять лучших фрагментов, и вы отправляете модели вот что:
- системный промпт: «Отвечай только по контексту. Если там нет ответа, так и скажи» — около 300 токенов вместе с правилами оформления;
- вопрос с небольшим куском диалога — около 200 токенов;
- 5 чанков по 500 токенов — 5 × 500 = 2 500 токенов;
- ответ: два-три коротких абзаца — около 300 токенов на выходе.
Вход получается 2 500 + 300 + 200 = 3 000 токенов, выход — около 300. Это допущения автора для типичного бота поддержки; подставьте свои числа. Дальше этот запрос — наша единица измерения.
Картина простая: чанки — примерно пять шестых всего входа, а вход в десять раз больше ответа. Оцените сами:
Угадайте число
Сколько входных токенов уходит в запросе выше?
Ваш вариант
010 000
Показать ответ
Ответ: 3 000
3 000: 5 чанков × 500 = 2 500, плюс 300 на системный промпт и 200 на вопрос. Чанки занимают почти весь вход.
Сколько стоят 1000 вопросов#
Один запрос слишком мал, чтобы его почувствовать, поэтому умножаем. При 3 000 токенов на входе и 300 на выходе 1000 вопросов отправляют 3 000 000 входных токенов и генерируют 300 000 выходных. Подвигайте значения ниже под свой бот: сайт пересчитает всё на живых ценах для каждой модели.
Калькулятор стоимости
День работы бота поддержки
Входные токены на запрос: 3 000 · Выходные токены на запрос: 300 · Запросов в день: 1 000
| Модель | В день | В месяц |
|---|---|---|
| GLM-5.3-Flash$0.02$0.04 | $0.072 | $2.16 |
| DeepSeek-V4-Flash$0.015$0.10 | $0.075 | $2.25 |
| MiniMax-M2.7$0.05$0.15 | $0.195 | $5.85 |
В таблице та же нагрузка для трёх моделей, рядом — справочная цена OpenRouter. В сумме, с учётом входа и выхода, каждая из них здесь выходит дешевле OpenRouter.
| Модель | Вход $/1M | Выход $/1M | За запрос | 1 000 запросов | OpenRouter, 1 000 запросов |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000072 | $0.072 | $0.147 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000075 | $0.075 | $0.19 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0002 | $0.195 | $1.26 |
3 000 входных и 300 выходных токенов на запрос. Цены за 1M токенов актуальны и меняются вместе с нашими тарифами; столбец OpenRouter показывает справочные цены для той же нагрузки.
А 100 000 вопросов? Это 300 000 000 токенов на входе и 30 000 000 на выходе. На DeepSeek-V4-Flash это $7.50, на GLM-5.3-Flash $7.20, на MiniMax-M2.7 $19.50. Цена у каждой модели фиксированная, пиковых часов нет: ночной пакет и дневной чат стоят за токен одинаково. Весь прайс — на странице цен.
Top-k: каждый чанк добавляет одно и то же#
Второй сценарий — внутренний помощник по вики. Кто-то предлагает: «Давайте слать 10 чанков вместо 3, на всякий случай». Вход растёт по прямой: каждый чанк — ещё 500 токенов в каждом запросе.

2 000 против 5 500 токенов: ответ той же длины, так что вся разница в счёте помощника — это вход. Даст ли это ответ лучше — вопрос качества: когда нужный фрагмент уже в контексте, лишние чанки в основном добавляют шум и расходы. Практичный способ выбрать k: взять набор реальных вопросов, посмотреть, при каком k нужный фрагмент попадает в выдачу, и остановиться чуть выше.
Второе ограничение — контекстное окно. У всех трёх моделей места хватает для обычного top-k: 180K токенов у MiniMax-M2.7, 380K у DeepSeek-V4-Flash и 390K у GLM-5.3-Flash. Длина ответа отличается: до 8 192 токенов у GLM-5.3-Flash и MiniMax-M2.7, до 32 768 у DeepSeek-V4-Flash — это важно, если ответы у вас длинные отчёты, а не короткие реплики.
Выберите свой случай
Какой у вас RAG-случай?
Выберите вариант, чтобы увидеть ответ
Короткие ответы из нескольких чанков
Бот поддержки или FAQ с top-k 3–6 и ответами в пару сотен токенов подходит любой из трёх моделей. Выбирайте по качеству на своих вопросах, а потом смотрите на таблицу стоимости выше.
Длинные ответы и пересказы
Если ответы занимают тысячи токенов, DeepSeek-V4-Flash даёт до 32 768 токенов в ответе и контекст 380K.
Много документов в одном запросе
Если нужно объединять много фрагментов или целые разделы, у GLM-5.3-Flash самый большой контекст из трёх — 390K.
Весь документ в промпте или четыре чанка#
Третий сценарий — вопросы по договору. Ленивый вариант вставляет в каждый вопрос весь PDF на 30 000 токенов. Вариант с поиском отправляет вопрос, инструкции и четыре подходящих чанка по 650 токенов, всего около 3 000 токенов. Те же 1000 вопросов, те же ответы по 300 токенов:
Весь документ отправляет в десять раз больше входа, 30 000 ÷ 3 000 = 10, ради того же вопроса. Он оправдан для одного разового вопроса по документу, который помещается в контекст. Для бота, который отвечает весь день, это дорогой вариант по умолчанию. А если большая часть входа каждый раз одинакова, почитайте про кэширование промпта.
Отправьте запрос#
Ниже — шаг генерации. Поиск ваш: chunks — то, что вернуло ваше векторное хранилище. Тот же код работает с OpenAI SDK и обычным curl.
Вопрос с найденными чанками
Python
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="YOUR_CHEAPTOKENS_KEY",
)
chunks = ["Chunk 1 text...", "Chunk 2 text...", "Chunk 3 text..."]
context = "\n\n---\n\n".join(chunks)
resp = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
max_tokens=400,
messages=[
{"role": "system", "content": "Answer only from the context. If the answer is not there, say so."},
{"role": "user", "content": f"Context:\n{context}\n\nQuestion: How do I reset two-factor login?"},
],
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)curl
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer YOUR_CHEAPTOKENS_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"max_tokens": 400,
"messages": [
{"role": "system", "content": "Answer only from the context. If the answer is not there, say so."},
{"role": "user", "content": "Context:\nChunk 1...\n\nQuestion: How do I reset two-factor login?"}
]
}'Самая полезная строка в примере на Python — последняя. usage. — ваш настоящий вход на вопрос; сравните его с оценкой в 3 000 и замените мои допущения своими числами. Берите полный id модели, как в примере; все id — в документации. Полная настройка — в документации, а как токены копятся по ходу диалога, разбирает статья почему длинный чат стоит дороже.
Четыре способа сократить вход#
Начните с max_tokens: он ограничивает ответ и защищает от затянувшегося вывода. Затем уменьшите k до наименьшего значения, при котором нужный фрагмент всё ещё находится. Делайте чанки плотнее, чтобы 500 токенов несли 500 токенов смысла, а не заголовки и шаблонный текст. Убирайте дубли перед отправкой: два почти одинаковых фрагмента стоят дважды, а говорят один раз. И мерьте по usage на реальном трафике, потому что чанки по 500 токенов — пока только догадка. Шире про то, куда уходят токены в вызове API, — в статье сколько токенов использует запрос.
Подставьте свои токены на запрос в калькулятор выше, чтобы прикинуть цену бота на всех трёх моделях; если ответы длинные, начните с DeepSeek-V4-Flash.



