

Ask five engineers what RAG is, and you’ll get five versions of the same sentence: “You retrieve a few documents, put them into a prompt and let the model respond.” That description isn’t wrong, but it’s about two years out of date. More importantly, it obscures just how many architectural choices lie beneath that single sentence.
Naive RAG works fine in a demo: embed the query, retrieve the top-k results from a vector index, put them in your prompt, and you’re done. But deploy that same pipeline in an enterprise environment – with event-driven document updates, session state, agent-driven tool calls and strict access control – and that simplicity vanishes.
A good RAG architecture therefore goes far beyond retrieval and generation. For enterprise AI, indexing, storage, orchestration, monitoring, governance and access management also determine whether Retrieval-Augmented Generation can run reliably in production.
This is not an article about why RAG works. We are looking at the underlying architectural building blocks: what RAG patterns exist, what infrastructure each pattern requires, and what choices you need to make regarding orchestration, storage, monitoring and security.

RAG (Retrieval-Augmented Generation) is an AI architecture in which a language model retrieves relevant information from external data sources whilst answering a question and uses this as context to generate a response.
A language model does not, by itself, have access to internal documents or up-to-date company figures. Without additional context, it generates answers based on its training data, with the risk of hallucination.
A simple RAG pipeline consists of three steps:
That is the essence of it. The complexity of a production-ready RAG architecture lies primarily in everything surrounding it: how you build and keep the index synchronised, how retrieval is triggered, where session state is maintained, and how you version embeddings when switching models.
A traditional data platform is optimised for aggregation: for example, give me the total of all sales, using batch ETL and a lakehouse or data warehouse as the single source of truth.
GenAI workloads are optimised for something else. Here, you want to retrieve specific, relevant information quickly, using semantic rather than just SQL-based access, and with low latency.
This does not require replacing your data warehouse. It requires an additional layer alongside it: the AI execution plane.
Both layers can use the same underlying data, but approach it differently. Vector indexes sit alongside tables, and semantic search alongside SQL queries. The existing data infrastructure thus remains the foundation, whilst the AI execution plane makes data available in a different way to LLMs and AI applications.
RAG is not a one-size-fits-all solution. Depending on how quickly a response needs to be available, whether a conversation requires memory, and whether the system needs to perform actions independently, you will end up with different architectural patterns.
The five patterns build partly on one another. The real-time patterns share the same foundation, with each subsequent pattern adding more statefulness or autonomy.

With Ephemeral RAG, the vector index only exists for as long as you need it. You build the index, use it for a specific processing task and then tear it down again.
This means there is no need for infrastructure to run permanently.
Example: a night-time job that processes and summarises support tickets, after which the output is written to the data warehouse.

Persistent Index Building forms the foundation of real-time RAG patterns. In this process, a vector index remains continuously or periodically synchronised with the source data.
This pattern is most similar to traditional platform work, except that, in addition to traditional tables, you also work with embeddings and a vector index.
Example: processing unstructured data such as quotations, PDFs and manuals, and making them permanently searchable.

Online RAG is the simplest real-time variant: one question in, one researched and substantiated answer out.
The system does not need to remember anything from previous queries. In principle, every request can be handled independently.
Example: an internal search tool that allows staff to ask a question and receive an immediate answer with a source reference.

Conversational RAG adds memory to Online RAG. The system takes into account what has been said earlier in the conversation, allowing a user to ask follow-up questions without having to provide the full context each time.
This creates a second form of state alongside retrieval: the conversational context.
Example: an HR chatbot that employees can use to have a conversation about internal information, including follow-up questions.

With Agentic RAG, the model becomes active. Retrieval is no longer a single fixed step in the pipeline, but one of the tools that the model itself can utilise.
Furthermore, an agent can perform retrieval multiple times and consult additional systems to arrive at an answer or take action.
Example: an assistant who queries the CRM, checks contract terms and, based on this, draws up a proposal.
The choice of a RAG architecture is primarily determined by the required speed, state and autonomy.
| RAG pattern | Real-time | Memory | Tool usage | Typical application |
|---|---|---|---|---|
| Ephemeral RAG | No | No | No | Batch enrichment |
| Persistent Index Building | N/A | No | No | Up-to-date vector index |
| Online RAG | Yes | No | No | Enterprise search |
| Conversational RAG | Yes | Yes | No | Chatbots and assistants |
| Agentic RAG | Yes | Yes | Yes | Agentic workflows |
Online RAG is suitable for standalone real-time queries. Conversational RAG makes more sense when conversation history forms part of the use case. Agentic RAG becomes relevant when the system needs to be able to consult multiple sources or tools independently.
Persistent Index Building forms the foundation for every real-time pattern – Online, Conversational and Agentic RAG. After all, without an up-to-date, searchable index, there is nothing to query reliably.
The most advanced pattern is not automatically the best. The right architecture is the simplest architecture that can reliably deliver the required capability.
Sooner or later, you’ll come up against this: you’ve indexed tens of thousands of documents using a particular embedding model, and six months later, a model emerges that performs noticeably better.
The temptation is simply to switch over. The problem is that old and new embeddings do not automatically lie in the same vector space. As a result, retrieval quality can become inconsistent without you realising it.
A robust solution is a blue/green deployment. You build a completely new index using the new embedding model, test it in parallel, and only switch over once the new index performs at least as well. The old index remains temporarily available in case a rollback is needed.
If that is too costly, you can migrate gradually: re-embed documents in batches and query both indexes temporarily.
A third option is to consciously accept the technical debt: continue using the old model for existing data and the new model only for new content. This is a compromise, but sometimes a deliberate architectural choice.
What helps in all cases is to tag embeddings from day one with the name and version of the embedding model. That single line of metadata makes any future migration considerably more manageable.
For debugging and evaluation, it is not enough simply to know that a RAG system has provided an answer. You want to be able to reconstruct why it provided that answer.
You should therefore record at least the following for each request:
For agentic systems, the full trace is added to this: which tools were called, in what order and with what results.
Without such a trace, a failing agent is difficult to debug. Tools such as LangSmith and MLflow Tracing are designed to provide insight into this decision tree.
RAG monitoring therefore operates on three levels simultaneously:
All three are necessary to determine whether a RAG system not only functions technically but also runs reliably and efficiently in production.
Agentic RAG requires more explicit boundaries than a traditional RAG pipeline. After all, the model itself determines which tools it uses and how many intermediate steps it performs.
Without boundaries, a session may continue to reason for too long, costs may rise, or an agent may access systems that fall outside its remit.
In a production environment, this means you need to consider, amongst other things:
As soon as an agent is capable not only of generating text but also of carrying out actual actions, these guardrails become an integral part of the architecture.
Access control should take place at the point of retrieval, not merely as a retrospective filter.
If a user does not have rights to a document, that document must remain outside the retrieved context. A model should not receive the information at all.
This also makes governance an architectural issue. For example, who owns the vector store?
If the data platform team manages everything, this creates centralised governance, but may also create a bottleneck for the AI team. If the AI team manages the infrastructure independently, it can move faster, but the risk of data silos and duplicate storage increases.
A possible division of responsibilities is therefore:
This ensures that governance remains centrally organised, whilst allowing AI teams the freedom to develop their own applications and retrieval layer.
None of the five RAG patterns is inherently better.
Agentic RAG is not the end point towards which every use case must evolve. Nor is Ephemeral RAG too simple to be taken seriously for batch enrichment.
Each pattern trades complexity for a specific capability: real-time response, conversational memory or tool usage. The right choice – and often the right combination of patterns – depends on what the use case actually requires, not on which pattern sounds the most advanced.
What distinguishes a RAG pilot that never leaves the lab from a RAG platform running reliably in production is rarely a larger model.
The difference lies in the surrounding architecture: orchestration, storage synchronisation, embedding versioning, monitoring, security and access management must be tailored to the actual nature of the problem. They must not be added only after something goes wrong.
Making a RAG solution production-ready therefore requires not only knowledge of LLMs, but also of data architecture, orchestration, security and monitoring. This is precisely where GenAI and data engineering converge.
At Blenddata, we design and build that infrastructure as part of our GenAI platform projects.
RAG stands for Retrieval-Augmented Generation. It is an AI architecture in which relevant information is retrieved from external data sources and provided to a language model as context before the model generates a response.
A basic RAG architecture consists of retrieval, augmentation and generation. In an enterprise environment, components are added for, amongst other things, indexing, storage, synchronisation, monitoring, security and governance.
In traditional RAG, retrieval is a predefined step in the pipeline. In Agentic RAG, the model can decide for itself when to retrieve information, which tools to use and what subsequent steps are required.
A vector index is used to make information semantically searchable. In Online, Conversational and Agentic RAG, this index must remain up to date and available to enable real-time retrieval.
Monitor both technical performance and quality and costs. Consider latency and errors, chunks retrieved, final prompts and responses, token usage and – in the case of agentic systems – the full sequence of tool calls.
Access control must be applied as early as the retrieval stage. Documents for which a user does not have authorisation must not be included in the context sent to the language model.
Agentic RAG is relevant when a system not only needs to retrieve information, but must also independently consult multiple sources or tools in order to perform a task. Where a single retrieval step is sufficient, a simpler RAG pattern generally results in less architectural complexity.