Three patterns, three contexts where each wins
1. Stuff (default)
Put all retrieved chunks in one prompt and let the LLM answer. Simple, cheap, and the right answer when your top-k chunks fit comfortably under the context window. With 200K-token Claude context, this covers most apps.
2. Map-reduce
For each chunk, generate an intermediate answer (map). Then summarize the intermediate answers into a final response (reduce). Use when the corpus is too big to stuff or when answers must come from synthesizing many sources.
3. Refine
Generate an initial answer from the first chunk, then iteratively update it with each subsequent chunk. Useful for ordered material (transcripts, time-series) where new context should refine rather than override.
How to pick
Default to stuff. Switch to map-reduce when context overflows or when the eval shows the model under-uses chunks past position 5. Switch to refine for ordered content. Almost no app needs all three at once.