
### fastapi

| Chunker | Page R@1 | Page R@5 | Section R@1 | Section R@3 | Section R@5 | Section MRR@5 | Chunks | Median tok | p95 tok | Mean top-5 tok |
|---|---|---|---|---|---|---|---|---|---|---|
| A fixed 400/60 | 84.8 | 91.3 | 60.9 | 78.3 | 80.4 | 0.694 | 813 | 400 | 400 | 1896 |
| B recursive | 87.0 | 95.7 | 71.7 | 76.1 | 80.4 | 0.75 | 1167 | 258 | 388 | 1226 |
| C header only | 89.1 | 95.7 | 60.9 | 76.1 | 80.4 | 0.684 | 772 | 204 | 1033 | 1248 |
| D header + cap + path | 84.8 | 95.7 | 67.4 | 76.1 | 80.4 | 0.724 | 1263 | 238 | 404 | 1052 |
| E D without path | 89.1 | 95.7 | 69.6 | 78.3 | 80.4 | 0.741 | 1263 | 224 | 386 | 1036 |

### htmx

| Chunker | Page R@1 | Page R@5 | Section R@1 | Section R@3 | Section R@5 | Section MRR@5 | Chunks | Median tok | p95 tok | Mean top-5 tok |
|---|---|---|---|---|---|---|---|---|---|---|
| A fixed 400/60 | 63.8 | 93.6 | 53.2 | 78.7 | 87.2 | 0.671 | 174 | 400 | 400 | 1757 |
| B recursive | 70.2 | 93.6 | 55.3 | 74.5 | 87.2 | 0.672 | 222 | 266 | 388 | 1354 |
| C header only | 59.6 | 85.1 | 53.2 | 78.7 | 85.1 | 0.668 | 201 | 155 | 786 | 1662 |
| D header + cap + path | 57.4 | 85.1 | 44.7 | 70.2 | 74.5 | 0.57 | 253 | 216 | 390 | 1176 |
| E D without path | 63.8 | 91.5 | 48.9 | 70.2 | 85.1 | 0.624 | 253 | 207 | 384 | 1168 |

### pooled

| Chunker | Page R@1 | Page R@5 | Section R@1 | Section R@3 | Section R@5 | Section MRR@5 | Chunks | Median tok | p95 tok | Mean top-5 tok |
|---|---|---|---|---|---|---|---|---|---|---|
| A fixed 400/60 | 74.2 | 92.5 | 57.0 | 78.5 | 83.9 | 0.682 | 987 | 400 | 400 | 1826 |
| B recursive | 78.5 | 94.6 | 63.4 | 75.3 | 83.9 | 0.71 | 1389 | 260 | 388 | 1291 |
| C header only | 74.2 | 90.3 | 57.0 | 77.4 | 82.8 | 0.676 | 973 | 194 | 976 | 1458 |
| D header + cap + path | 71.0 | 90.3 | 55.9 | 73.1 | 77.4 | 0.646 | 1516 | 233 | 401 | 1115 |
| E D without path | 76.3 | 93.5 | 59.1 | 74.2 | 82.8 | 0.682 | 1516 | 222 | 386 | 1103 |

### Paired bootstrap on section recall (percentage points, 95% CI, pages resampled)

| Pair | Metric | fastapi | htmx | pooled |
|---|---|---|---|---|
| B_recursive - A_fixed | section_MRR@5 | +0.056 [-0.033, +0.152] | +0.001 [-0.069, +0.063] | +0.028 [-0.026, +0.084] |
| B_recursive - A_fixed | section_R@1 | +10.9 [-2.2, +23.4] | +2.1 [-7.7, +11.3] | +6.5 [-2.1, +14.4] |
| B_recursive - A_fixed | section_R@5 | +0.0 [-8.7, +8.2] | +0.0 [-9.8, +7.7] | +0.0 [-5.8, +5.7] |
| C_header_only - A_fixed | section_MRR@5 | -0.010 [-0.177, +0.144] | -0.002 [-0.041, +0.041] | -0.006 [-0.100, +0.081] |
| C_header_only - A_fixed | section_R@1 | +0.0 [-23.3, +21.7] | +0.0 [-8.9, +8.1] | +0.0 [-12.0, +12.1] |
| C_header_only - A_fixed | section_R@5 | +0.0 [-12.8, +12.5] | -2.1 [-9.8, +4.5] | -1.1 [-8.3, +6.2] |
| D_header_capped_prefix - A_fixed | section_MRR@5 | +0.030 [-0.123, +0.201] | -0.101 [-0.156, -0.043]* | -0.036 [-0.119, +0.046] |
| D_header_capped_prefix - A_fixed | section_R@1 | +6.5 [-16.7, +27.9] | -8.5 [-16.0, +0.0] | -1.1 [-12.4, +10.2] |
| D_header_capped_prefix - A_fixed | section_R@5 | +0.0 [-11.1, +14.3] | -12.8 [-25.5, -4.0]* | -6.5 [-14.1, +1.2] |
| D_header_capped_prefix - B_recursive | section_MRR@5 | -0.026 [-0.166, +0.093] | -0.102 [-0.157, -0.036]* | -0.065 [-0.136, +0.005] |
| D_header_capped_prefix - B_recursive | section_R@1 | -4.3 [-23.3, +12.7] | -10.6 [-20.0, +0.0] | -7.5 [-17.8, +3.5] |
| D_header_capped_prefix - B_recursive | section_R@5 | +0.0 [-6.4, +6.1] | -12.8 [-24.5, -4.1]* | -6.5 [-12.3, -1.1]* |
| D_header_capped_prefix - C_header_only | section_MRR@5 | +0.040 [-0.012, +0.107] | -0.099 [-0.173, -0.021]* | -0.030 [-0.075, +0.016] |
| D_header_capped_prefix - C_header_only | section_R@1 | +6.5 [+0.0, +14.6] | -8.5 [-18.0, +2.4] | -1.1 [-6.8, +5.7] |
| D_header_capped_prefix - C_header_only | section_R@5 | +0.0 [-5.9, +7.3] | -10.6 [-22.9, +0.0] | -5.4 [-11.8, +1.1] |
| D_header_capped_prefix - E_header_capped_noprefix | section_MRR@5 | -0.017 [-0.088, +0.057] | -0.054 [-0.098, -0.005]* | -0.036 [-0.078, +0.006] |
| D_header_capped_prefix - E_header_capped_noprefix | section_R@1 | -2.2 [-13.6, +7.1] | -4.3 [-11.5, +4.9] | -3.2 [-10.0, +3.7] |
| D_header_capped_prefix - E_header_capped_noprefix | section_R@5 | +0.0 [-6.0, +7.0] | -10.6 [-21.4, -2.1]* | -5.4 [-11.2, +0.0] |

`*` = interval excludes zero. MRR rows are in MRR units, not points.


### Embedding cost

| Chunker | Chunks | Embedded tokens | Cost (USD, 130 pages) | Per 1,000 pages |
|---|---|---|---|---|
| A fixed 400/60 | 987 | 371,858 | 0.0074 | 0.057 |
| B recursive | 1389 | 330,207 | 0.0066 | 0.051 |
| C header only | 973 | 314,872 | 0.0063 | 0.049 |
| D header + cap + path | 1516 | 348,906 | 0.0070 | 0.054 |
| E D without path | 1516 | 329,744 | 0.0066 | 0.051 |
