← all posts
// economics · commercial-models

Commercial vs free models for RAG systems: licenses, terms, and redistribution

People have shipped a RAG product on a model they picked because it was free, signed a paying customer, and only later found out the license attached to those weights didn't cover the commercial use they'd built.

That's the seam most teams miss: a paid API bundles inference with support, a free tier is just a rate-limited slice of that same service, and open weights carry their own license, unrelated to what the endpoint charges. Local inference doesn't remove cost, it turns token invoices into hardware, power, and maintenance hours.

For RAG, what you're buying is an answer the retrieved passages can support: a question, ranked chunks, and a citation requirement go in, and the failure to avoid is a fluent answer that ignores, merges, or invents evidence. A cheap generation that fails validation and needs a human to catch it costs more than the pricier call that works once.

Downloading weights doesn't hand you every right you might assume: the license can cap commercial use, forbid derivatives, or say nothing about redistribution, none of which shows on a benchmark chart. Keep model names and prices in the experiment, not the architecture decision, since catalogs change, free allowances vanish, and last year's too-big artifact might quantize down to usable by now.

Log the license next to the latency

Run the comparison like any capacity decision: model lineage, license version, acceptable-use terms, intended use, planned derivatives, who owns distribution once it ships. Give both routes the same evidence and acceptance bar, respecting each provider's own prompt format. A native tool call one side has and the other fakes is an integration cost, so log it:

model / route / exact revision
input, cached input, reasoning, output tokens
queue, first token, completion, timeout
hardware energy and idle allocation
pass, retry, abstain, human repair
engineering and incident time
privacy, license, and fallback constraints

The bar that matters is answer-bearing retrieval, citation correctness, willingness to abstain, and end-to-end latency, not throughput on some unrelated benchmark. Keep every failed output and tag why it failed:

  • missing evidence in the retrieved set
  • an instruction that wasn't followed
  • malformed structure
  • reasoning that doesn't hold up
  • a tool call that broke
  • an answer that shouldn't have shipped

Those tags make routing worth doing later: a local model can nail the easy slice of your traffic and only fail once context or ambiguity crosses a line the logs show you.

The seam between routes is where the risk lives

Commercial wins when its service terms beat an open artifact's obligations, not because it's the biggest model on the market. Put a cheaper tier from the same provider in the comparison, and cap output length and reasoning effort first. Managed capacity earns its keep when it removes real work, not because a dashboard looks reassuring (see subscription-wrong-for-ai).

Free or open-weight wins when the license permits the use and owning or redistributing the deployment is worth something. It compounds with steady, narrow, repeatable traffic, and evaporates when the model barely fits, reloads constantly, or needs a runtime only one engineer understands. Spare hardware isn't free if another job loses its slot to yours.

The recurring mistake: picking a model off a price sheet before anyone reads the license on that artifact. Tie every number to a workload and a time window; price per token and tokens per second are diagnostic, not the outcome. What you want is cost per accepted task, p95 latency, and failure severity.

Put provider-specific handling behind one narrow adapter, keep prompts and schemas in version control, and keep a conversation's record outside any vendor's thread object. Contract-test streaming, tool calls, structured output, and token accounting per route, or a provider will change something under you.

Fallback has to be explicit, not a retry-logic accident. Falling back to local when the commercial API is down can be fine, roughly local-first-cascade, but tell the user capability changed. If local capacity runs out, quietly routing sensitive data to a remote provider breaks the system's whole premise. Privacy rules run first. Full stop.

Re-run this whenever traffic, versions, prices, licenses, or review practice shifts enough to matter: math good at ten thousand requests a month fails at ten times that, an old failing local model might pass now on a better quant, and a free tier can vanish overnight.

There's no universal winner here. The durable architecture is the smallest set of routes that clears the quality gate, keeps cost and data movement visible, and fails safely when a provider or license changes underneath you. Free and commercial are procurement labels, not engineering ones.

None of this replaces reading the license yourself, and the adapter-and-contract-tests version of this advice is more work than most small teams ever get around to, mine included some weeks.

#commercial-models#open-models#cost