
SCAR: Semantic Continuity-Aware Retrieval for Efficient Context Expansion in RAG
SCAR is an adaptive retrieval policy for RAG that combats boundary fragmentation from fixed-length chunking by selectively expanding neighboring chunks, using a relative expansion threshold tied to each chunk's own query-relevance rather than a fixed window size. Tested on four corpora (RFC, GDPR, a 10-K filing, a merger agreement; 320 queries) it hits 92.8% recall on boundary-fragmented queries using 22.9% fewer chunks than static windowing, transfers across three embedding models (text-embedding-3-large, BGE-large-en-v1.5, zembed-1) without recalibration, and cuts context tokens by 27.1% while preserving RAGAS-measured generation faithfulness.
What it claims
SCAR is a training-free, single-shot retrieval-time policy that decides, per retrieved chunk, whether to pull in an adjacent chunk — as opposed to iterative LLM-loop methods (FLARE, Self-RAG) or trained utility retrievers (SCARLet). It composes on top of any indexing-time chunker. Code and eval datasets: https://github.com/scarmethod/SCAR.
How it works
For a retrieved chunk c and neighbor n, SCAR scores expansion as query-relevance minus a continuity penalty:
S(c,n) = cos(e_q, e_n) − λ·(1 − cos(e_c, e_n))- Expand
nonly ifS(c,n) > γ·cos(e_q, e_c)
The threshold is relative to the parent chunk's own query-relevance, not absolute — so a weakly-retrieved chunk sets a lower bar, and the rule is (near) scale-invariant across embedding models. Two hyperparameters, fixed at λ=0.1, γ=0.80 across all corpora and all three embedding models (verified via leave-one-corpus-out grid search; λ∈[0.05,0.15] is comparable). Documents chunked with a recursive splitter at 600 chars / 60-char overlap, with structural hierarchy prepended before embedding.
Evidence
Boundary-fragmented set (N=160), full method comparison (recall / chunks / efficiency):
| Method | Recall | Chunks | Eff. |
|---|---|---|---|
| Top-k baseline | 0.830 | 5.0 | 0.166 |
| SCAR (±1) | 0.928 | 7.84 | 0.118 |
| Window (±1) | 0.967 | 10.16 | 0.095 |
| SCAR (±2) | 0.949 | 9.2 | 0.103 |
| Window (±2) | 0.985 | 14.4 | 0.069 |
| Reranker→top-8 | 0.854 | 8.0 | 0.107 |
| Parent | 0.968 | 50.2 | 0.019 |
Notable: a cross-encoder reranker (bge-reranker-large) at the same 8-chunk budget reaches only 0.854 despite 97.2% Recall@20 — it demotes continuation chunks whose standalone relevance is low. Chunk reduction vs Window(±1) is a large effect (Cohen's d=−1.49, p<10⁻⁴); the recall cost is small (d=−0.33). On atomic queries SCAR is "zero-regret": 7.6 vs Window's 11.3 chunks with no needed expansion. Cross-model transfer without recalibration: BGE 12.7% reduction/0.913 recall, zembed-1 17.2%/0.956. Ablation: removing the continuity penalty (λ=0) adds up to 7.2% chunks with little recall change.
Limits
- Single author, benchmark not yet peer-reviewed (CIKM '26 listing, arXiv Aug 2026).
- Downstream generation quality tested on only one corpus (Microsoft 10-K, GPT-4o-mini, RAGAS): faithfulness tied at 4.99/5, 27.1% token cut. Other three corpora have no generation eval.
- SCAR trades ~3.9pt recall for its savings — if you need Window's 0.967, SCAR does not match it at any tested setting.
- Gold labels are LLM-generated; human IAA was substantial but modest (κ=0.71/0.79, 0.57 for a rapid pass). Authors re-ran under four alternative gold definitions to check, but the ground truth remains partly synthetic.
- Only 320 queries across 4 documents; each corpus is a single document, not a large collection.
Organisations named here
- GDPR
- RFC corpus
Technologies named here
- RAGAS
- text-embedding-3-large
- BGE-large-en-v1.5
- zembed-1
- RAG
Techniques named here
- SCAR
- Static windowing
- Parent retrieval
- Fixed-length chunking
Related in llm-apps