Skip to main content

Command Palette

Search for a command to run...

RAG is not magic, it's plumbing

Updated
•3 min read•View as Markdown
RAG is not magic, it's plumbing

Everyone talks about Retrieval-Augmented Generation as if it's a silver bullet. Here's what I learned building one in production.

What RAG promises

Retrieval-Augmented Generation sounds magical on paper: you connect an LLM to a knowledge base, and it answers precise questions while citing its sources. Hallucination problem solved. Always up-to-date documentation. Zero friction.

In practice, it's plumbing. And like all plumbing, problems are invisible until something leaks.

The real pipeline

A production RAG system looks like this:

  • Ingestion : extract, chunk, clean source content

  • Indexing : encode chunks as vector embeddings, store them

  • Retrieval : for each question, encode the query, find similar chunks

  • Generation : build a prompt with retrieved chunks, call the LLM

  • Post-processing : filter, format, cite sources

Each step can silently degrade quality without throwing an error.

The real problems

  • Chunking is underestimated. If you cut a document at the wrong place, the retrieved chunk lacks context. A 5-step procedure split in the middle of step 3 doesn't answer any question correctly. I spent more time on chunking strategy than on LLM integration.

  • Retrieval doesn't guarantee relevance. Vector similarity measures semantic proximity, not usefulness for the question asked. A very similar chunk on the surface can be completely off-topic in depth. Score thresholds are empirical and brittle.

  • Source quality determines everything. Poorly structured, unmaintained, or contradictory documentation -> confusing answers. The LLM doesn't fix knowledge base defects, it amplifies them.

  • Evaluation is the real unsolved problem. How do you know your system is answering well ? You need a reference question/answer dataset, automatic evaluation logic, and time-based tracking. Without it, you're flying blind.

What I did in practice

On the network watch project at Orange Business Services:

  • Semantic chunking by document section (not fixed size)

  • Enriched metadata on each chunk (source, date, document type)

  • Hybrid filtering: vector similarity + structured filters (document type, relevant equipment)

  • Manual evaluation on a set of real cases before production deployment

The result : Analysis time has been reduced from several weeks to just a few hours. It's not a matter of a smart LLM, but of plumbing that works.

Conclusion RAG works.

But the magic is in the operational details, not in the API call. If you're planning to build a RAG system, invest 80% of your time on data quality and evaluation. The rest comes after.