All 52 RAG architectures mapped by mechanism, data source, retrieval control, and production fit.
Every RAG system can be classified along four independent dimensions. Understanding these axes helps you systematically answer "How does X RAG work?" and "When do you choose Y over Z?"
1. Retrieval Control
2. Data Modality
3. Feedback Loop
4. Retrieval Scope
Each axis maps to a different set of failure modes and trade-offs. Mastering these axes makes every RAG interview question answerable.
| Architecture | Retrieval Control | Data Modality | Feedback Loop | Scope | Fine-tune Required? | Latency Class | Production Maturity |
|---|---|---|---|---|---|---|---|
| Naive RAG | Static | Text-only | None | Single-hop | No | Fast (<200ms) | Stable (since 2020) |
| Advanced RAG | Static | Text-only | None | Single-hop | No | Fast (<200ms) | Stable (mature) |
| Modular RAG | Static | Text-only | None | Single-hop | No | Fast (<200ms) | Stable (mature) |
| Adaptive RAG | Dynamic | Text-only | None | Single-hop or Multi-hop | No | Fast (<200ms) | Emerging (2023+) |
| Agentic RAG | Agent-driven | Text-only | Self-critique | Multi-hop | No | Slow (>1s) | Emerging (2023+) |
| Corrective RAG | Dynamic | Text-only | Self-critique | Single-hop | No | Medium (200ms–1s) | Emerging (2023+) |
| Self-RAG | Agent-driven | Text-only | External signal | Iterative | Yes | Medium (200ms–1s) | Cutting-edge (2023+) |
| Speculative RAG | Dynamic | Text-only | None | Single-hop | No | Fast (<200ms) | Research-frontier |
| Graph RAG | Agent-driven | Graph | Self-critique | Multi-hop | No | Slow (>1s) | Emerging (2024+) |
| Structured RAG | Dynamic | Structured | None | Single-hop | No | Medium (200ms–1s) | Stable (growing) |
| Multimodal RAG | Static | Multimodal | None | Single-hop | No | Medium (200ms–1s) | Emerging (2023+) |
| Long-Context RAG | Static | Text-only | None | Single-hop | No | High (>1s) | Stable (2024+) |
| RAPTOR | Static | Text-only | None | Multi-hop (tree) | No | Fast (query-time) | Emerging (2024+) |
| Contextual RAG | Static | Text-only | None | Single-hop | No | Fast (<200ms) | Emerging (2024+) |
| LightRAG | Agent-driven | Graph | None | Multi-hop | No | Medium (200ms–1s) | Emerging (2024+) |
| RAFT | Static | Text-only | None | Single-hop | Yes | Fast (<200ms) | Emerging (2024+) |
| CAG | Static | Text-only | None | Single-hop | No | Fast (<200ms)* | Emerging (2024+) |
| RAG-Fusion | Static | Text-only | None | Single-hop (N-query) | No | Medium (200ms–1s) | Emerging (2024+) |
| Iterative / Multi-hop RAG | Dynamic | Text-only | Self-critique (optional) | Iterative / Multi-hop | No | Slow (>1s) | Emerging (2023+) |
| HippoRAG | Agent-driven | Graph | None | Multi-hop (single pass) | No | Fast (query-time)* | Research-frontier (2024+) |
| Memory / Conversational RAG | Dynamic | Text-only | None | Single- or Multi-hop | No | Medium (200ms–1s) | Stable (growing) |
| HyDE | Static | Text-only | None | Single-hop | No | Medium (200ms–1s) | Stable (2022+) |
| FLARE | Agent-driven | Text-only | Self-critique | Iterative | No | Slow (>1s) | Emerging (2023+) |
| KAG | Dynamic | Graph + Text | Self-critique (logical) | Multi-hop | No | Medium (200ms–1s) | Emerging (2024+) |
| GraphReader | Agent-driven | Graph (notes) | Self-critique | Iterative / Multi-hop | No | Slow (>1s) | Emerging (2024+) |
| GNN-RAG | Static (learned) | Graph | None | Multi-hop | Yes (GNN) | Fast (query-time) | Emerging (2024+) |
| REALM † | Static (learned) | Text-only | None | Single-hop | Yes | Fast (<200ms) | Foundational (2020) |
| RETRO † | Static (frozen) | Text-only | None | Per-chunk | Yes | Medium (200ms–1s) | Foundational (2021) |
| Atlas † | Static (learned) | Text-only | None | Single-hop | Yes | Medium (200ms–1s) | Foundational (2022) |
| Fusion-in-Decoder † | Static | Text-only | None | Single-hop (many passages) | Yes (reader) | Medium (200ms–1s) | Foundational (2020) |
| ColRAG / ColBERT | Static | Text-only | None | Single-hop | No | Fast (<200ms) | Stable (2020+) |
| Agentic Web RAG | Agent-driven | Text-only (live web) | Self-critique (optional) | Multi-hop | No | Slow (>1s) | Stable (2023+) |
| Few-Shot Example RAG | Static | Text-only | None | Single-hop | No | Fast (<200ms) | Stable (growing) |
| Verifiable / Citation RAG | Static | Text-only | Self-critique (attribution) | Single-hop | No | Medium (200ms–1s) | Emerging (2023+) |
| Privacy-Preserving RAG | Static | Text-only | None | Single-hop | No | Medium (200ms–1s) | Emerging (2024+) |
| Streaming / Real-Time RAG | Dynamic | Text-only | None | Single-hop | No | Fast (<200ms) | Stable (growing) |
| Table-Aware RAG | Static | Structured (tables in docs) | None | Single-hop | No | Medium (200ms–1s) | Emerging (2023+) |
| Tree of Thought RAG | Agent-driven | Text-only | Self-critique | Multi-hop (tree) | No | Slow (>1s) | Research-frontier (2024+) |
| DPR (Dense Passage Retrieval) | Static (learned) | Text-only | None | Single-hop | Yes | Fast (<200ms) | Foundational (2020) |
| WebGPT / Tool-Augmented LM | Agent-driven | Text-only (live web) | Self-critique | Multi-hop | Yes (RLHF) | Slow (>1s) | Foundational (2021) |
| SURGE (Schema-Grounded RAG) | Static | Text-only | Self-critique (NLI) | Single-hop | No | Medium (200ms–1s) | Emerging (2024+) |
| Recursive Document Summarization RAG | Static | Text-only | None | Multi-hop (tree) | No | Fast (<200ms) | Emerging (2024+) |
| Search-R1 / Reasoning RAG | Agent-driven | Text-only | External signal | Iterative | Yes | Medium (200ms–1s) | Experimental (2025+) |
| Deep Research / Agentic Research RAG | Agent-driven | Text-only (live web) | Self-critique (optional) | Multi-hop | No | High (>1s, minutes) | Production (commercial), Emerging (open-source) |
| MemoRAG | Dynamic | Text-only | None | Single-hop (per clue), Multi-hop (aggregate) | Yes | Medium (200ms–1s) | Experimental (2024+) |
| LongRAG + Self-Route | Dynamic | Text-only | Self-critique | Single-hop | No | Medium (200ms–1s)* | Emerging (2024+) |
| VisRAG | Static | Multimodal (page-images) | None | Single-hop | Yes (retrieval encoder) | Medium (200ms–1s) | Experimental (2024+) |
| LazyGraphRAG | Dynamic | Graph | Self-critique | Iterative | No | Medium (200ms–1s)* | Emerging (2024+) |
| Astute RAG | Static | Text-only | Self-critique | Single-hop | No | Medium (200ms–1s) | Experimental (2024+) |
| Auto-RAG / DeepRAG | Agent-driven | Text-only | Self-critique | Multi-hop / Iterative | Yes | Medium (200ms–1s)* | Experimental (2024+) |
| CoRAG (Chain-of-Retrieval) | Agent-driven | Text-only | External signal | Multi-hop / Iterative | Yes | Medium (200ms–1s)* | Emerging (2025+) |
| RQ-RAG | Agent-driven | Text-only | Self-critique | Multi-hop / Iterative | Yes | Medium (200ms–1s) | Experimental (2024+) |
| REFRAG | Static | Text-only | Self-critique | Single-hop | Yes | Fast (<200ms) | Emerging (2025+) |
* Query-time latency is low; HippoRAG and CAG pay a large up-front (index-build / KV-cache) cost instead. LongRAG, LazyGraphRAG, and Auto-RAG/DeepRAG vary with routing/expansion/step-count decisions made per query. CoRAG's latency also scales with the chosen chain length (a test-time compute knob). ‡ DPR is also a training-time architecture but is listed separately as the foundational bi-encoder retrieval model rather than a full RAG pipeline. † Training-time / parametric architectures: retrieval is integrated into pre-training or the model architecture (and the retriever/reader is trained), rather than bolted on at inference. They form a distinct branch from the inference-time architectures above.
Here's how the core architectures relate (the tree shows the original 12 base types; the 17 newer architectures in the table above are specializations or compositions of these — e.g. HippoRAG, LightRAG, KAG, GraphReader and GNN-RAG extend the Graph branch; FLARE and Iterative RAG extend the iterative-scope branch; HyDE is a query-transformation layer over any static retriever; and REALM/RETRO/Atlas/FiD form a separate training-time / parametric branch where retrieval is baked into pre-training or architecture rather than added at inference). Every path from root to leaf is a valid RAG system.
RAG
│
┌─────────────────┼──────────────────┐
│ │ │
Text-Only Specialized Context-Aware
│ (Data Modality) (Scope)
│ │ │
┌────┼────┐ ┌───┼───┐ ┌───┴────┐
│ │ │ │ │ │ │ │
Static Dyn Agent Graph Struct Multi Long- Spec
│ │ │ │ │ Context ulative
┌────┘ │ ┌───┘ │ │ │ │
│ │ │ │ │ │ │
Naive Adaptive Agentic GraphRAG Struct Multi │
RAG RAG RAG RAG RAG RAG Long-Context
│ │ │ │ │
Advanced Modular (multi-hop) (single-hop,
RAG RAG context
│ │ window)
Corrective (self-critique)
RAG Self-RAG
│ │
(validation) (fine-tune)
The field produces new architectures by combining these three generative patterns:
Pattern 1: Add a New Retrieval Source
def retrieve(query: str, use_graph: bool = True):
if use_graph and is_entity_query(query):
return retrieve_from_graph(query)
else:
return retrieve_from_text_index(query)
Pattern 2: Add a Feedback Loop
def retrieve_with_feedback(query: str):
context = retrieve(query)
if not is_sufficient(context): # feedback
context = retrieve_with_different_strategy(query)
return context
Pattern 3: Add Orchestration / Control Logic
def orchestrate(query: str):
strategy = pick_strategy(query) # "dense", "hybrid", "re-rank", etc.
context = retrieve(query, strategy)
if agent_wants_more_context():
context += retrieve(query, different_strategy)
return context
Most production systems combine two or more patterns. For example, a system that uses Adaptive RAG (pattern 3) to pick a strategy, then adds Self-RAG's feedback loop (pattern 2) is a valid hybrid.
Most production RAG systems are not pure. They combine two or more of the 52 architectures.
| Common Combination | Why It's Done | Trade-off |
|---|---|---|
| Adaptive + Agentic | Route simple queries through fast adaptive RAG; use agent for complex multi-hop queries | Added complexity; must maintain two retrieval paths |
| Graph + Advanced | Use semantic search on text, entity linking on graphs; merge results with RRF | Embedding model for text, entity indexing for graph; slower but higher recall |
| Modular + Corrective | Plug in a validation step after any modular retrieval choice | Added latency (one extra validation call per query) |
| Self-RAG + Structured | Use Self-RAG for text, route structured queries to SQL directly | Requires query classifier; different evaluation metrics per path |
| Long-Context + Adaptive | For queries that fit in context window, use long-context; for others, use adaptive retrieval | Mixed latency; must document context window limits |
Five common mistakes when classifying or choosing a RAG type:
1. Over-Engineering (Choosing Agentic when Naive Would Do)
2. Under-Specifying (Calling Everything "Advanced RAG")
3. Modality Mismatch (Using Text Embeddings on Structured Data)
4. Scope Creep Without Feedback (Multi-Hop Without Validation)
5. Ignoring Latency Budget