Powrót do bloga

RAG i danePrzewodnik

Ile kosztuje pytanie RAG: ile fragmentów wysyłać

Oszacuj tokeny w jednym pytaniu RAG, zobacz koszt 1 000 i 100 000 pytań na aktualnych cenach i wybierz liczbę fragmentów, która pasuje do Twojego budżetu.

Autor: CheapTokens TeamOpublikowano 5 min czytania

Diagram: pytanie i pobrane fragmenty trafiają do modelu, koszt zależy od liczby fragmentów
Na tej stronie
  1. Co wchodzi w jedno żądanie RAG
  2. Ile kosztuje 1 000 pytań
  3. Top-k: każdy fragment dodaje tyle samo
  4. Cały dokument w prompcie albo cztery fragmenty
  5. Wyślij żądanie
  6. Cztery sposoby na zmniejszenie wejścia

Twój chatbot dokumentowy działa, przychodzi pierwsza faktura i jest większa, niż pytania na to zasługują. W niemal każdym układzie RAG pieniądze idą w jedno miejsce: pobrane fragmenty, które wklejasz przed każdym pytaniem. Jedno pytanie RAG kosztuje tokeny pytania, Twoich instrukcji i N fragmentów po stronie wejścia oraz krótką odpowiedź po stronie wyjścia. Fragmenty to część, którą kontrolujesz, a każdy z nich dodaje tę samą liczbę tokenów do każdego pojedynczego żądania.

Ten przewodnik liczy jedno żądanie, wycenia 1 000 i 100 000 z nich na aktualnych cenach i pokazuje, co się zmienia, gdy przesuniesz top-k z 3 na 10. Samo wyszukiwanie (Twój magazyn wektorów, Twoje dzielenie na fragmenty) zostaje po Twojej stronie; tylko końcowe wywołanie generowania trafia do API modelu. Jeśli rozliczanie wejścia i wyjścia jest dla Ciebie nowe, zacznij od tokeny wejściowe vs wyjściowe.

Co wchodzi w jedno żądanie RAG#

Załóżmy, że prowadzisz bota wsparcia po dokumentach firmowych. Klient pyta: „Jak zresetować logowanie dwuskładnikowe?”, Twój retriever zwraca pięć najlepszych fragmentów, a Ty wysyłasz to do modelu:

  • prompt systemowy: „Odpowiadaj tylko na podstawie kontekstu. Jeśli czegoś tam nie ma, powiedz to.” — około 300 tokenów po dodaniu reguł formatowania;
  • pytanie z odrobiną kontekstu czatu — około 200 tokenów;
  • 5 fragmentów po około 500 tokenów każdy — 5 × 500 = 2 500 tokenów;
  • odpowiedź: dwa lub trzy krótkie akapity — około 300 tokenów na wyjściu.

Strona wejścia to 2 500 + 300 + 200 = 3 000 tokenów, strona wyjścia około 300. To założenia autora dla typowego bota wsparcia; podstaw własne liczby. Wszystko poniżej używa tego jednego żądania jako jednostki.

Szybki sposób, by zobaczyć proporcje: fragmenty to mniej więcej pięć szóstych całego wejścia, a wejście jest dziesięć razy większe od odpowiedzi. Spróbuj oszacować sam:

Zgadnij liczbę

Ile tokenów wejściowych wysyła powyższe żądanie?

Pokaż odpowiedź

Odpowiedź: 3000

3 000: 5 fragmentów × 500 = 2 500, plus 300 na prompt systemowy i 200 na pytanie. Fragmenty dominują.

Ile kosztuje 1 000 pytań#

Jedno żądanie jest zbyt małe, by je odczuć, więc je przeskaluj. Przy 3 000 tokenów na wejściu i 300 na wyjściu 1 000 pytań wysyła 3 000 000 tokenów wejściowych i generuje 300 000 tokenów wyjściowych. Przeciągnij suwaki poniżej, by dopasować do własnego bota; strona przelicza na aktualnych cenach dla każdego modelu.

Kalkulator kosztów

Jeden dzień bota wsparcia

Tokeny wejściowe na żądanie: 3000 · Tokeny wyjściowe na żądanie: 300 · Żądania dziennie: 1000

ModelDziennieMiesięcznie
GLM-5.3-Flash$0.072$2.16
DeepSeek-V4-Flash$0.075$2.25
MiniMax-M2.7$0.195$5.85

Tabela pokazuje to samo obciążenie dla wszystkich trzech modeli, z odniesieniem do OpenRouter obok. Licząc łącznie, wejście i wyjście razem, każdy z nich wychodzi tu taniej niż OpenRouter.

Model Za żądanie 1000 żądań OpenRouter, 1000 żądań
GLM-5.3-Flash $0.000072 $0.072 $0.147
DeepSeek-V4-Flash $0.000075 $0.075 $0.19
MiniMax-M2.7 $0.0002 $0.195 $1.26

3000 tokenów wejściowych i 300 tokenów wyjściowych na żądanie. Ceny za 1 mln tokenów są aktualne i zmieniają się wraz z naszymi taryfami; kolumna OpenRouter pokazuje ceny referencyjne dla tego samego obciążenia.

A przy 100 000 pytań? To 300 000 000 tokenów na wejściu i 30 000 000 na wyjściu. Na DeepSeek-V4-Flash to $7.50, na GLM-5.3-Flash $7.20, na MiniMax-M2.7 $19.50. Ceny są stałe dla modelu, bez godzin szczytu, więc nocny batch i dzienny czat kosztują tyle samo za token. Pełną listę cen znajdziesz na stronie cennika.

Top-k: każdy fragment dodaje tyle samo#

Oto drugi scenariusz: asystent wewnętrznej wiki. Ktoś sugeruje: „Wyślijmy 10 fragmentów zamiast 3, na wszelki wypadek.” Wejście rośnie liniowo: każdy fragment to kolejne 500 tokenów w każdym żądaniu.

Trzy fragmenty kontra dziesięć: to samo pytanie, inny rozmiar wejścia
Tokeny wejściowe na żądanie przy top-k 3 i top-k 10, przy założeniu 500 tokenów na fragment

2 000 kontra 5 500 tokenów: odpowiedź ma tę samą długość, więc cała różnica w rachunku asystenta wiki to wejście. Czy przekłada się to na lepszą odpowiedź, to kwestia jakości: po punkcie, w którym właściwy fragment już jest w kontekście, dodatkowe fragmenty głównie dodają szum i koszt. Praktyczny sposób wyboru k to wzięcie zestawu rzeczywistych pytań, sprawdzenie, przy jakim k pojawia się właściwy fragment, i zatrzymanie się nieco powyżej tego.

Okno kontekstu to drugi limit. Wszystkie trzy modele mają tu dużo miejsca na zwykłe top-k: 180K tokenów dla MiniMax-M2.7, 380K dla DeepSeek-V4-Flash i 390K dla GLM-5.3-Flash. Limity wyjścia się różnią: do 8 192 tokenów na odpowiedź dla GLM-5.3-Flash i MiniMax-M2.7, do 32 768 dla DeepSeek-V4-Flash, co ma znaczenie, jeśli Twoje odpowiedzi to długie raporty, a nie krótkie odpowiedzi.

Wybierz swój przypadek

Jaki jest Twój przypadek RAG?

Krótkie odpowiedzi z kilku fragmentów

Bot wsparcia lub FAQ z top-k 3–6 i odpowiedziami na kilkaset tokenów pasuje do każdego z trzech modeli. Wybierz według jakości na własnych pytaniach, a potem niech zdecyduje tabela kosztów powyżej.

Długie odpowiedzi i podsumowania

Jeśli odpowiedzi sięgają tysięcy tokenów, DeepSeek-V4-Flash pozwala na do 32 768 tokenów wyjściowych na odpowiedź i kontekst 380K.

Wiele dokumentów na żądanie

Jeśli chcesz łączyć wiele fragmentów lub całych sekcji, GLM-5.3-Flash ma największy kontekst z trzech, 390K.

Cały dokument w prompcie albo cztery fragmenty#

Trzeci scenariusz: pytania o umowy. Wersja leniwa wkleja cały 30 000-tokenowy PDF do każdego pytania. Wersja z wyszukiwaniem wysyła pytanie, instrukcje i cztery istotne fragmenty po około 650 tokenów każdy, łącznie około 3 000 tokenów. Te same 1 000 pytań, te same 300-tokenowe odpowiedzi:

Koszt 1 000 pytań o umowy na DeepSeek-V4-Flash
  • Cały 30 000-tokenowy dokument w każdym żądaniu$0.48
  • Pytanie, instrukcje i 4 pobrane fragmenty, około 3 000 tokenów$0.075

Pełny dokument wysyła dziesięć razy więcej wejścia, 30 000 ÷ 3 000 = 10, za to samo pytanie. Wciąż ma sens przy pojedynczym jednorazowym pytaniu o dokument, który mieści się w kontekście. Dla bota, który odpowiada cały dzień, to kosztowna domyślna opcja. Jeśli duża część tego wejścia to ten sam tekst za każdym razem, przeczytaj o buforowaniu promptów.

Wyślij żądanie#

Poniżej znajduje się krok generowania. Część wyszukiwania należy do Ciebie: chunks to cokolwiek zwrócił Twój magazyn wektorów. Ten sam kod działa z OpenAI SDK lub zwykłym curl.

Zadaj pytanie z pobranymi fragmentami

Python

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

bash
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?"}
    ]
  }'

Ostatnia linia przykładu w Pythonie jest tą użyteczną. usage.prompt_tokens to Twoje rzeczywiste wejście na pytanie; porównaj je z szacunkiem 3 000 i zastąp moje założenia swoimi liczbami. Używaj pełnego identyfikatora modelu, jak w przykładzie: deepseek-ai/DeepSeek-V4-Flash-0731. Identyfikatory są wymienione w dokumentacji. Pełna konfiguracja jest w dokumentacji, a jeśli chcesz zobaczyć, jak tokeny bota sumują się w dialogu, dlaczego długi czat kosztuje więcej omawia część dotyczącą historii.

Cztery sposoby na zmniejszenie wejścia#

Zacznij od max_tokens, który ogranicza odpowiedź i chroni Cię przed wymkniętą odpowiedzią. Potem zmniejsz k do najmniejszej wartości, która wciąż znajduje właściwy fragment. Zrób fragmenty ciaśniejsze, żeby 500 tokenów niosło 500 tokenów znaczenia, a nie nagłówki i boilerplate. Usuń zduplikowane fragmenty przed wysłaniem: dwa niemal identyczne fragmenty kosztują dwa razy, a mówią raz. I mierz za pomocą usage na rzeczywistym ruchu, bo zgadywanie o 500-tokenowych fragmentach to tylko zgadywanie. Szersze spojrzenie na to, gdzie idą tokeny w wywołaniu API, znajdziesz w ile tokenów zużywa żądanie.

Wpisz własne tokeny na żądanie do kalkulatora powyżej, by wycenić swojego bota na wszystkich trzech modelach; jeśli Twoje odpowiedzi są długie, DeepSeek-V4-Flash to ten, na który warto spojrzeć najpierw.