Guides → Playground & Guide → Hybrid Search Cost - Dense + Sparse Retrieval

Hybrid Search Cost - Dense + Sparse Retrieval

Meet Andre Williams. Senior Engineer building product search. "Pure semantic search misses exact-match queries (SKUs, product names). Hybrid search adds complexity. Worth it?"

🔥 User search for 'AirPods Pro 2' returning AirPods Max. Recall is broken.

The story

Pure semantic search has a known weakness: exact-match queries. User searches 'GPT-5-Pro pricing' - semantic retrieval finds 'GPT-4 cost', 'pricing models', 'Anthropic Pro plans'. Misses the exact thing they asked for. BM25 (sparse keyword search) excels at this. Hybrid combines both.

Andre's product search returns ~20% irrelevant results when users type exact SKUs or product names. Hybrid search (BM25 + dense, weighted ensemble) drops this to ~5%. Cost increase: ~15-25% (running two indexes + reranking). Quality lift: 4-15% on recall@5. Worth it for most product/code/document search workloads.

Two architectures. (1) Two-index hybrid: dense vector + BM25 separately, score-fused. (2) Late-interaction (ColBERT, hybrid embedding models): single index with dense+sparse properties. Two-index is simpler to set up; late-interaction is more elegant but newer.

🎮 Playground

Hybrid Search Cost Playground

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

What does hybrid search cost?

You pay for vector storage (the whole corpus) plus reranking on every query. ~30 days assumed.

Estimated monthly cost

💡Cost = storage (scales with docs) + reranking (scales with queries × how many results you rerank).

Three real scenarios

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

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.

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 →

Vector DBs with hybrid search support

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: Hybrid Search Cost - Dense + Sparse Retrieval

Hybrid retrieval (BM25 + dense) beats pure semantic for most workloads. Real cost vs recall math, and when the extra complexity pays back.

🎛 Inputs you control

Each input shapes the cost. Click an input on the calculator to set it. The explanations below match the live calculator field by field.

Doc count (chunks): How many chunks your corpus is split into. Documents get cut into smaller chunks (a paragraph or two) so each can be embedded and retrieved on its own.
How to choose: Estimate total chunks across all docs. Example: 10,000 docs x 5 chunks each = 50,000. More chunks = more storage in both engines.
Vector dimensions: The length of each embedding vector — how many numbers represent one chunk. Common sizes: 384, 768, 1536.
How to choose: Match your embedding model (e.g. text-embedding-3-small = 1536). Higher dimensions capture more nuance but cost more to store and search.
Queries / day: How many searches your users run per day. This is the main recurring-cost multiplier.
How to choose: Use real or projected daily volume. Hybrid runs every query through two engines, so this scales the gap between hybrid and pure vector.
Vector DB: The database that stores and searches your embeddings (the semantic half).
How to choose: Pick the vector store you use or plan to. Pricing models differ a lot — this is where most storage cost lands.
Search engine (BM25/keyword): The keyword engine that powers the hybrid half. BM25 is the standard keyword-ranking algorithm — it matches exact words and phrases that vectors blur together.
How to choose: Only relevant for hybrid. Example: a user searching "error 0x80070005" wants that exact string — BM25 nails it, pure vector often does not.
LLM model: The model that reads the retrieved chunks and writes the answer; its per-token price drives per-query cost.
How to choose: A cheaper model can halve your bill if the retrieved context is clean. Pick the one you actually use.
Top-K chunks: How many chunks each query retrieves and feeds to the LLM. "Top-K = 5" means the 5 best-matching chunks.
How to choose: Higher K = better recall but more tokens (and cost) per query. 3-5 is typical; going to 20 multiplies your LLM bill.
Tokens / chunk: How big each chunk is, in tokens (~750 words = 1,000 tokens).
How to choose: Set to your chunk size. Top-K x tokens/chunk = the context every query sends the LLM, so both directly multiply cost.
LLM output tokens / answer: How long the generated answer is, in tokens; output tokens usually cost more than input.
How to choose: Estimate a typical answer length. A sentence is cheap; long summaries add up across many queries.
📋 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.
Input Default Typical ballparks
queriesPerDay moves the needle 50,000 Pilot · ~100/day = 100 · Production · ~1K/day = 1,000 · High traffic · ~10K/day = 10,000
workingDaysPerMonth 30 Business days · 22 = 22 · Every day · 30 = 30
totalDocs moves the needle 1,000,000
rerankTopN moves the needle 20

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/hybrid-search-cost.

Reading your result

Two-index hybrid roughly doubles vector DB cost. Same vectors stored twice (dense + BM25). Storage and query time both ~2× pure dense. Often acceptable trade-off.

Reranking is the quality lever and the cost driver. Cross-encoder (e.g., Cohere Rerank, BGE Reranker) on top-20 candidates costs ~$0.001-0.005 per query. At 50K queries/day = $50-250/mo. Quality lift typically 5-15% recall@5.

Quality vs cost depends on query mix. Pure exact-match queries (SKUs): hybrid wins decisively. Pure semantic queries (paraphrases): pure dense wins slightly. Mixed real-world queries: hybrid wins by 4-10% on average.

What "good" looks like:
  • Strong fit for hybrid: Product search, code search, technical docs (exact-match common)
  • Moderate fit: General knowledge bases, articles
  • Limited fit: Conversational Q&A, paraphrase-heavy (pure dense fine)
  • Reranker mandatory: Top-N candidates >10 - without reranker, hybrid scores can be inconsistent

What this calculator can't tell you

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

For these, use: RAG Pipeline for full architecture. Chunking Optimizer for upstream.

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. Two-index hybrid +50-100% vector DB cost
  2. Reranker +$50-500/mo at modest scale
  3. Late-interaction (ColBERT) More compute, less storage

Hybrid cost is real but typically <30% of total RAG bill. The recall lift usually justifies it for product/code/technical search.

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 →

Hybrid is one piece.

Vector DB hybrid support →

Pinecone, Weaviate, Qdrant differ.

Chunking strategy →

Hybrid retrieval is sensitive to chunk size.

Methodology

Source
https://qdrant.tech/articles/hybrid-search/
Extraction
Hybrid recall benchmarks from BEIR, MS MARCO.
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 →