The short answer

Retrieval strategy matters more than any other single variable tested. The most effective approach — agent retrieval, where the LLM searches iteratively — achieves the best results in the entire dataset for undefined jargon (95%), coreference (87%), and scope hedging (73%).

Among fixed strategies, parent-document retrieval consistently recovers 11–20pp on undefined-terms failures. Contextual retrieval makes coreference worse across all providers. Strategy and embedder combinations don't always stack — they can conflict.

One failure mode resists everything: quantifier vagueness (documents that replace specific values with vague approximations) stays near 56–58% regardless of strategy, embedder, or retrieval architecture. The agent searches more but finds nothing — the specific value was never written down.

What each strategy does

Naive RAG

The baseline

Embed the raw question, retrieve the most similar chunks by cosine similarity. Simple, fast, widely used.

HyDE

Broader retrieval

Generate a hypothetical documentation excerpt that would answer the question, then embed that instead of the raw question. Answer-shaped text finds answer-shaped chunks better than question-shaped text.

Multi-query

Rephrase & union

Generate 3 rephrased versions of the question, retrieve for each, union the results. Hedges against any single phrasing failing to match the document's vocabulary.

Parent-document ★

Best for jargon

Retrieve using small paragraph chunks (precise matching), but pass the full parent heading section to the AI (more context). Small chunks for finding; large chunks for reading.

Contextual retrieval ⚠

Amplifies pronoun errors

Before embedding, prepend a one-sentence document-level summary to each chunk. Helps when chunks lack context — but makes pronoun ambiguity worse, because the summarization step has to resolve pronouns and can get them wrong.

Results (claude-haiku, api-sdk-complex)

Scores are average percentage of questions answered correctly. Bold = best for that row. Click any score to see the underlying AI responses.

Document version Naive RAG Contextual Parent-doc HyDE Multi-query
Clean doc 100% 98% 92% 100% 94%
Passive voice 93% 96% 92% 99% 88%
Pronoun ambiguity 69% 56% ↓ 69% 74% 74%
Undefined jargon 65% 76% 85% ★ 73% 66%
Vague quantities 56% 57% 57% 58% 55%
Hedged instructions 54% 56% 60% 60% 53%

Contextual retrieval — confirmed across 3 providers

The coreference finding wasn't a fluke. Every provider tested showed worse scores with contextual retrieval on the coreference-degraded document.

ModelNaive RAGContextualChange
claude-haiku 69% 56% −13pp
gpt-4o-mini 64% 57% −7pp
gemini-2.5-flash 68% 66% −2pp

Parent-document — confirmed across 3 providers

The undefined-terms improvement from parent-document retrieval held across all three providers.

ModelNaive RAGParent-docChange
claude-haiku 65% 85% +20pp
gpt-4o-mini 62% 73% +11pp
gemini-2.5-flash 61% 76% +15pp

Embedding model comparison — complex doc (naive RAG)

The embedding model is a separate variable from retrieval strategy. Five models were first compared using naive RAG on the complex document with claude-haiku. Two results stood out:

Version OpenAI small OpenAI large Google Voyage code-3 Voyage 3.5
Clean doc 100% 100% 100% 100% 100%
Passive voice 93% 99% 98% 92% 99%
Pronoun ambiguity 69% 76% ★ 74% 74% 75%
Undefined jargon 65% 71% 65% 75% ★ 75% ★
Vague quantities 56% 58% 58% 58% 58%
Hedged instructions 54% 55% 60% 60% 61%

OpenAI large leads on pronoun ambiguity (+7pp) — higher-dimensional representations handle "it could mean either credential" better. Both Voyage models lead on undefined jargon (+10pp over OpenAI small) — their technical training data handles abbreviations that look like code identifiers.

Those haiku findings were then cross-validated with gpt-4o-mini and gemini-2.5-flash on the two most informative embedders:

Voyage 3.5 jargon gains are model-dependent

ModelOpenAI smallVoyage 3.5Change
claude-haiku 65% 75% +10pp
gemini-2.5-flash 61% 68% +7pp
gpt-4o-mini 62% 66% +4pp

Voyage 3.5 improves jargon retrieval across all three models, but the magnitude varies significantly — from +10pp for haiku down to +4pp for gpt-4o-mini. The coreference benefit (+3–4pp) is more consistent. The large haiku gain shouldn't be assumed to generalize.

OpenAI large hurts jargon for gpt-4o-mini and gemini

ModelOpenAI smallOpenAI largeChange
claude-haiku 65% 71% +6pp
gemini-2.5-flash 61% 55% −6pp
gpt-4o-mini 62% 52% −10pp

OpenAI large's precision embeddings help haiku retrieve more relevant jargon chunks — but actively hurt gpt-4o-mini and gemini. This isn't just the parent-doc interaction found earlier; it's the embedder itself conflicting with how these models process retrieved content. OpenAI large's coreference benefit (+5–6pp) held consistently across all three models. It is a precision tool: good for disambiguation, risky for vocabulary coverage.

The vague writing floor holds across all embedders and all models (54–61% on the complex document). No embedder recovers information that isn't in the document.

Embedding model comparison — short doc (naive RAG · claude-haiku)

The same three embedders tested on the short document tell a different story about vague writing:

Version OpenAI small OpenAI large Voyage 3.5
Clean doc 100% 100% 100%
Passive voice 100% 100% 100%
Pronoun ambiguity 89% 89% 92%
Undefined jargon 85% 85% 89%
Vague quantities 80% 85% 85%
Hedged instructions 83% 84% 88%

On the complex document, all five embedders bottomed out at 54–61% on vague writing — a hard floor. On the short document, both Voyage 3.5 and OpenAI large gain +5pp on quantifier vagueness over OpenAI small. The floor is a complexity effect, not an inherent ceiling. A short, single-topic document gives the LLM enough nearby context to partially recover from missing specifics. The complex document — with facts distributed across sections — doesn't. OpenAI large's +7pp coreference benefit from the complex doc doesn't appear here; the short doc has only one credential type, so pronoun ambiguity is a smaller problem.

Strategy × embedder: they don't always stack — and sometimes conflict

Independently optimizing retrieval strategy and embedding model, then combining them, does not reliably produce the expected gains.

Parent-doc + Voyage 3.5: neutral on jargon, complementary elsewhere

Parent-document retrieval (+20pp on undefined terms) and Voyage 3.5 (+10pp on undefined terms) seem like they should be complementary. They aren't — at least not for jargon:

VersionParent-doc (OpenAI small)Parent-doc (Voyage 3.5)Change
Clean doc 92% 100% +8pp
Pronoun ambiguity 69% 74% +5pp
Undefined jargon 85% 86% +1pp
Hedged instructions 60% 60% 0pp

The +1pp on undefined terms is effectively nothing. Parent-doc fixes jargon by giving the LLM more context at generation time — once the full parent section is in the prompt, the model can infer abbreviation meanings from surrounding sentences. Voyage 3.5 fixes jargon by improving retrieval matching. When you already have the larger context window, better retrieval adds almost no marginal value for jargon.

Where they are complementary: clean doc hits 100% (+8pp) and pronoun ambiguity improves +5pp. Those failure modes benefit from both better retrieval and more context — they aren't addressing the same problem.

Parent-doc + OpenAI large: the benefit reverses ⚠

OpenAI large gains +7pp on coreference in naive RAG. Parent-doc is strategy-neutral on coreference. Combining them was expected to at least preserve OpenAI large's coreference benefit — instead it erases it:

VersionNaive (OpenAI large)Parent-doc (OpenAI small)Parent-doc (OpenAI large)
Clean doc 100% 92% 99%
Pronoun ambiguity 76% 69% 68% ↓
Undefined jargon 71% 85% 75% ↓
Vague quantities 58% 57% 57%
Hedged instructions 55% 60% 58%

Coreference: OpenAI large's +7pp advantage from naive RAG disappears with parent-doc (76% → 68%). In naive RAG, higher-dimensional embeddings retrieve a precise chunk that helps disambiguate pronouns. With parent-doc, retrieval expands to a full section — which introduces more ambiguous pronoun references rather than fewer.

Undefined jargon: Parent-doc + OpenAI large (75%) is −10pp worse than parent-doc + OpenAI small (85%). OpenAI large's precision retrieves the "closest match" parent section — which may not be the section containing the abbreviation definitions. OpenAI small's fuzzier matching casts a wider net that more often captures those definitions.

The takeaway: embedder precision and context expansion are in tension for some failure modes. The same property that makes OpenAI large better at naive RAG (precision) makes it worse than OpenAI small when paired with a strategy that depends on broader context retrieval. Optimizing strategy and embedder separately, then combining, does not produce the expected sum.

What the agent experiment reveals about retrieval failure

Most deployed RAG systems are not agentic. The majority do a single fixed retrieval pass and answer from whatever came back. The agent experiment is useful not primarily as a deployment target, but as a diagnostic: it separates which failures are structurally recoverable from which aren't. That distinction matters because it determines what users actually experience when retrieval goes wrong.

Note: the haiku results that follow are striking, but cross-validation with two other models shows the gains are haiku-specific — gemini-2.5-flash actually regresses on jargon with agent retrieval. See cross-validation below.

What users experience when fixed RAG fails

Writing problemWhat users experience in most systemsDoes agentic RAG help?
Undefined jargon Silent failure. The relevant section is never retrieved. The model answers from partial context — or falls back on training data. Yes — 3–4× search calls infer vocabulary iteratively (+30pp)
Pronoun ambiguity Confident wrong answer. The model commits to one reading of "it" and describes it in detail. Users act on an authoritative answer that is incorrect. Partially — agent searches for each credential separately (+18pp)
Vague quantities Confabulated value. The model is trained on vast data that includes timing values and limits. When retrieval finds no specific number, the model synthesizes a plausible one — stated confidently, not flagged as a guess. No — the value was never written down (+2pp, noise floor)
Scope hedging Hedged useless answer. Retrieval succeeds, but the model propagates the hedge — users get "it generally depends on your setup" instead of a clear instruction. Partially — agent finds corroborating context across the doc (+19pp)
Passive voice No meaningful degradation. N/A

Accuracy scores by mode (claude-haiku · api-sdk-complex)

The numbers behind the table above. Agent RAG used a search(query) tool callable up to four times per question — it issues a query, reads results, and can refine its phrasing before answering.

VersionNaive RAGAgent RAGChange
Clean doc 100% 93% −7pp
Passive voice 93% 93% 0
Pronoun ambiguity 69% 87% ★ +18pp
Undefined jargon 65% 95% ★ +30pp
Scope hedging 54% 73% +19pp
Vague quantities 56% 58% +2pp

The 95% on undefined jargon is the best result in this entire dataset for claude-haiku — better than parent-doc + Voyage 3.5 (86%), better than any fixed strategy or embedder combination. The agent discovers vocabulary iteratively: it searches for an unknown abbreviation, finds a chunk that uses it in context, then searches again for what to do with it. It never needs to match the jargon on the first try.

Agent retrieval gains are haiku-specific

Cross-validation with gpt-4o-mini and gemini-2.5-flash reveals that haiku's gains do not generalize. The jargon improvement — the headline result above — is driven almost entirely by one model:

ModelNaive RAGAgent RAGChange
claude-haiku 65% 95% +30pp
gpt-4o-mini 62% 68% +6pp
gemini-2.5-flash 61% 57% −4pp

Gemini regresses. This suggests the jargon recovery mechanism — iterative vocabulary inference across multiple search calls — is haiku-specific behavior, not a property of agentic retrieval in general. Haiku's smaller context window may force tighter, more targeted queries that happen to work well for abbreviation lookup. Gemini's larger context window may lead it to retrieve noisier chunks across its multiple passes, compounding vocabulary mismatches rather than resolving them.

The coreference (+18pp) and scope hedging (+19pp) haiku results also need cross-validation before generalizing. The finding that vague quantities are unrecoverable (+2pp) held consistently across all three models and does generalize.

Confabulation is the hidden risk

Vague quantities are the highest-priority documentation problem — not because of the accuracy score, but because the failure mode is invisible to users. A model that can't find a specific rotation interval doesn't say "I don't know." It says "rotate every 30 days" with the same confidence it would use if that number were actually in the doc. Users have no signal that they received a synthesized answer rather than a retrieved one.

Scope hedging fails differently. Users get "it generally depends on your setup" — an answer they know they can't act on. Frustrating, but visible. Confabulated values are actionable-seeming and wrong.

The two vague writing types are not the same problem

Partially recoverable

Scope hedging

54% → 73% (+19pp). "Requests should generally include X where applicable" — the information is hedged but present. The agent finds corroborating chunks: examples, related error codes, conditional requirements. Enough context exists across the document to clarify the hedge. Failure mode is visible to users; an agentic system can often work around it.

Confabulation risk

Vague quantities

56% → 58% (+2pp). "Rotate periodically." The specific value — "every 90 days" — was replaced and does not exist anywhere in the document. No number of searches can find information that was never written down. The model fills the gap from training data. Users receive a confident specific answer that was never sourced from the actual doc.

Agentic retrieval has real costs

Even when agent retrieval works, it is not free. Undefined jargon required 3–4 search calls per question — roughly 3–4× the latency and budget of a single-pass system. On a clean document, agent mode scores 7pp lower than naive RAG (93% vs 100%), because iterative searching introduces noise: the agent occasionally retrieves suboptimal chunks across its multiple passes.

The implication for production systems: agent retrieval solves vocabulary mismatch well, but the per-query cost scales directly with how often your documents use undefined jargon. That cost is avoidable — it is documentation debt made visible as infrastructure overhead.

Priority order for documentation writers

PriorityWriting problemWhy
1 — Fix first Vague quantities ("periodically", "roughly quarterly") Causes confident wrong answers in all systems. No retrieval fix exists. Users can't detect the failure.
2 Pronoun ambiguity ("it", "this") Causes confident wrong answers. Most systems don't recover; agentic systems partially do.
3 Undefined jargon / unexplained abbreviations Silent failure in most systems. Fixable in agentic systems at 3–4× search call cost.
4 Scope hedging ("where applicable", "generally") Produces hedged answers users know they can't act on. Partially fixable with agent retrieval.
5 — Low priority Passive voice No meaningful impact on AI accuracy.