Evaluating the accuracy of KV cache reuse techniques
Organizations: Huawei Technologies Ltd. · Department of Computer Science, ETH Zurich
Abstract
Position-independent KV cache reuse aims to reduce latency in retrieval-augmented generation by reusing chunk-level KV caches across prompts. We show that current evaluations of KV cache reuse techniques rely on measurements that fail to faithfully capture the loss of accuracy attributable to reuse, often artificially inflating the reported effectiveness. We also show that existing datasets do not exhibit the reuse dynamics needed to thoroughly evaluate such techniques. To address these issues, we propose an evaluation methodology that measures this accuracy loss without ambiguity and we introduce Boxoffice, a tool that programmatically generates evaluation datasets that exercise challenging KV cache reuse patterns.
Figures & tables
| B0 ablation (200 points per dataset) | |||||||||||||||||||
| qwen | llama | mistral | qwen | llama | mistral | ||||||||||||||
| method / filter | |||||||||||||||||||
| musique | CB | 0.76 | 0.69 | 0.69 | 0.91 | 0.87 | 0.87 | 0.70 | 0.80 | 0.80 | 95 | 26 | 24.1 | 108 | 13 | 9.5 | 96 | 36 | 29.8 |
| CB+Q | 0.72 | 0.58 | 0.58 | 0.82 | 0.83 | 0.83 | 0.68 | 0.71 | 0.71 | 93 | 28 | 27.6 | 104 | 17 | 18.1 | 91 | 41 | 32.5 | |
| FR | 0.74 | 0.64 | 0.64 | 0.83 | 0.70 | 0.70 | 0.58 | 0.67 | 0.67 | 98 | 23 | 26.4 | 103 | 18 | 16.9 | 121 | 11 | 42.4 | |
| FR+Q | 0.73 | 0.65 | 0.65 | 0.75 | 0.70 | 0.70 | 0.63 | 0.79 | 0.79 | 95 | 26 | 26.6 | 97 | 24 | 25.4 | 123 | 9 | 36.8 | |
| qwen | llama | mistral | |||||||
| method | 2wiki | hotpot | musique | 2wiki | hotpot | musique | 2wiki | hotpot | musique |
| CacheBlend (no infusion) | 0.13 | 0.21 | 0.10 | 0.38 | 0.35 | 0.19 | 0.14 | 0.19 | 0.13 |
| Random | 0.39 | 0.52 | 0.35 | 0.48 | 0.55 | 0.43 | 0.32 | 0.48 | 0.27 |
| Similarity-no-ctx | 0.35 | 0.47 | 0.37 | 0.44 | 0.56 | 0.41 | 0.28 | 0.44 | 0.19 |
| Context-nogold | 0.44 | 0.56 | 0.48 | 0.53 | 0.66 | 0.53 | 0.41 | 0.62 | 0.32 |
| Golden-only | 0.63 | 0.67 | 0.52 | 0.57 | 0.66 | 0.56 | 0.52 | 0.59 | 0.34 |
| Dataset | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| MuSiQue | 0.54 | 0.69 | 0.77 | 0.73 | 0.70 | 0.73 | 0.74 | 0.70 | |||
| 2WikiMQA | 0.56 | 0.81 | 0.78 | 0.75 | 0.71 | 0.75 | 0.75 | 0.70 | |||
| HotpotQA | 0.84 | 0.88 | 0.81 | 0.78 | 0.70 | 0.78 | 0.78 | 0.70 |
| Llama | Qwen | Mistral | ||||||||||||||||||||||||||||
| Config | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q |
| aligned | .10 | .31 | .11 | .37 | .98 | .95 | .17 | .55 | .19 | .51 | .39 | .09 | .44 | .40 | .97 | .94 | .17 | .38 | .18 | .25 | .20 | .18 | .33 | .53 | .98 | .94 | .14 | .42 | .21 | .36 |
| all-W | .06 | .21 | .05 | .28 | .14 | .29 | .13 | .42 | .24 | .50 | .30 | .12 | .28 | .29 | .11 | .25 | .13 | .27 | .24 | .32 | .24 | .15 | .15 | .26 | .17 | .26 | .14 | .26 | .31 | .34 |
| all-N | .06 | .25 | .13 | .43 | .07 | .55 | .16 | .57 | .23 | .57 | .39 | .20 | .30 | .39 | .05 | .11 | .18 | .36 | .24 | .34 | .29 | .16 | .24 | .57 | .09 | .29 | .16 | .34 | .32 | .39 |
| flipped | .09 | .25 | .06 | .35 | .00 | .09 | .11 | .41 | .23 | .54 | .41 | .18 | .23 | .28 | .00 | .06 | .15 | .29 | .28 | .34 | .25 | .11 | .18 | .34 | .00 | .02 | .13 | .23 | .30 | .30 |
| average | .08 | .26 | .09 | .36 | .30 | .47 | .14 | .49 | .22 | .53 | .37 | .15 | .31 | .34 | .28 | .34 | .16 | .33 | .24 | .31 | .24 | .15 | .23 | .42 | .31 | .38 | .14 | .31 | .28 | .35 |
Appendix figures & tables14 assets
Supplementary material from the paper’s appendix.
Appendix
| Paper | HotpotQA | 2WikiMQA | MuSiQue |
| CacheBlend ( Yao et al., 2025 ) | ✓ | ✓ | ✓ |
| Cache-Craft ( Agarwal et al., 2025 ) | ✓ | ✓ | |
| CacheClip ( Yang et al., 2025b ) | ✓ | ✓ | ✓ |
| EPIC ( Hu et al., 2024 ) | ✓ | ✓ | ✓ |
| SamKV ( Cao et al., 2025 ) | ✓ | ✓ | ✓ |
| ContextPilot ( Jiang et al., 2025 ) |
| Configuration | Winner was | Nonwinners were | Description |
|---|---|---|---|
| aligned | Every chunk’s cached state matches its role in the eval query. The winner’s cache encodes “I am the maximum”; each nonwinner’s cache encodes “I am not”. Easy case. | ||
| all-W | The winner’s cache is aligned, but each nonwinner’s cache also encodes “I am the maximum”. The model must override the “winner” signal carried by nonwinner caches. Medium case. | ||
| all-N | Every nonwinner’s cache is aligned, but the winner’s encodes “I am not the maximum”. The model must identify the winner despite every cache claiming nonwinner status. Medium case. | ||
| flipped | The signals are fully inverted relative to the eval roles. The model must recover the correct ranking from a reversed set of cached signals. Hard case. |
| Config | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Qwen | aligned | ||||||||||
| all-W | |||||||||||
| all-N | |||||||||||
| flipped | |||||||||||
| average | |||||||||||
| Llama | aligned |
| Config | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Qwen | aligned | ||||||||||
| all-W | |||||||||||
| all-N | |||||||||||
| flipped | |||||||||||
| average | |||||||||||
| Llama | aligned |
| NC | LI (meaningful subset) | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| CB | CB+Q | FR | FR+Q | CB | CB+Q | FR | FR+Q | ||
| 0.00 | 0.81 | 0.74 | 0.76 | 0.78 | 0.80 | 0.72 | 0.73 | 0.77 | |
| 0.05 | 0.81 | 0.74 | 0.76 | 0.78 | 0.80 | 0.72 | 0.73 | 0.77 | |
| 0.10 | 0.82 | 0.74 | 0.77 | 0.78 | 0.80 | 0.73 | 0.73 | 0.77 | |
| 0.15 | 0.82 | 0.75 | 0.76 | 0.78 | 0.81 | 0.73 | 0.74 | 0.77 | |
| 0.20 (paper) | 0.82 | 0.75 | 0.77 | 0.78 | 0.81 | 0.73 | 0.74 | 0.77 | |
| LI at other | ||||||||
|---|---|---|---|---|---|---|---|---|
| dataset | model | all | NC | LI | ||||
| MuSiQue | Qwen | 200 | 79 | 47 | 47 | 44 | 52 | 69 |
| Llama | 200 | 79 | 57 | 57 | 52 | 60 | 70 | |
| Mistral | 200 | 68 | 55 | 55 | 55 | 55 | 64 | |
| 2WikiMQA | Qwen | 200 | 96 | 42 | 38 | 37 | 41 | 51 |
| Llama | 200 | 114 | 65 | 46 | 43 | 50 | 57 | |
| ablation | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| method | NC | LI | NC | LI | |||||
| CB | 0.86 | 0.82 | 0.82 | 0.82 | 0.82 | 82 | 18 | 13.8 | |
| CB+Q | 0.76 | 0.72 | 0.72 | 0.71 | 0.71 | 73 | 27 | 23.6 | |
| FR | 0.91 | 0.86 | 0.86 | 0.89 | 0.89 | 81 | 19 | 9.3 | |
| FR+Q | 0.88 | 0.81 | 0.81 | 0.85 | 0.85 | 76 | 24 | 11.7 | |
| Config | CB | CB+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q |
|---|---|---|---|---|---|---|---|---|
| aligned | .26 | .08 | 1.03 | 1.04 | .10 | .13 | .19 | .27 |
| all-W | .28 | .07 | .11 | .14 | .21 | .21 | .39 | .42 |
| all-N | .35 | .05 | .08 | .09 | .16 | .19 | .37 | .33 |
| flipped | .33 | .05 | .00 | .00 | .14 | .15 | .41 | .34 |
| average | .31 | .06 | .31 | .32 | .15 | .17 | .34 | .34 |
| Llama | Qwen | Mistral | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Config | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q |
| aligned | .69 | .40 | .08 | .31 | .51 | .68 | .35 | .65 | .33 | .72 | .27 | .09 | .11 | .34 | .56 | .65 | .21 | .36 | .30 | .35 | .23 | .07 | .10 | .14 | .66 | .72 | .29 | .42 | .35 | .43 |
| all-W | .72 | .49 | .10 | .31 | .15 | .60 | .19 | .65 | .31 | .61 | .25 | .12 | .15 | .37 | .11 | .15 | .18 | .29 | .32 | .28 | .26 | .09 | .14 | .19 | .20 | .31 | .22 | .28 | .36 | .42 |
| all-N | .68 | .38 | .08 | .23 | .13 | .66 | .28 | .66 | .35 | .70 | .34 | .17 | .12 | .42 | .11 | .39 | .26 | .34 | .31 | .39 | .24 | .08 | .12 | .18 | .18 | .27 | .26 | .36 | .40 | .45 |
| flipped | .64 | .44 | .07 | .24 | .05 | .52 | .19 | .65 | .30 | .59 | .25 | .16 | .13 | .30 | .00 | .09 | .18 | .31 | .32 | .32 | .26 | .08 | .09 | .17 | .04 | .08 | .26 | .33 | .36 | .37 |
| average | .68 | .43 | .08 | .27 | .21 | .61 | .25 | .65 | .33 | .66 | .28 | .13 | .13 | .36 | .20 | .32 | .21 | .33 | .31 | .33 | .24 | .08 | .11 | .17 | .27 | .35 | .26 | .35 | .37 | .42 |
| Llama | Qwen | Mistral | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Config | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q | CB | CB+Q | FR | FR+Q | LM | LM+Q | CC-M2 | CC-M2+Q | CC-M4 | CC-M4+Q |
| aligned | .62 | .59 | .09 | .21 | .24 | .52 | .15 | .40 | .23 | .46 | .50 | .29 | .14 | .29 | .42 | .56 | .27 | .47 | .29 | .46 | .39 | .08 | .19 | .25 | .28 | .56 | .24 | .56 | .23 | .49 |
| all-W | .60 | .56 | .12 | .20 | .15 | .39 | .18 | .45 | .23 | .53 | .52 | .26 | .15 | .23 | .14 | .21 | .28 | .49 | .31 | .43 | .42 | .08 | .14 | .26 | .09 | .31 | .31 | .54 | .36 | .55 |
| all-N | .67 | .68 | .14 | .23 | .10 | .38 | .14 | .49 | .14 | .51 | .48 | .25 | .06 | .27 | .10 | .44 | .22 | .42 | .29 | .44 | .43 | .08 | .16 | .31 | .13 | .46 | .22 | .48 | .35 | .48 |
| flipped | .63 | .59 | .22 | .23 | .06 | .34 | .19 | .52 | .21 | .54 | .47 | .31 | .11 | .21 | .01 | .08 | .13 | .32 | .22 | .50 | .46 | .08 | .16 | .31 | .03 | .32 | .19 | .52 | .39 | .56 |
| average | .63 | .61 | .14 | .22 | .14 | .40 | .17 | .46 | .21 | .51 | .49 | .28 | .11 | .25 | .17 | .32 | .22 | .43 | .28 | .46 | .42 | .08 | .17 | .28 | .13 | .41 | .24 | .52 | .33 | .52 |
KV-Cache Reuse
Key-value (KV) cache reuse lets language models reuse previously computed attention states to cut repeated prefill work and serving latency.
See all 72 papers