advanced rag-information-theory 22 min read

The Architecture Pareto Frontier: What "Which One Should We Use?" Actually Depends On

Two cost currencies make cost a partial order rather than a number — and the winner turns out to depend on the workload mixture, the price of a generator call, and the size of the deployment, none of which is a property of any architecture

The question that has no answer

The predecessor to this topic ran six named RAG architectures as arms over two regimes and found that no row won both. It also did something quieter that mattered more: it reported cost in two currencies — similarity operations and generator calls — and refused to collapse them into one, on the grounds that the exchange rate between them is precisely what a cost model should not invent.

That refusal is what leaves us here, with a Pareto set rather than a winner, and the obvious next question. Which one should we deploy?

The answer is that the question, as asked, has none. It acquires one only after three further things are fixed, and none of the three is a property of any architecture:

  • the workload mixture ww — what fraction of your traffic is each kind of question;
  • the price ratio ρ\rho — what one generator call costs in units of a similarity operation;
  • the amortization horizon NN — how many queries an offline index build is spread over.

Move any one and the winner changes. That is not a disclaimer, it is the subject. This topic is about the shape of the dependence: a partition of a simplex, a hull the price slides along, and a crossover in deployment size.

Movement 1 — cost is a pair, and it is not a constant

Write opsa,k\mathrm{ops}_{a,k} and callsa,k\mathrm{calls}_{a,k} for what arm aa spends on a question of kind kk. A workload is a probability vector ww over the six kinds of question, and an arm’s cost on it is

cost(a,w)=(∑kwk opsa,k,  ∑kwk callsa,k)∈R2.\mathrm{cost}(a, w) = \Big( \textstyle\sum_k w_k\, \mathrm{ops}_{a,k},\ \ \sum_k w_k\, \mathrm{calls}_{a,k} \Big) \in \mathbb{R}^2 .

Two things about that expression are worth saying slowly.

The first is that it lands in R2\mathbb{R}^2, and R2\mathbb{R}^2 has no total order. “Cheaper” is no longer a comparison two architectures can always settle. An arm spending a hundred operations and no generation is not more or less expensive than one spending twenty-five and four generator calls; the two are simply incomparable until somebody supplies a price.

The second is that opsa,k\mathrm{ops}_{a,k} genuinely depends on kk for some arms, and this is where the familiar “cost” column of a comparison table stops being merely imprecise and becomes wrong. Adaptivity turns out to be a spectrum rather than a property, and the spread across question kinds measures where on it an arm sits. Four of these six are fixed pipelines that do the same work whatever they are asked, at exactly 1.00×1.00\times. A fifth, the agentic arm, is nearly flat at 1.11×1.11\times — it stops hopping early when a filing it reads opens no new direction, so its cost is query-gated too, just barely. Only the corrective arm is adaptive enough for a single cost figure to be actively misleading rather than merely imprecise: its grader fires on some questions and not others, and its cost varies by a factor of 9.95 across the kinds of question it might meet.

So the cost of an adaptive architecture is a function of the workload it meets. There is no number to put in the column.

onpartialoffnoisybridgeglobalspreadnaive100100100100100251.00×hybrid300300300300300501.00×hyde100100100100100251.00×corrective181123418011801181459.95×graph1010101010251.00×agentic270300300300270751.11×
flat arms
5 of 6
corrective, across question kinds
9.95×
currencies
2, not 1

Operations per query, on a log color scale. Five of the six arms do the same work whatever they are asked — their cost is a property of the pipeline. The corrective arm's is not: its grader fires on some questions and not others, so its cost varies by a factor of 9.95 across the kinds of question it might meet. A single cost column cannot say that, and neither can a single cost column say that four of these arms also spend a second, incommensurable currency — generator calls — that no number of operations converts into.

Six architectures over 100 passages of 25 companies in 5 sectors, measured by the predecessor topic and re-run here not at all. Everything above is arithmetic on one 6 × 6 × 3 table of quality and both costs — 108 numbers, emitted from rag_architecture_pareto.py — and every derived object on this page, the profiles, the domination relation, the Pareto sets, the hulls, the winner map and the amortization, is recomputed live in the browser from them. The workload mixture, the price ratio and the amortization horizon are all free: none of them is a property of any architecture, and each one changes the answer.

Movement 2 — domination, and what it is a property of

Definition 1 (Domination on a workload).

Arm aa dominates arm bb on workload ww when it is at least as good on every axis and strictly better on one:

qa(w)≥qb(w),opsa(w)≤opsb(w),callsa(w)≤callsb(w),q_a(w) \ge q_b(w), \quad \mathrm{ops}_a(w) \le \mathrm{ops}_b(w), \quad \mathrm{calls}_a(w) \le \mathrm{calls}_b(w),

with at least one inequality strict. The Pareto set is the set of arms no arm dominates. Note that both the relation and the set carry ww — they are not properties of the architectures.

On the mixture the predecessor implicitly reported at — its local regime, every class equally likely — the Pareto set is hybrid, hyde, corrective, graph. Two arms are outside it, and one of those two is outside it comprehensively. The agentic arm is beaten by the naive baseline on every axis at once: lower quality (0.280 against 0.290), more operations (288 against 100), and more generator calls (2.88 against 0). It is beaten by the graph arm as well.

A reader who stopped there would conclude, correctly by the evidence in front of them, that this architecture should never be deployed. And then:

Proposition 2 (Domination does not survive a change of mixture).

Let aa be dominated by bb on workload ww. It does not follow that aa is dominated by bb on workload w′w', and in general it is false — because both sides of every inequality in Definition 1 are linear functionals of ww, and a linear functional’s sign is not preserved when its argument moves.

Concretely: agentic is dominated on the aggregate local workload, and on a workload consisting only of the bridge questions it was built for it is the unique arm scoring above zero. The crossover is measured — it becomes the arm to deploy once the bridge fraction reaches 0.43.

This is the topic’s central claim and it is worth resisting the urge to soften it. The aggregate numbers were not wrong. They were computed correctly, on a mixture, and they support a conclusion that a different mixture reverses. Domination is a property of an architecture and a workload, and reporting it as a property of an architecture is a category error that a Pareto table makes very easy to commit.

Movement 3 — the winner map partitions the simplex

Fixing a price ρ\rho for generation and a price λ\lambda for cost in units of quality gives a selection rule, the one every cost-aware evaluation computes:

a^(w)=arg⁡max⁡a{qa(w)−λ(opsa(w)+ρ callsa(w))}.\hat a(w) = \arg\max_a \Big\{ q_a(w) - \lambda\big(\mathrm{ops}_a(w) + \rho\, \mathrm{calls}_a(w)\big) \Big\}.

The map w↦a^(w)w \mapsto \hat a(w) partitions the workload simplex into cells. What the partition looks like is the whole content of “which architecture should we use”, and on this arm set it is genuinely contested: at the headline price all five arms that ever win hold real territory — corrective 68%, graph 14%, hybrid 9%, agentic 6%, hyde 3% of randomly drawn workloads.

Raising λ\lambda collapses the map onto the cheapest arm; lowering it collapses the map onto the most accurate one. Both limits are degenerate and neither is wrong, which is the uncomfortable part: a benchmark’s cost weighting decides its verdict before any measurement is taken. The weighting is usually chosen once, early, by whoever set up the harness, and is rarely reported at all.

Movement 4 — what no price can buy

There is a tempting response to all of this: sweep the prices. If the answer depends on λ\lambda and ρ\rho, vary them, and collect every architecture that wins somewhere. That set — the options a cost-weighted evaluation can ever recommend — is the honest output.

It is not, and the reason is geometry rather than retrieval.

Theorem 3 (Linear scalarization reaches only the hull's vertices).

Fix ρ\rho, and write each arm as the point (ca,qa)(c_a, q_a) with ca=opsa+ρ callsac_a = \mathrm{ops}_a + \rho\, \mathrm{calls}_a. For every λ≥0\lambda \ge 0,

arg⁡max⁡a {qa−λca}∈vert⁡conv⁡{(ca,qa)},\arg\max_a\ \big\{ q_a - \lambda c_a \big\} \in \operatorname{vert} \operatorname{conv} \big\{ (c_a, q_a) \big\},

because a linear functional on a finite point set attains its maximum at an extreme point of the convex hull. Consequently an arm that is Pareto-optimal but lies in the interior of the hull is returned by no λ\lambda whatsoever, and sweeping ρ\rho as well does not help: the argument holds for each ρ\rho separately.

Such arms are the unsupported efficient solutions of multicriteria optimization, and they exist exactly when the efficient set fails to be convex.

The practical content is that a Pareto-optimal architecture can be unrecommendable by any weighting of the objectives — not because the weights were tuned badly, but because no weights exist. It is dominated by no single arm, and beaten at every price by a mixture of two others it sits between.

How often does that bite? Here, on 22.4% of randomly drawn workloads, and the arm that goes missing most often is agentic — the same arm the aggregate numbers already dominated. Its second and third most frequent companions are hyde and corrective, which is to say: the arms that spend the second currency.

That convergence is the topic’s sharpest point. Both of the standard ways of picking a winner — compute aggregate domination, or sweep a weighted objective — fail on the same architecture, and for the same underlying reason. It buys a capability that is worthless on most traffic and indispensable on a little of it, and neither an average nor a linear price can represent that.

Movement 5 — and the frontier moves under you anyway

One free parameter remains, and it is the one most often left out of a cost model entirely.

The graph arm holds an index nobody else builds: the entity–entity similarity matrix its community detection runs on, which is K(K−1)/2K(K-1)/2 similarity evaluations. Charged against a deployment of NN queries, its cost per query is opsonline+B/N\mathrm{ops}_{\text{online}} + B/N. Below the crossover the build has not paid for itself, and the domination reverses — at this corpus size the crossover at N* = 3.33 queries.

That number is small, and the honest reading is not that amortization does not matter but that it does not matter at this scale. The scaling is the result worth carrying:

entities KK251005002000
crossover N∗N^*31364253

The build is quadratic in the entity count while the saving is only linear, so the deployment must be bigger before the index pays for itself as the corpus grows — the opposite of the intuition that an index matters more the more there is to index.

What this leaves you with

Three free parameters, none of them a property of any architecture, and a decision that each of them moves. That is a worse situation than a ranking and a more accurate one, and it has a practical residue:

  • A cost column with one number per architecture is wrong for any adaptive architecture, and wrong by a factor of ten for one of these.
  • A Pareto verdict is void the moment the traffic mixture changes, which it does continuously in any deployed system.
  • Sweeping the weights does not fix it: a quarter of workloads here contain a Pareto-optimal architecture that no weighting can return.
  • And whether the arm with an index beats the arm without one is a question about how many queries you expect to serve.

The useful output of an architecture comparison is therefore not a name. It is the partition — which regions of workload space each architecture owns, and how far your traffic sits from a boundary.

Connections

  • The closest sibling and the sharpest contrast. That topic chooses a strategy PER QUERY under a single scalar cost; this one chooses one fixed architecture for a whole deployment under two currencies that do not convert. Setting the price of a generator call to zero collapses this topic's cost model onto that one exactly, and a test asserts it — so the routing topic is recoverable here as a degenerate case, which is also the cleanest statement of what the second currency buys. adaptive-retrieval-routing
  • The capstone allocated one budget across the stages of a single pipeline by water-filling, equalizing marginal recall per unit cost. That is this topic's problem with the answer already assumed: a scalar budget, a scalar cost, and therefore a well-defined optimum. What breaks here is exactly what water-filling needs — a single currency — and the capstone's own lesson that cost asymmetry is load-bearing recurs as the reason the two currencies cannot be collapsed. capstone-multimodal-financial-rag
  • Supplies the cost-ratio machinery this topic generalizes. There a cascade's saving was a single ratio between a cheap retrieval and an expensive re-scoring, and the speedup followed from it directly. Here the same arithmetic runs into a second currency and a workload that varies, and the corrective arm — which IS that cascade — turns out to be the one arm whose cost cannot be quoted as a number at all. cross-encoders-reranking
  • Supplies the reading discipline the frontier needs. Every quality figure entering the decision layer is a sample mean over twenty queries, so the boundaries in the winner map are soft and are reported as existing rather than located. A Pareto verdict computed from noisy coordinates is itself noisy, which is why the topic asserts the SHAPE of each dependence and never a crossover to three decimals. set-metrics-precision-recall-map-mrr
  • The arm at the center of the headline is that topic's reformulation operator deployed as an architecture. It is the arm the aggregate numbers dominate on every axis and the arm that linear pricing most often cannot see, and both of those follow from the same property: it buys a capability that is worthless on most traffic and indispensable on a little of it. That is what a compositional question does to a cost model. multi-hop-iterative-retrieval

References & Further Reading