| # | Type | Key Mechanism | Best For | Avoid When |
|---|---|---|---|---|
| 1 | Naive RAG | Chunk → Embed → Top-k retrieval | Prototypes, small corpora | High precision needed |
| 2 | Advanced RAG | HyDE + Hybrid search + Reranking | Production Q&A | Latency is critical |
| 3 | Modular RAG | Swappable pipeline components | Custom enterprise pipelines | Simple single-source systems |
| 4 | Agentic RAG | LLM-controlled multi-step retrieval | Complex reasoning, tool use | Strict latency budgets |
| 5 | Graph RAG | Knowledge graph traversal | Relational data, multi-hop | Simple FAQ systems |
| 6 | Corrective RAG | Retrieval quality evaluation + fallback | Out-of-KB or stale corpora | All queries are well-covered |
| 7 | Self-RAG | LLM trained with reflection tokens | High-accuracy specialized domains | General chatbots, no fine-tuning |
| 8 | Speculative RAG | Drafter → Verifier pattern | Cost/quality optimization | Multi-hop queries |
| 9 | Multi-modal RAG | Cross-modal embeddings (CLIP) | Docs with images/tables | Text-only corpora |
| 10 | Long-context RAG | Full documents in context | Complex documents, small corpus | Large corpora, cost-sensitive |
| 11 | Adaptive RAG | Query classifier routes to no-retrieval / single-hop / multi-hop | Mixed-complexity query traffic, latency-sensitive | Homogeneous query distribution |
| 12 | Structured RAG | Text-to-SQL generation with schema linking | Relational databases, tabular data | Schema-free, unstructured data |
| 13 | RAPTOR | UMAP + GMM clustering → per-cluster LLM summaries → multi-level tree | Multi-hop questions, hierarchical docs | Frequently updated corpora (tree rebuild is expensive) |
| 14 | Contextual RAG | LLM prepends 1–2 sentence context prefix to each chunk before embedding | Dense corpora with ambiguous or short chunks | Token-budget-constrained indexing pipelines |
| 15 | LightRAG | Entity-relationship graph + dual local (entity) / global (community) retrieval | Queries mixing relational and semantic needs | Simple single-topic factoid Q&A |
| 16 | RAFT | Fine-tunes LLM generator on oracle docs + K distractor docs + CoT answers | Closed-domain high-stakes (medical, legal, internal KB) | Frequently changing corpus or when fine-tuning is off the table |
| 17 | Cache-Augmented Generation (CAG) | Precomputes KV cache for entire corpus; zero retrieval step at inference | Stable, bounded corpus that fits in context window | Large, dynamic, or multi-tenant corpora |
| 18 | RAG-Fusion | N query reformulations → N parallel retrievals → RRF merge → generation | Ambiguous queries, broad topic coverage | Hard latency budget (N× retrieval cost) |
| 19 | Iterative / Multi-hop RAG | Retrieve → reason → retrieve loops (IRCoT, Self-Ask, ITER-RETGEN) until a stopping criterion | Compositional multi-hop questions needing fact chaining | Simple single-fact queries; tight latency (sequential hops) |
| 20 | HippoRAG | Personalized PageRank over an LLM-built KG + synonym edges for single-step multi-hop | Entity-rich multi-hop on a stable, high-volume corpus | Entity-poor/abstract queries; fast-changing corpora |
| 21 | Memory / Conversational RAG | Tiered memory (working/summary/long-term) + history-aware query rewriting | Multi-turn assistants needing reference resolution and recall | Single-turn lookups; stateless-by-requirement domains |
| 22 | HyDE | Embed an LLM-generated hypothetical answer instead of the query | Zero-shot/unsupervised encoders, vocabulary-mismatched or cross-lingual queries | Fine-tuned in-domain retrievers; entity/factoid lookups |
| 23 | FLARE | Retrieve mid-generation when next-sentence token confidence < θ (forward-looking) | Long-form generation where information needs evolve | Short factoid answers; APIs without token logprobs |
| 24 | KAG | Logical-form-guided reasoning + KG↔text mutual indexing | Professional domains needing rule-following deduction + provenance (medical, legal, e-gov) | Open-domain/similarity-answerable Qs; fast-changing corpora |
| 25 | GraphReader / GNN-RAG | Agentic graph-of-notes traversal (GraphReader) / GNN-retrieved reasoning subgraphs (GNN-RAG) | Long-context multi-hop (GraphReader); KGQA over dense KGs (GNN-RAG) | Single-hop or similarity-answerable; no KG (GNN-RAG) |
| 26 | REALM (training-time) | Retriever learned end-to-end via masked-LM pre-training (latent-variable marginalization) | Research/learned-retrieval; updatable-corpus QA | When a frozen off-the-shelf retriever suffices |
| 27 | RETRO (training-time) | Chunked cross-attention over a trillion-token frozen datastore | Parameter-efficient LMs; large-scale knowledge LM | Most apps without trillion-scale datastore infra |
| 28 | Atlas (training-time) | Jointly-trained Contriever + FiD, attention-distillation | Few-shot knowledge tasks with scarce labels | When strong LLM + inference-time RAG already suffices |
| 29 | Fusion-in-Decoder (FiD) (training-time) | Encode each passage separately, fuse in the decoder | Generative reading/fusing of many retrieved passages | Single-passage reads; very tight decoder-latency budgets |
| 30 | ColRAG / ColBERT | Multi-vector late interaction — one embedding per token, MaxSim scoring | Hard retrieval, domain-specific vocabulary, sub-100ms precision | Storage-constrained (index is 10–30× larger than single-vector); already using a reranker |
| 31 | Agentic Web RAG | Live web search as retrieval backend — fetch, extract, cite pages in real time | Queries about recent events; no pre-built corpus; general-purpose assistants | Latency < 500ms; sensitive/regulated data; deterministic answers required |
| 32 | Few-Shot Example RAG | Retrieve (query, answer) demonstration pairs instead of documents | Code generation with project style, structured output, text-to-SQL | Factual Q&A where document content (not format) is what's needed |
| 33 | Verifiable / Citation RAG | Every claim linked to a specific passage + NLI-based attribution verification | Legal, medical, compliance contexts requiring auditable answers | Casual Q&A where citation overhead is unnecessary |
| 34 | Privacy-Preserving RAG | On-device embedding, DP noise on query vectors, federated retrieval across data silos | Regulated industries (HIPAA, GDPR); zero-trust retrieval; cross-org federated search | Low-sensitivity public corpora where data minimization is not required |
| 35 | Streaming / Real-Time RAG | Continuous Kafka/CDC event stream → micro-batch embed → upsert; freshness window in seconds | News, financial data, live support docs; any corpus where staleness > 30s is unacceptable | Stable, infrequently-updated corpora where batch reindex works fine |
| 36 | Table-Aware RAG | Table extraction → row-level chunking with column headers → numerical-query boosted retrieval | Financial reports, scientific data, HTML tables, multi-column PDFs with structured data | Pure prose documents; relational databases (use Structured RAG instead) |
| 37 | Tree of Thought RAG | Generate N thought branches → retrieve targeted evidence per branch → score and prune → synthesize best path | Queries with competing hypotheses (diagnostics, root cause analysis, multi-interpretation) | Simple factual queries; latency-sensitive applications (15–60s per query) |
| 38 | DPR (Dense Passage Retrieval) | Bi-encoder trained with contrastive loss on (question, passage) pairs; offline passage indexing in FAISS | Foundational architecture; learning fine-grained semantic retrieval; custom bi-encoder training | When off-the-shelf embedding models (BGE, E5) already meet recall requirements |
| 39 | WebGPT / Tool-Augmented LM | LLM trained via RLHF to issue browser actions (search/click/quote) as first-class learned operations | When prompting-based tool use is unreliable; narrow/stable tool space; verification signal available | Rapidly evolving tool space; prompting already reliable; training cost is prohibitive |
| 40 | SURGE (Schema-Grounded RAG) | Schema-constrained generation via tool_use + per-field NLI grounding verification before delivery | ETL from documents, compliance reports, database population — any structured output needing per-field auditability | Conversational/advisory output where field-level traceability is unnecessary |
| 41 | Recursive Document Summarization RAG | Multi-level summary tree (chunk → section → document → corpus) built offline; query routing selects the right abstraction level at inference | Large documents navigated at multiple granularities (annual reports, contracts); "what does section 3 say?" | Cross-document thematic queries (use RAPTOR instead); small corpora |
| 42 | Search-R1 / Reasoning RAG | RL-trained LLM interleaves <think>/<search> tokens, learning a retrieval policy from answer-correctness reward |
Domains with verifiable answers and RL training budget (QA, math, coding search) | No RL training infra/budget; prompted agentic RAG already sufficient |
| 43 | Deep Research / Agentic Research RAG | Parallel plan → search → read → synthesize sub-agents produce a long-form cited report | Open-ended research questions needing dozens of sources and a full report | Simple single-answer lookups; hard latency/cost budgets (minutes, dollars per query) |
| 44 | MemoRAG | Lightweight memory model compresses the corpus, generates query-time draft "clues" to guide precise retrieval | Implicit or aggregate queries where no single passage has the answer | Simple factoid lookups where standard dense retrieval already works |
| 45 | LongRAG + Self-Route | Retrieves large (~4K-token) grouped units instead of small chunks; Self-Route picks RAG vs. full long-context per query | Long documents where small-chunk fragmentation loses context | Very large corpora (long units cost more per retrieval); tight latency budgets |
| 46 | VisRAG | VLM embeds and reads document pages as images end-to-end — no OCR/layout parsing | Visually rich documents (scanned PDFs, forms, slides) where parsing loses structure | Plain-text corpora; VLM inference cost/latency is prohibitive |
| 47 | LazyGraphRAG | Cheap NLP noun-phrase graph at index time; all LLM summarization deferred to a query-time relevance-test loop | Graph-style queries where GraphRAG's indexing cost is prohibitive | Extremely low query-time latency requirements (relevance-test loop adds cost per query) |
| 48 | Astute RAG | Elicits the LLM's own parametric knowledge as an explicit source, then reconciles it with retrieved passages | Domains with frequent retrieval-vs-parametric-knowledge conflicts | Retrieval is already highly reliable and conflicts are rare |
| 49 | Auto-RAG / DeepRAG | Decides retrieve-vs-reason at every step (autonomous dialogue or explicit MDP), not once up-front | Multi-step reasoning tasks where retrieval need varies per step | Simple single-hop queries; no fine-tuning budget |
| 50 | CoRAG (Chain-of-Retrieval) | Trained on rejection-sampled retrieval chains; chain length is a tunable test-time compute knob | Multi-hop QA where you can trade inference cost for accuracy | Fixed low-latency budget; no fine-tuning pipeline |
| 51 | RQ-RAG | Fine-tuned to explicitly rewrite / decompose / disambiguate queries via special tokens before retrieval | Ambiguous or compound queries where prompted rewriting underperforms | No fine-tuning budget; prompted HyDE/Multi-Query already sufficient |
| 52 | REFRAG | Compresses chunks into dense embeddings; RL policy selectively expands important ones back to full tokens | Latency-critical RAG with many retrieved chunks (long effective context) | Small k (few chunks); training/serving the compression+policy stack is not worth it |
Relative ratings for a typical mid-size deployment (●○○ low → ●●● high). Per-query cost assumes comparable answer quality targets.
| Type | Per-query cost | Latency | Build complexity | Ops complexity | Main cost driver |
|---|---|---|---|---|---|
| Naive RAG | ●○○ | ●○○ | ●○○ | ●○○ | LLM generation tokens |
| Advanced RAG | ●●○ | ●●○ | ●●○ | ●●○ | HyDE generation + reranker inference |
| Modular RAG | ●●○ | ●●○ | ●●● | ●●○ | Router + active modules |
| Agentic RAG | ●●● | ●●● | ●●● | ●●● | Multiple LLM calls per loop |
| Graph RAG | ●●○ | ●●○ | ●●● | ●●● | KG construction (index-time, LLM-heavy) |
| Corrective RAG | ●●○ | ●●○ | ●●○ | ●●○ | Retrieval evaluator LLM per query |
| Self-RAG | ●○○* | ●●○ | ●●● | ●●○ | *Up-front fine-tuning; cheap at inference |
| Speculative RAG | ●●○ | ●○○ | ●●● | ●●● | Parallel drafter GPUs + verifier scoring |
| Multi-modal RAG | ●●○ | ●●○ | ●●● | ●●○ | Image embedding at index time, vision LLM |
| Long-context RAG | ●●● | ●●● | ●○○ | ●○○ | Context tokens (linear in stuffed docs) |
| Adaptive RAG | ●○○ | ●○○ | ●●○ | ●●○ | Classifier (tiny); saves cost on easy queries |
| Structured RAG | ●●○ | ●●○ | ●●○ | ●●○ | Schema-in-prompt tokens + retry loops |
| RAPTOR | ●○○* | ●○○ | ●●● | ●●○ | *Up-front LLM summarization per cluster; cheap at query time |
| Contextual RAG | ●●○* | ●○○ | ●●○ | ●●○ | *One LLM call per chunk at index time (prompt caching cuts ~94%) |
| LightRAG | ●●○ | ●●○ | ●●● | ●●● | Entity/relationship extraction at build time; graph ops at query time |
| RAFT | ●○○* | ●○○ | ●●● | ●●○ | *Up-front fine-tuning cost; inference same as base model |
| CAG | ●●●* | ●○○ | ●○○ | ●●○ | *High cold-start KV cache load; zero retrieval latency per query |
| RAG-Fusion | ●●○ | ●●○ | ●●○ | ●●○ | N × (reformulation + retrieval); parallelizable |
| Iterative / Multi-hop RAG | ●●● | ●●● | ●●○ | ●●○ | One LLM reasoning call per hop (sequential, not parallelizable) |
| HippoRAG | ●○○* | ●○○ | ●●● | ●●● | *Up-front OpenIE over whole corpus; query-time retrieval is LLM-free PageRank |
| Memory / Conversational RAG | ●●○ | ●●○ | ●●○ | ●●● | Query-rewriting LLM call + memory store reads/writes per turn |
| HyDE | ●●○ | ●●○ | ●○○ | ●○○ | Extra LLM generation (the hypothetical) before retrieval |
| FLARE | ●●○ | ●●● | ●●○ | ●●○ | Re-generation of low-confidence sentences + interleaved retrievals |
| KAG | ●●○* | ●●○ | ●●● | ●●● | *Heavy KG build + extraction; multi-step parse/execute/compose per query |
| GraphReader | ●●● | ●●● | ●●○ | ●●○ | LLM call per exploration step (sequential agentic traversal) |
| GNN-RAG | ●○○* | ●○○ | ●●● | ●●● | *Up-front GNN training + KG upkeep; cheap GNN pass + one LLM call at query |
| REALM | ●○○ | ●○○ | ●●● | ●●● | *Heavy training (async index refresh); inference is RAG-like |
| RETRO | ●●○ | ●●○ | ●●● | ●●● | Per-chunk retrieval + huge frozen datastore storage/serving |
| Atlas | ●●○ | ●●○ | ●●● | ●●● | Joint training + index refresh; FiD encoder cost linear in passages |
| Fusion-in-Decoder | ●●○ | ●●○ | ●●○ | ●●○ | Decoder cross-attention over all passage tokens (grows with k) |
| ColRAG / ColBERT | ●●○ | ●○○ | ●●○ | ●●○ | Large token-level index storage; fast MaxSim at query time |
| Agentic Web RAG | ●●● | ●●● | ●●○ | ●●○ | Search API + page fetch latency; multiple LLM calls for multi-step |
| Few-Shot Example RAG | ●○○ | ●○○ | ●●○ | ●○○ | Example embedding at index time; retrieval same cost as dense RAG |
| Verifiable / Citation RAG | ●●○ | ●●○ | ●●○ | ●●○ | NLI verification pass per claim adds latency and compute |
| Privacy-Preserving RAG | ●●○ | ●●○ | ●●● | ●●● | DP noise embedding + federated retrieval coordination overhead |
| Streaming / Real-Time RAG | ●●○ | ●○○ | ●●● | ●●● | Kafka/CDC infra + always-on consumer; embedding is micro-batched |
| Table-Aware RAG | ●●○ | ●●○ | ●●○ | ●●○ | Table parsing + row-level embedding at index time; reranker boost at query time |
| Tree of Thought RAG | ●●● | ●●● | ●●● | ●●● | 15–50 LLM calls per query (thought gen + eval + retrieval per branch) |
| DPR | ●○○* | ●○○ | ●●● | ●●○ | *Up-front contrastive training; inference is standard bi-encoder retrieval |
| WebGPT / Tool-Augmented LM | ●●●* | ●●● | ●●● | ●●● | *RLHF pipeline is expensive; inference is multi-step browsing with LLM calls |
| SURGE | ●●○ | ●●○ | ●●○ | ●●○ | Tool-use generation + NLI verification pass per field; LLM call per extracted object |
| Recursive Summary RAG | ●●○* | ●○○ | ●●○ | ●●○ | *Up-front Haiku summarization per section/document; query-time routing is a single cheap Haiku call |
| Search-R1 / Reasoning RAG | ●●○* | ●●○ | ●●● | ●●○ | *Heavy RL training cost; inference is a bounded number of self-issued search calls |
| Deep Research RAG | ●●●● | ●●●● | ●●○ | ●●○ | Dozens of parallel sub-agent LLM calls + page fetches per report |
| MemoRAG | ●●○ | ●●○ | ●●● | ●●○ | Memory-model training/compression up front; extra clue-generation call per query |
| LongRAG + Self-Route | ●●○ | ●●○ | ●●○ | ●○○ | Larger retrieval units → more tokens fed to the reader per call |
| VisRAG | ●●○ | ●●○ | ●●○ | ●●○ | VLM inference on page images at both index and query time |
| LazyGraphRAG | ●○○* | ●○○ | ●●○ | ●●○ | *Cheap NLP-only indexing; query-time iterative relevance testing instead |
| Astute RAG | ●●○ | ●●○ | ●○○ | ●○○ | Extra internal-knowledge elicitation + multi-round consolidation calls |
| Auto-RAG / DeepRAG | ●●○* | ●●○ | ●●● | ●●○ | *Fine-tuning on decision traces; variable per-step retrieve/reason calls at inference |
| CoRAG | ●●●* | ●●○ | ●●● | ●●○ | *Fine-tuning on rejection-sampled chains; chain length is a tunable test-time cost knob |
| RQ-RAG | ●●○* | ●●○ | ●●● | ●●○ | *Fine-tuning cost; tree-decoding across refinement branches at inference |
| REFRAG | ●○○* | ●○○ | ●●● | ●●○ | *RL + encoder training up front; ~30x lower TTFT than raw-token baseline at inference |
| Symptom | Likely cause | First fix | Deep dive |
|---|---|---|---|
| Answer contradicts the retrieved docs | LLM ignores context (parametric memory wins) | Harden prompt ("answer ONLY from context"), measure faithfulness | Hallucination |
| Relevant doc exists but never retrieved | Semantic gap between query and chunk wording | Hybrid search (BM25 + dense), query rewriting | Retrieval Failure |
| Recall collapsed after a model/pipeline change | Query and docs embedded with different models/versions | Re-embed entire corpus with one model; version-stamp vectors | Embedding Mismatch |
| Confidently wrong answers about recent facts | Index lags source-of-truth updates | Incremental indexing + TTL/versioning; freshness alerts | Stale Index |
| Answers degrade as k or doc size grows | Context overflow → truncation or lost-in-the-middle | Rerank then cut to top 3–5; compress context | Context Overflow |
| Good docs retrieved but ranked below junk | Reranker domain mismatch or score miscalibration | Evaluate reranker on domain pairs; swap or fine-tune | Reranker Failure |
| Multi-turn answers degrade; wrong context retrieved after topic change or pronoun use | Conversation history poisons the retrieval query (coreference, implicit carry-over) | Query condensation: rewrite history + new turn into a standalone query before retrieval | Conversational Context Drift |
| Multi-hop chain produces confident but completely wrong answer; error invisible to the LLM | HyDE/expansion generated a wrong hypothesis; wrong first hop propagated through all subsequent hops | Re-anchor each hop against the original query; add semantic-drift circuit breaker | Cascading Retrieval Failure |
| Tenant B receives Tenant A's financial or confidential data via RAG response | Semantic cache keyed only on query meaning — no tenant namespace; semantically similar queries across tenants collide | Namespace all semantic cache keys by tenant_id (or permission-hash) | Semantic Cache Leakage |
| Content type | Strategy | Typical size | Notes |
|---|---|---|---|
| Uniform prose (articles, wikis) | Recursive splitting | 256–512 tokens, 10–20% overlap | Sensible default; respect paragraph boundaries |
| Long structured docs (manuals, contracts) | Parent-child | Child 200–300, parent 1,000+ | Retrieve on child precision, generate with parent context |
| Q&A / FAQ content | One Q&A pair per chunk | Natural unit | Never split an answer from its question |
| Code | Function/class boundary | Natural unit | Syntax-aware splitters; keep signatures with bodies |
| Tables | Whole table + caption per chunk | Natural unit | Serialize to markdown; never split rows from headers |
| Mixed/unknown | Semantic chunking | Variable | Embedding-similarity breakpoints; costs an embedding pass |
| Cross-chunk context critical (references span chunks) | Late Chunking | Variable | Embed full doc first → pool token embeddings into windows; requires token-level model (JinaAI v3, nomic-embed-text) |
Calibrate on your own data: build a small labeled probe set, sweep chunk size/overlap, measure Recall@5 — see chunking_strategies.md.
| Metric | What it measures | Tool |
|---|---|---|
| Context Precision | Fraction of retrieved chunks that are relevant | RAGAS |
| Context Recall | Fraction of relevant info that was retrieved | RAGAS |
| Faithfulness | Does the answer only use the retrieved context? | RAGAS, TruLens |
| Answer Relevance | Does the answer actually address the question? | RAGAS |
| MRR | Rank of first relevant result | Custom |
| NDCG | Quality of ranked retrieval results | Custom |
| Latency P95 | 95th percentile end-to-end response time | Infrastructure |
Production-side evaluation (LLM-as-judge, online metrics, drift alerts): see observability_and_evaluation_ops.md.
text-embedding-3-small/large (OpenAI)BGE-large-en-v1.5 (BAAI, open-source)E5-mistral-7b-instruct (Microsoft, open-source)Cohere Embed v3jina-embeddings-v3 (JinaAI — token-level output, required for Late Chunking)nomic-embed-text (open-source, token-level output, ColBERT / Late Chunking compatible)ms-marco-MiniLM-L-6-v2 (cross-encoder)Cohere RerankJina Reranker v2Start
│
├─ Is the primary data source a relational database or tabular store?
│ └─ YES → Structured RAG
│
├─ Is your corpus stable, bounded, and fits in a context window?
│ └─ YES → Cache-Augmented Generation (CAG) ← no retrieval step needed
│
├─ Is your corpus relational / entity-heavy (graph-structured)?
│ ├─ Large corpus, mandatory global summaries needed → Graph RAG (Microsoft)
│ └─ Lower build cost, dual local+global retrieval → LightRAG
│
├─ Does query complexity vary widely (trivial to multi-hop)?
│ └─ YES → Adaptive RAG
│
├─ Does your query require multiple retrieval steps or tool calls?
│ └─ YES → Agentic RAG
│
├─ Does your corpus include images/tables?
│ └─ YES → Multi-modal RAG
│
├─ Is your corpus small (<50 docs) and complex?
│ └─ YES → Long-context RAG
│
├─ Is your corpus hierarchical or multi-level (needs multi-hop summaries)?
│ └─ YES → RAPTOR
│
├─ Are chunks short / ambiguous and retrieval recall is low?
│ └─ YES → Contextual RAG ← LLM-generated context prefix per chunk
│
├─ Are queries often ambiguous or benefit from multiple phrasings?
│ └─ YES → RAG-Fusion ← N reformulations + RRF merge
│
├─ Is retrieval accuracy critical in a closed, specialized domain?
│ ├─ Can fine-tune the LLM generator → RAFT
│ └─ Cannot fine-tune → Self-RAG (if reflection tokens available)
│
├─ Is your knowledge base potentially outdated/incomplete?
│ └─ YES → Corrective RAG
│
├─ Do you need cost/quality optimization at scale?
│ └─ YES → Speculative RAG
│
├─ Do you need a flexible, customizable pipeline?
│ └─ YES → Modular RAG
│
├─ Is this a production system needing good precision?
│ └─ YES → Advanced RAG
│
└─ Prototyping or simple use case?
└─ YES → Naive RAG
Run through this before any RAG interview (or production launch):
Retrieval
Chunking & Context
Generation
Evaluation & Ops
Security & Access