Retrieval Augmented Generation Compositionality
Organizations: IBM · Weizmann Institute of Science
Abstract
Retrieval Augmented Generation (RAG) grounds large language models in external knowledge. Modern pipelines combine embedding, chunking, retrieval, reranking, query augmentation, context compression, and agentic verification, yet these techniques are typically evaluated one at a time. It remains unclear whether their isolated gains survive composition, whether retrieval quality and answer faithfulness favor the same design choices, and whether conclusions from small corpora hold at large scale. We pre-declare three hypotheses and introduce LASAGNA, an open-source framework for controlled RAG evaluation. We test 450 configurations across eight benchmarks and corpora ranging from 5K to 200K documents. Three findings emerge. First, individually strong techniques from different phases of a RAG pipeline do not necessarily compose: three retrieval techniques predict a +47% combined improvement but deliver only +17% when used together. Second, component gains stack differently for retrieval and faithfulness, and optimizing one can hurt the other. Third, the best composition changes as the corpus grows: the combination that wins on a small corpus may not remain best at large scale. These findings show that gains measured in isolation are not reliable predictors of realistic performance, and that new RAG techniques should be tested with the full surrounding stack. We call on researchers to do so and supply LASAGNA to simplify these experiments.
Figures & tables
| Profile | NDCG@10 | Faithfulness | Lat. mean (s) | HV ( s ref) |
| standard | 0.860 0.003 | 0.739 0.016 | 5.30 0.05 | 0.523 |
| balanced | 0.840 0.003 | 0.911 0.014 | 12.25 3.55 | 0.453 |
| max-reliable | 0.804 0.004 | 0.916 0.022 | 14.16 6.44 | 0.389 |
| speed | 0.541 0.000 | 0.524 0.031 | 0.70 0.02 | 0.277 |
Appendix figures & tables66 assets
Supplementary material from the paper’s appendix.
Appendix
| Experiment | Configs | Queries | Seeds | Source |
| H1 retrieval ANOVA | 167 | 93 | 1–3 | Table 32 |
| H1 generation ANOVA | 122 | 56 | 1–3 | Section D.2 |
| H2 Pareto (SQuAD/MuSiQue/HotpotQA) | 4 | 43 gen / 56 retrieval | 3 | Table 2 |
| E1 focused | 20 | 43 | 3 | Section D.9 |
| H3 scaling sweep | 4 | 93 | 1–3 | Table 23 |
| Non-factorial ablations | 138 | 93 | 1–3 | Appendix F |
| Date of pre-registration: | Design matrix, hypotheses, statistical tests, and success criteria were fixed prior to the confirmatory experiments; the design matrix is content-addressed by the SHA-256 below. No third-party (OSF/AsPredicted) timestamp was filed for this study; all analyses are reported alongside their pre-specified test statistics, and H1/H2/H3 are labeled explicitly throughout as “planned confirmatory analyses” rather than as timestamp-verified pre-registrations. |
| Design matrix SHA-256: | 31a0dc197b46...df1728d6 |
| Software: | Python 3.11, NumPy 2.3.5, SciPy 1.16.3, seed 42 |
| Research question | What confirming rejects | Pre-registered test | |
| H1 | Do components combine additively? | Single-component ablation as evidence | , Type-III ANOVA F-test |
| H2 | Does a balanced configuration sweep a wider tradeoff envelope? | “You must pick one axis to optimize” | Hypervolume, Wilcoxon signed-rank |
| H3 | Do RAG profile rankings flip with corpus scale? | Small-corpus ablations predict production deployment | Per-profile power-law slopes, bootstrap CIs, Kendall’s |
| Role | Primary | Alternatives | Selection rationale |
| Generator | GPT-5.1 (OpenAI) | Claude Sonnet 4.5 (Anthropic), Gemini 2.0 (Google) | Held constant; cost vs. capability |
| Judge | GPT-5.1 (OpenAI) | Claude Sonnet 4.5 (Anthropic), Llama-3-70B (Meta) | Determinism at ; cost for 1.7M calls |
| Embedding | MiniLM-L6 (384d), BGE-M3 (1024d), E5-large (1024d), BGE-large (1024d) | Span lightweight to SOTA multilingual | |
| Reranker | ms-marco-MiniLM-L6-v2 | BGE-reranker-v2 | Standard BEIR cross-encoder baseline |
| Dim | Stage | Levels | |
| D1 | Embedding | 4 | MiniLM-L6 ∗ , BGE-M3, E5-large, BGE-large |
| D2 | Chunking | 4 | fixed ∗ , semantic, sentence-window, hierarchical |
| D3 | Enrichment | 4 | none ∗ , contextual-retrieval, RAPTOR, GraphRAG |
| D4 | Retrieval | 3 | dense ∗ , hybrid-BM25, hybrid-SPLADE |
| D5 | Query aug. | 5 | none ∗ , HyDE, RAG-Fusion, decomposition, step-back |
| D6 | Reranking | 4 | none ∗ , single-CE, ensemble, MMR |
| ID | Dataset | Corpus | Eval queries | Relevance |
| DS1 | MS MARCO v1 | 8.8M passages | 500 sampled | BM25 sparse (TREC) |
| DS2 | HotpotQA | 5.2M paragraphs | 500 sampled | Supporting facts |
| DS3 | BEIR/FiQA | 57K posts | 500 sampled | Crowdsourced |
| DS4 | BEIR/SciFact | 5K abstracts | 300 (all) | Expert binary |
| DS5 | CUAD (legal) | 510 contracts | 500 sampled | Clause-level |
| Experiment | Configs | Queries/config | Est. cost (USD) |
| Factorial sweep | 242 | 2,300 | $2,478 |
| Scaling experiment | 15 | 500 | $30 |
| Pareto experiment | 20 | 500 | $45 |
| Total | \mathbf{\sim\2{,}553}$ |
| Dim | Stage | # Levels | Levels | Role |
| D1 | Embedding | 4 | MiniLM-L6 ∗ , BGE-M3, E5-large, BGE-large | Repr. capacity |
| D2 | Chunking | 4 | fixed ∗ , semantic, sent-window, hierarchical | Segmentation |
| D3 | Enrichment | 4 | none ∗ , contextual-retr., RAPTOR, GraphRAG | Index-time augm. |
| D4 | Retrieval | 3 | dense ∗ , hybrid-BM25, hybrid-SPLADE | Sparse–dense mix |
| D5 | Query aug. | 5 | none ∗ , HyDE, RAG-Fusion, decomp., step-back | Pre-retrieval |
| D6 | Reranking | 4 | none ∗ , single-CE, ensemble, MMR | Post-retrieval |
| Configuration | NDCG@10 | Latency (ms) |
| no_graph_baseline | 0.4780 | 486 |
| graph_1hop | 0.4774 | 1,021 |
| graph_2hop | 0.4664 | 1,138 |
| graph_3hop | 0.4661 | 1,210 |
| Pre-registered | Executed | Status | Implication |
|---|---|---|---|
| 242-config D-optimal fractional factorial | 167 configs executed (69% of design); additionally 138 non-factorial ablation configurations across 24 experiments ( Appendix F ) | Partially executed (factorial); fully executed (ablations) | Full ANOVA estimable for main effects and 28 two-way interactions; 3 of 4 enrichment levels covered. Ablations cover 20 rerankers, 15 embeddings, and all factorial axes at finer granularity. |
| 8-dimension full ANOVA ( for all 28 two-way interactions) | Full retrieval ANOVA (167 configs) + faithfulness ANOVA (122 configs) | Executed | H1 testable on both metrics; joint 28-two-way ANOVA does not reach at per-sample granularity ( Section 5 , Section D.3 ) |
| 5 corpus sizes (10K, 25K, 50K, 100K, 1M) | 7 corpus levels (5K, 10K, 15K, 25K, 50K, 100K, 200K) | Executed | H3 fully testable across 5K–200K; per-profile power-law fits and rank crossover observed ( Section 5 ) |
| H1: from 2-way interactions (faithfulness); pre-registered as joint 28-pair -test and per-pair Bonferroni ( ), with the bar justified per-term (Cohen large-effect) | Both pre-registered procedures executed: joint 28-two-way ANOVA (two-track, per-sample + aggregated, nested-SSR joint SS) and per-pair Bonferroni across all 28 pairs ( Section D.3 ) | Not confirmed at pre-registered joint threshold; pre-registered per-pair Bonferroni identifies D5 D8 as large-effect follow-up. On the pre-registration’s own variance-floor decision rule ( reject H1 / additivity holds), the executed E1 and per-sample joint sit on the additivity-holds side; a parallel significance test rejects strict-zero interactions ( aggregated). We report both readings (see Appendix A ) | Joint per-config ( ) unidentifiable (232 params); per-sample retracted as pseudo-replication; aggregated sensitivity only (BIC favors mains-only). Pre-registered per-pair follow-up: D5 D8 , , ( Section D.3 ). |
| H2: balanced has higher faithfulness–latency–cost hypervolume than max-reliable on at least three of five benchmarks | Four-profile retrieval–faithfulness–response-time comparison on one mixed-benchmark slice, with three seeded runs and reference-time sensitivity | Not confirmed as pre-registered ; informative executed comparison | The five-benchmark test was not executed. On the available SQuAD v2 / MuSiQue / HotpotQA mixture, no profile leads every metric. At the fixed s reference, standard has the highest joint HV ( ); within the agentic pair, balanced has higher NDCG@10 and lower mean response time than max-reliable , with a faithfulness difference ( Tables 2 and 39 ). |
| H3: profile rankings flip with corpus scale | Per-profile power-law fits across 5K–200K (3 seeded runs at 25K–200K) | Supported | Cross-profile slope range per decade ( threshold cleared); rank crossover visible from 25K, statistically significant at 200K (Welch’s , ); intermediate 50K/100K |
| Phase | Wall-clock | API cost | GPU hours | Notes |
| Initial ablations & profiles | 72h | $1,580 | 140h | 6 profiles 3 runs |
| Scaling experiments (5K–50K) | 36h | $340 | 24h | 4 profiles 5 sizes |
| Retrieval factorial (167 cfg) | 52h | $1,150 | 48h | 48 combos, MPS sequential |
| Generation factorial (122 cfg) | 120h | $1,950 | 35h | 21 combos, GPT-5.1 judge |
| Infrastructure overhead | 30h | $180 | — | Retries, failed runs, re-ingestion |
| Total | 310h | $5,200 | 247h | 13 days wall-clock |
| Benchmark | Domain | Eval Queries | Test Queries | Source |
| SQuAD v2 | Reading comprehension | 23 | 10 | Rajpurkar et al. (2018) |
| MuSiQue | Multi-hop reasoning | 20 | 9 | Trivedi et al. (2022) |
| HotpotQA | Multi-hop QA | 13 | 11 | Yang et al. (2018) |
| Total | — | 56 | 30 | — |
| Dataset | Domain | Eval Queries | Corpus Docs | Relevance |
| Retrieval Track (5 BEIR benchmarks): | ||||
| NFCorpus | Biomedical | 20 | 2,730 | Expert graded |
| FiQA | Financial QA | 20 | 719 | Crowdsourced |
| SciFact | Scientific claims | 20 | 583 | Expert binary |
| ArguAna | Argument retrieval | 11 | 580 | Counterargument |
| HotpotQA | Multi-hop reasoning | 22 | 520 | Supporting facts |
| Dataset | Description | Samples | Hops | Answer | Used |
| SQuAD v2 | Reading comprehension over Wikipedia paragraphs. Includes unanswerable questions (adversarial examples with plausible but incorrect passages), testing the system’s ability to abstain when evidence is insufficient. | 130K | 1 | Extractive span | ✓ |
| MuSiQue | Multi-hop QA requiring 2–4 compositional reasoning steps across multiple Wikipedia articles. Designed to be unsolvable by single-hop shortcuts, with carefully controlled decomposition annotations. | 25K | 2–4 | Extractive span | ✓ |
| HotpotQA (QA) | Multi-hop QA with supporting-fact annotations. Requires combining evidence from two Wikipedia paragraphs. Bridge and comparison question types test different reasoning patterns. | 113K | 2 | Extractive span | ✓ |
| TriviaQA | Trivia questions with answers sourced from Wikipedia and the web. Tests general knowledge retrieval across diverse topics. Used for the factorial probe experiments ( Section 5 ). | 95K | 1 | Short answer | Probes |
| Natural Questions | Real Google search queries with long and short answers from Wikipedia. Tests retrieval quality on naturalistic information needs. | 307K | 1 | Short answer | — |
| BamBoogle | 125 multi-hop questions specifically designed to be unanswerable by direct Google search, requiring compositional reasoning. Small but challenging; tests multi-hop capability under adversarial conditions. | 125 | 2–3 | Short answer | — |
| NFCorpus | FiQA | SciFact | ArguAna | HotpotQA | Total | |
| Increment 1 | 162 | 3,690 | 886 | 1,455 | 3,807 | 10,000 |
| Increment 2 | 167 | 3,701 | 854 | 1,549 | 3,729 | 10,000 |
| Increment 3 | 186 | 3,684 | 874 | 1,548 | 3,708 | 10,000 |
| Increment 4 | 262 | 5,670 | 1,284 | 2,335 | 5,449 | 15,000 |
| Total | 777 | 16,745 | 3,898 | 6,887 | 16,693 | 45,000 |
| Label | Count | % |
| RELEVANT (suspected qrels false negative) | 0 | 0.0 |
| PARTIALLY RELEVANT (adjacent topic) | 9 | 9.0 |
| NOT RELEVANT (correctly a distractor) | 91 | 91.0 |
| Profile | Slope/dec | 95% CI (slope) | Proj. 500K | Proj. 1M | ||
| speed | 0.115 | 0.900 | 0.004 | 0.208 0.096 | 0.174 0.107 | |
| standard | 0.055 | 0.895 | 0.004 | 0.412 0.047 | 0.395 0.053 | |
| balanced | 0.015 | 0.403 | 0.175 | 0.476 0.044 | 0.472 0.049 | |
| max-reliable | 0.019 | 0.296 | 0.265 | 0.431 0.075 | 0.425 0.084 |
| Domain | Query |
| NFCorpus (biomedical) | “pumpkin” |
| “Does taking aspirin reduce the risk of colorectal cancer?” | |
| FiQA (financial) | “Does it make any sense to directly contribute to reducing the US national debt?” |
| “Opening a Roth IRA account, what is the fee structure for Vanguard vs. Scottrade?” | |
| SciFact (scientific) | “FoxO3a activation in neuronal death is mediated by reactive oxygen species” |
| “Basophils counteract disease development in patients with systemic lupus” |
| Source | Query |
| SQuAD v2 (23 queries) | “How much support is there for the UN approach to economic development?” |
| “What did Bedau live in to prevent it from being cut down?” | |
| HotpotQA (13 queries) | “The town of Sinclair, WV, is named after the founder of the local oil company, which later merged with…” |
| “Cooperative Living Organization is located in a city that is the county seat of…” | |
| MuSiQue (20 queries) | “In what part of Florida is Tom Denney’s birthplace located?” |
| “Where does Ulysses Kay’s birth city hold NASCAR races?” |
| Table / figure | Regime | Sample basis | Query set |
| Table 2 | profile-native (concise-regen for direct-route; verbose-agentic for agentic-route; sensitivity in Section C.2 ) | 3 seeds 43 gen / 56 retrieval | SQuAD v2 / MuSiQue / HotpotQA |
| Table 22 | profile-native answer generation | 3 seeds (25K–200K) | TriviaQA test |
| Fig. 3 | concise-regen | 122 configs 56 | TriviaQA eval |
| Table 65 | verbose-agentic | retrospective logs | 6-profile deployment |
| Table 46 | verbose-agentic | retrospective logs | 5 BEIR subsets |
| Profile | Regen mean | Agentic mean | |
| sota_standard | 0.613 | 0.774 | |
| sota_balanced | 0.660 | 0.835 | |
| sota_max_reliable | 0.653 | 0.826 |
| Regime | Mean length (tok) | Raw faithfulness | Within-regime | Residualized faithfulness |
| Concise (A) | 40 | 0.823 | 0.714 | |
| Neutral (B) | 62 | 0.862 | 0.791 | |
| Verbose (C) | 249 | 0.644 | 0.824 |
| Metric | Human 1 vs Human 2 | Human 1 vs RAGAS | Human 2 vs RAGAS |
| Pearson | 0.956 | 0.830 | 0.771 |
| Kendall | 0.674 | 0.464 | 0.400 |
| Cohen’s (at 0.5) | 0.929 | 0.922 | — |
| Agree | 80% | 54% | — |
| Agree | 96% | 86% | — |
| MAE | 0.068 | 0.108 | — |
| Quantity | Value |
| Items annotators (total judgments) | |
| Tie judgments (out of 246 total) | ( ) |
| Non-tie judgments (out of 246 total) | ( ) |
| Configurations covered by the sample | |
| Configurations with bootstrap 95% CI | |
| Inter-annotator Cohen’s (pairwise) |
| Rank | D5 D8 configuration | 95% bootstrap CI | |
| hyde self_rag_quality_gates | |||
| none speculative_rag | |||
| query_decomp self_rag_quality_gates | |||
| hyde speculative_rag | |||
| query_decomp speculative_rag | |||
| query_expansion crag |
| # | Feature | NDCG@10 | Latency (ms) | Faith. |
| 1 | HyDE (hypothetical document embedding) | |||
| 2 | Disable MMR | |||
| 3 | Cross-encoder reranker (ms-marco-MiniLM-L6) | |||
| 4 | Hybrid search ( ) | |||
| 5 | Context reordering (lost-in-middle) | |||
| 6 | Query expansion ( ) |
| Interaction pair | Raw | Holm | ||
| QueryAug AgenticGate | 0.259 ‡ | 3.18 | 0.0006 | 0.018 ∗ |
| QueryAug Reranking | 0.125 | 1.29 | 0.233 | 1.000 |
| Enrichment Reranking | 0.105 | 2.25 | 0.044 | 1.000 † |
| Chunking AgenticGate | 0.082 | 1.12 | 0.356 | 1.000 |
| Reranking AgenticGate | 0.073 | 0.98 | 0.464 | 1.000 |
| Retrieval AgenticGate | 0.066 | 1.35 | 0.239 | 1.000 |
| Profile | Fit | AIC | |||
| sota_standard | log-linear | ||||
| power-law | |||||
| sota_balanced | log-linear | ||||
| power-law |
| Corpus | Size | Balanced | max-reliable | (B MR) | Wilcoxon | |
| faithfulness (RAGAS, GPT-5.1 judge) | ||||||
| HotpotQA | 100K | 36 | ||||
| MuSiQue | 100K | 56 | ||||
| SQuAD v2 | 100K | 27 | ||||
| HotpotQA | 200K | 36 | ||||
| MuSiQue | 200K | 54 | ||||
| Corpus | Size | Balanced (s) | max-reliable (s) | Speedup ( ) | Balanced faster | |
| HotpotQA | 100K | 39 | ||||
| MuSiQue | 100K | 60 | ||||
| SQuAD v2 | 100K | 69 | ||||
| HotpotQA | 200K | 39 | ||||
| MuSiQue | 200K | 60 | ||||
| SQuAD v2 | 200K | 69 |
| Reference latency | speed | standard | balanced | max-reliable |
| s (real-time chat) | 0.264 | 0.299 | ||
| s (main reference) | 0.277 | 0.523 | 0.453 | 0.389 |
| s (near-crossover) | 0.279 | 0.561 | 0.557 | 0.483 |
| s (longer reference) | 0.280 | 0.579 | 0.609 | 0.562 |
| s (long reference) | 0.282 | 0.607 | 0.687 | 0.650 |
| Query Augmentation (D5) | Agentic Gate (D8) | Mean faithfulness |
| none | Self-RAG (quality gates) | (grid max) |
| RAG-Fusion | CRAG | (grid min) |
| Grid range | ||
| D5 level | D8 level | Coefficient | -value |
| RAG-Fusion | none | ||
| none | none | ||
| none | Self-RAG (quality gates) |
| D5 (Query Augmentation) | D8 (Agentic Gate) | Residual | Direction |
| Query Decomposition | none | antagonism | |
| none | Speculative-RAG | antagonism | |
| Query Expansion | Speculative-RAG | antagonism | |
| Query Decomposition | Self-RAG (quality gates) | antagonism | |
| HyDE | CRAG | antagonism | |
| Query Decomposition | Speculative-RAG | synergy |
| Block | DiD | 95% CI | Raw | Holm | Effect |
| Reranking Hybrid Alpha | 0.021 | 0.128 | |||
| Reranking MMR | 0.176 | 0.880 | |||
| HyDE Reranking | 0.202 | 0.880 | |||
| HyDE Hybrid Alpha | 0.689 | 1.000 | |||
| HyDE MMR | 0.868 | 1.000 | |||
| MMR Hybrid Alpha | 0.999 | 1.000 |
| Feature removed | Standard | Speed | Balanced | Max reliable |
| HyDE | n/a | n/a | ||
| MMR (re-enable) | ||||
| Reranker | n/a | n/a | ||
| Hybrid search | ||||
| Context reordering | n/a | n/a | ||
| Query expansion | n/a | n/a | n/a |
| Profile | nfcorpus | fiqa | scifact | arguana | hotpotqa |
| Standard (baseline) | 0.298 | 0.385 | 0.461 | 0.432 | 0.394 |
| Speed | 0.312 | 0.397 | 0.478 | 0.441 | 0.418 |
| Balanced | 0.351 | 0.442 | 0.539 | 0.478 | 0.461 |
| Max reliable | 0.338 | 0.431 | 0.527 | 0.471 | 0.482 |
| SOTA balanced | 0.362 | 0.458 | 0.536 | 0.491 | 0.479 |
| SOTA max reliable | 0.349 | 0.447 | 0.531 | 0.483 | 0.475 |
| Profile | nfcorpus | fiqa | scifact | arguana | hotpotqa |
| Standard (baseline) | 0.941 | 0.958 | 0.982 | 0.971 | 0.955 |
| Speed | 0.962 | 0.975 | 0.991 | 0.983 | 0.968 |
| Balanced | 0.955 | 0.969 | 0.985 | 0.978 | 0.962 |
| Max reliable | 0.951 | 0.964 | 0.988 | 0.976 | 0.971 |
| SOTA balanced | 0.958 | 0.972 | 0.987 | 0.984 | 0.973 |
| SOTA max reliable | 0.965 | 0.978 | 0.989 | 0.981 | 0.976 |
| Quantity | Faithfulness | Relative to reference |
| Reference configuration | — | |
| Reference selected marginal effects | ||
| Best observed complete configuration |
| Corpus | Top profile | Second profile | Top mean | Second mean | ||
| 5K | standard | balanced | 0.510 | 0.504 | – | 1 |
| 15K | standard | balanced | 0.509 | 0.496 | – | 1 |
| 25K | balanced | standard | 0.508 | 0.496 | 0.178 | 2 |
| 50K | balanced | Max-Reliable | 0.488 | 0.474 | 0.228 | 2 |
| 50K † | balanced | standard | 0.505 | 0.481 | 0.039 | 3 |
| 100K | balanced | standard | 0.471 | 0.450 | 0.327 | 3 |
| Profile | 5K | 15K | 25K | 50K | 100K | 200K | 500K ∗ | 1M ∗ |
| speed | 0.415 | 0.382 | 0.396 | 0.333 | 0.272 | 0.245 | ||
| standard | 0.510 | 0.509 | 0.496 | 0.456 | 0.450 | 0.432 | ||
| balanced | 0.504 | 0.496 | 0.508 | 0.488 | 0.471 | 0.491 | ||
| max-reliable | 0.456 | 0.455 | 0.477 | 0.474 | 0.431 | 0.428 | ||
| (Bal Std) | 0.006 | 0.014 | 0.012 | 0.033 | 0.021 | 0.059 | 0.064 | 0.077 |
| Reranker configuration | Experiment | NDCG@10 | vs. no_rerank |
| ms_marco_minilm_l6 | Exp. 15 | 0.4964 | |
| colbert_v2 | ColBERT vs. Cross-Encoder | 0.4895 | |
| ensemble_2model | Ensemble | 0.4865 | |
| cross_encoder_ms_marco | ColBERT vs. Cross-Encoder | 0.4829 | |
| cross_encoder_baseline | ColBERT vs. Cross-Encoder | 0.4780 | |
| ensemble_3model | Ensemble | 0.4769 |
| Embedding configuration | Experiment | Dim | NDCG@10 |
| bge_large_late_chunk | Late Chunking | 1024 | 0.4932 |
| dim_768 (BGE-M3 Matryoshka) | Matryoshka | 768 | 0.4885 |
| dim_1024_full (BGE-M3) | Matryoshka | 1024 | 0.4780 |
| bge_m3_1024 | Embedding Model | 1024 | 0.4740 |
| dim_512 (BGE-M3 Matryoshka) | Matryoshka | 512 | 0.4729 |
| snowflake_arctic_l_v2 | SOTA 2025–2026 | 1024 | 0.4705 |
| Experiment | Configuration | NDCG@10 | Notes |
| Similarity Threshold ( ) | |||
| mmr_norm_minmax | 0.4203 | ||
| mmr_norm_sigmoid_minmax | 0.4179 | ||
| mmr_norm_none | 0.4160 | ||
| standard_baseline | 0.3954 | ||
| threshold_02 | 0.3954 | ||
| Experiment | Configuration | NDCG@10 | Faith | Faith | EM |
| Agentic RAG (iterations/depth) ( ) | |||||
| no_gates | 0.7074 | 0.905 | 0.607 | 0.093 | |
| coverage_keyword | 0.7074 | 0.895 | 0.616 | 0.116 | |
| both_gates | 0.7074 | 0.894 | 0.552 | 0.186 | |
| refine_auto | 0.7074 | 0.891 | 0.659 | 0.140 | |
| agentic_5iter | 0.7074 | 0.891 | 0.597 | 0.140 | |
| # | Configuration | NDCG@10 |
| 1 | docling_hier_1600_400 | 0.4749 |
| 2 | semantic_threshold_65 | 0.4699 |
| 3 | docling_hier_2000_500 | 0.4685 |
| 4 | docling_400 | 0.4651 |
| 5 | fixed_800 | 0.4637 |
| 6 | fixed_400 | 0.4606 |
| Configuration | NDCG@10 | Faith | EM |
| sota_balanced | 0.8122 | 0.855 | 0.140 |
| standard_baseline | 0.6906 | 0.814 | 0.047 |
| Profile | Generator A | Generator B | Change (paired test) |
| standard | 0.758 | 0.833 | ( ) |
| balanced | 0.765 | 0.792 | (not significant) |
| max-reliable | 0.687 | 0.771 | ( ) |
| speed | 0.565 | 0.749 | ( ) |
| Method | NDCG@10 | vs BM25 | Latency overhead |
| BM25 (baseline) | 0.3512 | — | ms |
| SPLADE v2 | 0.3389 | ms | |
| ColBERT v2 | 0.4616 | ms | |
| mxbai-rerank-large (cross-encoder) | 0.4481 | ms | |
| ms-marco-MiniLM-L6 (cross-encoder) | 0.4568 | ms |
| Configuration | NDCG@10 | Faithfulness | EM | Token F1 | p95 Lat. (ms) |
| BM25-only ( ) | 0.633 | 0.116 | 0.349 | — | |
| BGE-M3 recommended | 0.558 | 0.093 | 0.299 | — | |
| sota_balanced (ours) | — | 17,682 | |||
| sota_standard (ours) | — | 6,887 |
| System | Source | NFCorpus | FiQA | SciFact | ArguAna | HotpotQA |
| BM25 | ( Thakur et al., 2021 ) | 0.325 | 0.236 | 0.665 | 0.315 | 0.603 |
| ANCE | ( Thakur et al., 2021 ) | 0.237 | 0.295 | 0.507 | 0.415 | 0.456 |
| TAS-B | ( Thakur et al., 2021 ) | 0.319 | 0.300 | 0.643 | 0.427 | 0.584 |
| ColBERT v2 | ( Santhanam et al., 2022 ) | 0.338 | 0.356 | 0.693 | — | 0.677 |
| BGE-M3 | ( Chen et al., 2024a ) | 0.369 | 0.375 | 0.725 | 0.520 | 0.714 |
| System | EM | Loose-F1 | Refusal rate |
| FlashRAG SequentialPipeline (default prompt) | 0.059 | 0.059 | 64.7% |
| LASAGNA analog ( Section C.2 concise prompt) | 0.353 | 0.126 | 0.0% |
| Test | What it verifies | Result |
| Pydantic type enforcement | Stage boundaries reject invalid types | Pass |
| Session config isolation | Changing session A’s config leaves session B unchanged | Pass |
| Embedding dim detection | 384-dim vectors into 1024-dim collection raises error | Pass |
| Chunker statelessness | No cross-document state leakage between calls | Pass |
| Plugin auto-discovery | New backends register via decorator without code changes | Pass |
| Component | Core method | Signature |
| Embedder | encode() | (texts: List[str]) -> ndarray |
| Chunker | chunk() | (text: str) -> List[Chunk] |
| Reranker | rerank() | (query, docs, top_k) -> List[ScoredDoc] |
| Retriever | retrieve() | (query, collection, top_k) -> List[ScoredDoc] |
| DocProcessor | extract() | (file_path) -> ProcessedDocument |
| QueryEnhancer | enhance() | (query) -> List[str] |
| Profile | Mean | Median | Std. Dev. | Min |
| Standard (baseline) | 0.963 | 0.980 | 0.052 | 0.714 |
| Speed | 0.980 | 1.000 | 0.038 | 0.800 |
| Balanced | 0.971 | 0.990 | 0.044 | 0.750 |
| Max reliable | 0.968 | 0.985 | 0.048 | 0.667 |
| SOTA balanced | 0.975 | 0.993 | 0.041 | 0.778 |
| SOTA max reliable | 0.978 | 1.000 | 0.036 | 0.812 |
Retrieval-Augmented Generation
Retrieval-augmented generation connects language models to external knowledge so answers can use current, domain-specific evidence.
See all 792 papers