Archos Labs
The Execution Layer

RAG System Design That Doesn’t Rot

Rob Angeles5 min readPublished
Share
A decaying RAG system design collapsing under outdated assumptions, showing broken document links and disconnected feedback l

RAG system design only works if you treat it like a living system, not a static architecture.

Your RAG system design isn’t drifting. It’s decaying. Not because the model’s dumb, but because your architecture forgot it would change.

Why Most RAG Systems Rot

Most teams treat retrieval-augmented generation like it’s a single product release. You build a pipeline, tune your retriever, strap on a vector DB, and call it done. Everything looks clean at launch. The top-K retrievals seem relevant. The model outputs are coherent. But give it six months.

Now your users are getting outdated references. The retriever’s surfacing low-signal chunks. The model’s hallucinating with confidence. And no one knows what changed, because no one’s watching.

RAG rot doesn’t happen overnight. It creeps in. First, your document structure shifts. Then your embeddings go stale. The worst part? The system doesn’t crash. It gets worse — slowly enough that no one notices until the trust is gone.

Static Design Is the Root Problem

Most RAG system design is built for launch, not life. Static chunking. Static retriever configs. Static reranker weights. Static index update schedules, if any. This approach locks in too many assumptions: stable data, fixed use cases, unchanging model behavior. Each of those will shift — usually faster than anyone expects.

Without feedback loops, all that staleness accumulates. Suddenly your RAG stack is outputting 80% correct answers and 20% silent poison — plausible-sounding garbage backed by citations that are technically “retrieved,” but no longer useful.

The Missing Feedback Loops

Every RAG system needs at least three live feedback loops:

  1. Retrieval Evaluation Loop Every query should generate telemetry. Did the retrieved docs actually answer the query? Logging just the retrieval score isn’t enough. You need human or model-based feedback confirming document utility. Retrieval without evaluation is cargo cult vector search.
  2. Answer Grounding Loop Was the model’s answer grounded in retrieved content, or did it drift? You need a grounding score — either via a second model or through user feedback. LLMs love to summarize and speculate. Without a loop that catches hallucination early, you’re shipping confident fiction.
  3. Index Refresh Loop What changed in your knowledge base? Did your chunking logic break after a doc format update? Is your embedding model still producing semantically consistent vectors? You need a version-controlled process to re-index and test quality before things break.

These aren’t luxury features. They’re survival mechanisms. Without them, you’re designing for decay.

Drift Happens at the Edges

The scariest drift doesn’t come from your core pipeline. It comes from the assumptions no one’s monitoring:

  • A retriever trained on support tickets starts failing when product names change.
  • A chunking strategy based on headers collapses after your team adopts new doc templates.
  • Your LLM gets fine-tuned for tone, but now underweights technical details in generation.

Each of these starts small. Each erodes quality without triggering an error. And each is invisible unless you’re running evaluation continuously.

That’s the operational reality of RAG system design. It’s not about your top-1 BLEU score from two months ago. It’s about how gracefully your system degrades under real-world change.

How to Design for Change

RAG is a living architecture. Treat it like a living system.

  1. Design for Observability Every component — chunker, retriever, ranker, generator — needs structured logging. Track embeddings. Log retrieval hits. Score grounding. Pipe everything to your observability layer so you can correlate failure modes with data shifts.
  2. Plan for Adaptive Updates Build a scheduler or event-driven system to update your embedding index. Use diff-based re-embedding strategies to reduce cost. Track model versioning so you know when to re-evaluate downstream effects.
  3. Layer Evaluation by Function Don’t just run end-to-end evals. Score each component separately. Retrieval quality, grounding fidelity, answer usefulness — they all drift differently. Localize your tests or you’ll waste time chasing shadows.
  4. Use Feedback to Guide Reranking Treat rerankers as policy engines. If users consistently prefer certain doc styles, adjust weights. Use explicit thumbs-up/down signals or inferred metrics (dwell time, copy-paste behavior) to guide reranking strategy updates.

This isn’t overhead. This is how you keep your system trusted, usable, and maintainable at scale.

Rot Is a Design Choice

A decaying RAG system isn’t a failure of machine learning. It’s a failure of systems thinking.

If you designed your pipeline like a one-time product, of course it rots. If you don’t monitor user satisfaction, of course hallucinations sneak in. If you don’t log what was retrieved, of course you can’t debug output drift.

None of that is a surprise. It’s a symptom of treating RAG like a feature, not a function.

A good RAG system design isn’t one that looks clean at launch. It’s one that gets better — or at least doesn’t collapse — after a year in the wild.

You don’t need more vector search tools. You need a design that learns from itself.

Share
Rob Angeles

Written by

Rob Angeles

Most consulting engagements split the thinking from the doing. Rob doesn't. Principal Consultant at Archos Labs, he owns the full stack — assessment, architecture, delivery — across retail, financial services, healthcare, and government.