When one model won't fit on one GPU, you have two ways to cut it up — and the right cut is a description of your interconnect, not a tuning knob you guess at.
Both bolt a quality check onto RAG, but they fix different failures at different points — and the choice comes down to one question: do you control the model's weights?
Three popular RAG upgrades all transform the query before retrieval — and they're useless if your retrieval was failing for a different reason. Here's how to tell.
A single tokens-per-second number hides two workloads pulling in opposite directions — and the whole arc of serving optimization is the field admitting they should never share a GPU.
Multi-LoRA serving turns "one GPU per model" into "one GPU per base model, amortized across hundreds of tenants." Here are the tools that do it, and the kernel trick that makes it work.
Ollama just ripped out llama.cpp and bolted in Apple's MLX on the Mac. The switch is a tell about where your bottleneck actually lives — and when the older engine still wins.
The Model Context Protocol defines three server primitives split by who's in control — the model, the app, the user. The ecosystem implemented one of them.
Most MCP servers only answer requests. Sampling and elicitation are the two features that let a server reach back through the client — one to the model, one to the human — and almost no one implements either.
Loading every tool definition into context and round-tripping every result is how MCP agents stall. Code execution flips the model into a programmer — and moves the hard part to your sandbox.
Every major provider sells inference at roughly half price if you can wait up to 24 hours. The discount isn't the point — the contract is, and it tells you which agent work was never realtime to begin with.
Your chunks lose the document around them before they're ever embedded. Jina and Anthropic solve it in opposite places — one in vector space for free, one in the text for a price.
You quantized the weights to 4-bit and thought memory was solved. At long context the KV cache dwarfs the weights — and it needs a different kind of quantization to shrink safely.
The weights are the easy part — the math you can do on a napkin. What silently OOMs your server in production is the KV cache, and almost nobody budgets for it.
The three formats aren't competing for the same job — one buys you faster math, one buys you smaller weights, and one is the fallback for hardware that can't do the first. Know which bottleneck you're paying down.
When retrieval underperforms, everyone reaches to fine-tune the LLM. The cheaper, higher-leverage move is to fine-tune the embedding model — and almost all the gain comes from one ingredient.
MCP standardized how an agent calls a tool. It said almost nothing about how the agent logs in as you — and that gap is the whole product these three are selling.
The real divide in open-source RAG isn't which library to import — it's whether to build with one at all, or deploy a finished engine. Three engines, three very different bets.
The architecture decision underneath every agent framework is one most teams skip — and the math of compounding errors says the boring choice is usually right.
The embedding model you pick barely moves your bill. The dimensions you store and the precision you keep — that's the recurring cost, and it's the decision almost nobody makes on purpose.
GRPO is now a commodity all three ship. The thing that actually sorts them is who owns the distributed orchestration — and how you keep one starving inference engine fed.
Three ways to serve embeddings at scale that look like rivals but answer a different question: should embeddings be a dedicated specialist, or ride on the GPU already running your LLM?
They look like a difficulty ladder. They're three orthogonal axes — and only one of them measures the thing that decides whether your agent survives contact with real users.
The new realtime models hear and speak in one step, no text in the middle. That deletes the seam where you used to read, log, and control everything. Here's the real trade.
The frameworks that get the most attention disagree on something basic — what an agent's action even is. One writes code, one wires a graph, one casts a team.
A frontier model on every node is the default, not the optimum. Most agent calls are narrow, repetitive, and format-constrained — exactly the shape a small model was built for.
The listicle treats these as three flavors of the same choice. They aren't — two are ends of one axis, and the third sits on a different axis entirely. Pick by your environment, not your vibe.
The benchmark you compare on today expires in three weeks. The license you build on doesn't. Pick an open-weight family the way it will still matter next quarter — by what you're allowed to do with it, and what it costs to serve.
Forcing a model to emit valid JSON is a solved problem. Doing it without slowing generation to a crawl is the one that produced three new engines — and your serving stack probably already picked one for you.
Three self-hosted chat UIs that look interchangeable on a feature checklist — but each one is really built for a different person, and picking the wrong one means fighting the grain forever.