Guides → Playground & Guide → Chunking Optimizer - Chunk Size vs Cost vs Recall

Chunking Optimizer - Chunk Size vs Cost vs Recall

Meet Tomoko Sato. ML Engineer iterating on a RAG retrieval system. "Should chunks be 200, 500, 1000, or 2000 tokens? What's the cost vs recall tradeoff?"

🔥 Three weeks tuning retrieval. Quality up 4%, costs up 18%.

The story

Chunk size shapes everything downstream. Smaller chunks = better precision (each chunk is focused) but more chunks per query = more retrieved tokens = more LLM cost. Larger chunks = lower precision (chunk has multiple ideas) but fewer chunks per query = cheaper LLM read. The optimal isn't obvious.

Tomoko's experiment: 500-token chunks at top-4 retrieval = 2K context, 78% recall@5. 1000-token chunks at top-3 = 3K context, 82% recall@5. 200-token chunks at top-8 = 1.6K context, 71% recall@5. Different chunking strategies hit different cost/quality points.

Three rules from production data. (1) Smaller chunks (200-400 tokens) win for narrow factual lookups. (2) Mid chunks (500-1000) win for explanations and context. (3) Larger chunks (1500+) win for procedural/sequential content. Match chunk size to query type - don't pick one for everything.

🎮 Playground

Chunking Optimizer Playground

Here are the inputs that move the result the most. Play with the sliders and check it out. The number updates live.

How does chunking change cost?

Chunk size × how many you retrieve (top-k) sets the tokens read per query — the real lever. Balanced tier, ~30 days.

Estimated monthly cost

💡Retrieved tokens/query = chunk size × top-k. That × queries × rate is the bill. Bigger chunks or higher top-k cost more on every query.

Three real scenarios

Same calculator, three team sizes. Click a tab to see how the numbers shift.

$6,541 / month ≈ $78,489 / year

1M code files. Small chunks (200 tokens) match code structure. Top-6 retrieval gets multiple relevant fragments. Total context: 1.2K tokens. Cheaper than larger chunks would be.

Healthy range: Tight chunks win for code

See inputs used
avgTokensPerDoc
400
chunkSizeTokens
200
topK
6
docsIndexed
1,000,000
queriesPerDay
50,000
overlapPct
0
llmTier
balanced
workingDaysPerMonth
22

Use cases

Same calculator, different applications. Sizes above, workloads here. Pick the one that looks like yours.

Pre-loaded scenarios for the most common applications. Click a tab to see realistic numbers, then hit "Try this scenario" to load it into the calculator above.

$179.50 / month ≈ $2,154 / year

FAQ retrieval. Each entry is naturally bounded (~200-500 tokens). Small chunks match this. Top-3 retrieval. Cheap LLM since queries are simple.

Healthy range: Tight chunks for Q-A pairs

See inputs used
avgTokensPerDoc
800
chunkSizeTokens
300
topK
3
docsIndexed
10,000
queriesPerDay
10,000
overlapPct
20
llmTier
cheap
workingDaysPerMonth
30

Ready to run the numbers?

Open the full calculator. Pick a model, enter your tokens, see per-call, daily, monthly, and annual cost.

🚀 Open the full calculator →

Embedding models for chunked retrieval

Verified 11 hours ago
  1. 1
    GPT-5 Mini
    $0.250 in · $2.00 out ·
  2. 2
    gpt-5.1-codex-mini
    $0.250 in · $2.00 out ·
  3. 3
    Command
    $1.00 in · $2.00 out ·

About this calculator: Chunking Optimizer - Chunk Size vs Cost vs Recall

Chunk size is the most-tweaked, least-understood RAG parameter. Find the size that maximizes recall while controlling cost - workload-specific.

📋 Typical values & starting points Don’t know a value yet? Start with these broad, sourced ballparks — the calculator’s ▾ Typical menus pre-load the same options.

Context: Chunking is an economic decision, not just retrieval: 512 tokens is the production standard; small/proposition chunking creates 3-5x more vectors (more embedding + storage + retrieval compute). Bumping top-k from 3 to 8 roughly triples per-query context cost. A chunk-strategy change re-bills the ENTIRE corpus.

Input Default Typical ballparks
chunkSizeTokens moves the needle 500 Fine-grained · 256 = 256 · Production standard · 512 = 512 · Long-context · 1024 = 1,024
topK moves the needle 4 Lean · 3 = 3 · Typical · 5 = 5 · Recall-heavy (costly) · 8 = 8
docsIndexed 100,000 Team KB · 10K docs = 10,000 · Department · 100K docs = 100,000 · Enterprise · 1M docs = 1,000,000
queriesPerDay moves the needle 5,000 Pilot · 500/day = 500 · Production · 5K/day = 5,000 · High-traffic · 50K/day = 50,000
overlapPct 10 Minimal · 10% = 10 · Standard · 15% = 15 · Heavy (safety) · 25% = 25
workingDaysPerMonth 30 Business days · 22 = 22 · Every day · 30 = 30
avgTokensPerDoc 5,000
llmOutputTokens 500
llmTier balanced

Ballparks are broad industry starting points (sourced ranges; * = rough estimate) — your result gets more accurate as you replace them with measured numbers. Try them live in the calculator; API & agent users get the same data from the MCP resource aicost://input-reference/chunking-optimizer.

📊 CALCULATOR AT A GLANCE
Chunking Optimizer - Chunk Size vs Cost vs Recall full size

Reading your result

Total retrieved tokens = chunk size × top-k. 500 × 4 = 2K. 1000 × 3 = 3K. Same total chunks, different precision. Fewer-but-bigger chunks tend to win on coherent topics.

Index size scales inverse-linear with chunk size. 5K-token doc at 500-token chunks = 10 chunks. At 200-token chunks = 25 chunks. Bigger index = bigger storage cost + more potential noise per query.

Recall@k peaks at workload-specific size. Run an eval set with varying chunk sizes. The optimum surprises most teams - usually 800-1200 tokens for general knowledge, 200-400 for code, 1500-2500 for procedural docs.

What "good" looks like:
  • Tight chunks (200-400): Code search, factual lookup, FAQ
  • Standard (500-800): General knowledge, articles, technical docs
  • Mid (1000-1500): Explanations, multi-paragraph answers, contextual
  • Large (2000+): Procedural docs, long contracts, sequential content

What this calculator can't tell you

Honest limitations. Every model is wrong; some are useful. Where this one falls short:

For these, use: Embedding Cost for chunk impact on indexing. RAG Pipeline for end-to-end.

Trade-offs

Cost isn't the only dimension. Click any constraint to see how recommendations change.

What matters most to you? Click any dimension — recommendations update.

Best fit for "cost":

  1. Larger chunks + smaller k Often cheaper at same recall
  2. Tight chunks + larger k Better precision, similar cost

Total cost = chunk size × top-k. The same total can be reached two ways: 500×4 or 1000×2 or 2000×1. Pick based on recall measurement, not chunk-size dogma.

Most popular

Everything above is the 80% case. The last 20% is where the money is.

The gaps we just listed are real, and they are the expensive ones: your actual prompts, your switching cost, your MLOps overhead. An AICost expert spends the hour on your AI and cloud costs, not a generic playbook. You leave with a written report: the way forward, in 30 days of concrete steps.

  • An hour with the people who built the engines
  • Report the same day
  • The fee credits toward any AICost plan
  • Two slots a week
Book a Solution Session: $299 → or $99 for small business →

Not sure yet? The $39 AICost Blueprint credits toward a Session, and the Session fee credits toward any plan. You never pay twice for the same ground. See all pricing →

Ready to run your own numbers?

You have seen the shape of it. Open the calculator with your model, your tokens, your volume.

🚀 Open the full calculator →

Where to go next

Full RAG pipeline cost →

Chunking is one piece of the bill.

Hybrid retrieval (dense + sparse) →

Beats pure dense for many workloads.

Embedding cost (smaller chunks = larger index) →

Index size scales inverse-linear with chunk size.

Methodology

Source
/ai-cost-economics
Extraction
Recall@k benchmarks on standardized test corpora across chunk sizes.
Editorial gate
8-layer defense, see aicost.ai/ai-cost-economics
Last verified
7/27/2026, 8:00:00 PM

Author: Subu Vdaygiri, Founder & CEO of CloudIntelligence.ai. 17 years Fortune 100 (Ingram Micro, Siemens). Wharton CTO program · Kellogg CPO program · 10× AWS+Azure certified.

3 years of pricing history

Why this matters: pricing for major vendors has dropped 40-90% in the last 24 months. A budget set 12 months ago is probably wrong by 30%+.

View 3-year history for →
📖 Data sources & methodology 163 text models · 9 embeddings · 37 vision · 55 audio · 8 vector DBs across 10 vendor pages · last verified 2026-07-28

Methodology

  • All prices are USD per 1 million tokens, current as of 2026-07-28.
  • Vendor-published values have no mark. Inferred/extrapolated values are marked with * and listed below.
  • Batch API discounts are 50% off standard rates across providers that offer Batch mode.
  • Prompt caching discounts vary by provider (typically 80-90% off cached input tokens).
  • Regional data-residency surcharges (Anthropic 1.1x, OpenAI 1.1x, Google regional tiers) are NOT included in base rates.
  • Long-context pricing tiers apply when input exceeds model threshold.
  • Embedding prices are input-only (no output tokens generated).

Primary sources

Last-verified date is the most recent successful daily snapshot (aicost_pricing_snapshots) or, when no snapshot exists yet, the latest successful crawler run (aicost_crawler_runs). 10 of 10 vendors are currently verified. Aggregator services (TokenCost, AI Pricing Guru, etc.) are not listed.

Anthropic
2026-07-28
https://www.anthropic.com/pricing
Daily snapshot since Sep 2023 · 631 days captured
Anthropic Docs
2026-07-28
https://platform.claude.com/docs/en/about-claude/pricing
Daily snapshot since Sep 2023 · 631 days captured
OpenAI
2026-07-28
https://openai.com/api/pricing/
Daily snapshot since Sep 2023 · 632 days captured
Google AI
2026-07-28
https://ai.google.dev/gemini-api/docs/pricing
Daily snapshot since Dec 2023 · 607 days captured
Google Vertex
2026-07-28
https://cloud.google.com/vertex-ai/generative-ai/pricing
Daily snapshot since Dec 2023 · 607 days captured
DeepSeek
2026-07-28
https://api-docs.deepseek.com/quick_start/pricing
Daily snapshot since May 2024 · 546 days captured
xAI
2026-07-28
https://x.ai/api
Daily snapshot since Nov 2024 · 464 days captured
Mistral
2026-07-28
https://mistral.ai/pricing
Daily snapshot since Dec 2023 · 605 days captured
Cohere
2026-07-28
https://cohere.com/pricing
Daily snapshot since Sep 2023 · 631 days captured

Inferred values (marked with * in calculator tables)

Derived from industry conventions, not directly published by the vendor. Typical conventions: cached input = 10% of base (90% off), Batch API = 50% of base (50% off).

Vendor / Model Field Why it’s inferred
Anthropic — Claude Sonnet 4.6 cachedInput Derived at 10% of input rate — Anthropic publishes 90% cache-hit discount on this tier.
Anthropic — Claude Sonnet 4.5 cachedInput Derived at 10% of input rate; same 90% cache-hit convention as Sonnet 4.6.
Anthropic — Claude Sonnet 4.5 batchInput Derived at 50% of standard input — Anthropic documents uniform 50% Batch discount.
Anthropic — Claude Sonnet 4.5 batchOutput Derived at 50% of standard output — Anthropic documents uniform 50% Batch discount.
Anthropic — Claude Haiku 4.5 cachedInput Derived at 10% of input rate — Anthropic 90% cache-hit discount convention.
OpenAI — GPT-5.4 Mini cachedInput Derived at 10% of input — OpenAI documents automatic 90% discount on cache hits across GPT-5.x tier.
OpenAI — GPT-5.4 Nano cachedInput Derived at 10% of input — OpenAI 90% cache-hit convention.
OpenAI — GPT-5.4 Nano batchInput Derived at 50% of input — OpenAI Batch API uniform 50% discount.
OpenAI — GPT-5.4 Nano batchOutput Derived at 50% of output — OpenAI Batch API uniform 50% discount.
OpenAI — GPT-5.4 Pro cachedInput Derived at 10% of input — OpenAI 90% cache-hit convention.
OpenAI — GPT-5.4 Pro batchInput Derived at 50% of input — OpenAI Batch API uniform 50% discount.
OpenAI — GPT-5.4 Pro batchOutput Derived at 50% of output — OpenAI Batch API uniform 50% discount.
OpenAI — GPT-5.2 cachedInput Derived at 10% of input; no residency uplift.
OpenAI — GPT-5.2 batchInput Derived at 50% of input.
OpenAI — GPT-5.2 batchOutput Derived at 50% of output.
OpenAI — GPT-5 cachedInput Derived at 10% of input.
OpenAI — GPT-5 batchInput Derived at 50% of input.
OpenAI — GPT-5 batchOutput Derived at 50% of output.
OpenAI — GPT-5.5 Pro cachedInput Derived at 10% of input — OpenAI does not publish a cached rate for *-pro models; using the family convention.
OpenAI — GPT-5.5 Pro batchInput Derived at 50% of input.
OpenAI — GPT-5.5 Pro batchOutput Derived at 50% of output.
OpenAI — GPT-5.2 Pro cachedInput Derived at 10% of input — pro-tier convention.
OpenAI — GPT-5.2 Pro batchInput Derived at 50% of input.
OpenAI — GPT-5.2 Pro batchOutput Derived at 50% of output.
OpenAI — GPT-5.1 batchInput Derived at 50% of input.
OpenAI — GPT-5.1 batchOutput Derived at 50% of output.
OpenAI — GPT-5 Pro batchInput Derived at 50% of input.
OpenAI — GPT-5 Pro batchOutput Derived at 50% of output.
OpenAI — GPT-5 Nano cachedInput Derived at 10% of input.
OpenAI — GPT-5 Nano batchInput Derived at 50% of input.
OpenAI — GPT-5 Nano batchOutput Derived at 50% of output.
Google — Gemini 3 Flash cachedInput Derived at 10% of input — Google caching discount convention ~90%.
Google — Gemini 3.1 Flash-Lite cachedInput Derived at 10% of input — Google caching convention.
Google — Gemini 3.1 Flash-Lite batchInput Derived at 50% of input — Google Batch API uniform 50% discount.
Google — Gemini 3.1 Flash-Lite batchOutput Derived at 50% of output — Google Batch API uniform 50% discount.
Google — Gemini 2.5 Pro cachedInput Derived at 10% of input.
Google — Gemini 2.5 Flash cachedInput Derived at 10% of input.
Google — Gemini 2.5 Flash-Lite cachedInput Derived at 10% of input — Google caching convention.
Google — Gemini 2.5 Flash-Lite batchInput Derived at 50% of input — Google Batch API uniform 50% discount.
Google — Gemini 2.5 Flash-Lite batchOutput Derived at 50% of output — Google Batch API uniform 50% discount.
Google — Gemini 2.0 Flash cachedInput Derived at 25% of input per Google 2.0 family caching rates.
Google — Gemini 2.0 Flash batchInput Derived at 50% of input — Google Batch API uniform 50% discount.
Google — Gemini 2.0 Flash batchOutput Derived at 50% of output — Google Batch API uniform 50% discount.
Google — Gemini 2.0 Flash-Lite cachedInput Derived at 10% of input — Google caching convention.
Google — Gemini 2.0 Flash-Lite batchInput Derived at 50% of input — Google Batch API uniform 50% discount.
Google — Gemini 2.0 Flash-Lite batchOutput Derived at 50% of output — Google Batch API uniform 50% discount.
xAI — Grok 4 (legacy) cachedInput Extrapolated at 25% of base.

Pricing is cross-verified against the LiteLLM community registry when available. Daily snapshots are kept in aicost_pricing_snapshots; every change is logged to aicost_price_changelog with old & new values for full audit trail. Read the full methodology →