ACL 2026 Main Conference
Retrieval-augmented generation systems rely on retrieval quality to ground downstream generation. However, retrieval behavior varies substantially across queries depending on both retriever type and query format. Sparse and dense retrievers capture different signals, and original and expanded queries also play complementary roles.
Our analysis reveals four key insights. First, sparse-dense hybridization cannot be effectively handled with a single static balance, since the optimal ratio changes across datasets, retrievers, and queries. Second, original and expanded queries also play complementary roles, but their balance cannot be fixed globally because expansion may improve recall while also introducing noise. Third, the optimal hybrid weights vary substantially from one query to another, indicating strong potential for query-wise adaptation. Fourth, the retriever axis and the query-format axis are not independent; they interact with each other and produce a clear combinatorial effect.
These observations suggest that retrieval should not rely on static hybridization along only one axis. Instead, effective retrieval requires jointly considering both retriever type and query format, and adaptively balancing them for each query. QuDAR is motivated by this insight: retrieval should be performed in a query-wise manner by accounting for both axes simultaneously.
QuDAR is a lightweight retrieval framework that adaptively combines these two perspectives at the query level. Given four retrieval signals
- original query + sparse retriever
- original query + dense retriever
- expanded query + sparse retriever
- expanded query + dense retriever
QuDAR dynamically estimates how much each signal should contribute for each query.
QuDAR supports three variants.
QuDAR-simple combines the four retrieval signals with lightweight fixed rules.
- Reciprocal rank fusion
- Equal-weight score fusion
QuDAR-confidence estimates query-specific weights from retrieval confidence. It uses score margins from top-ranked documents and converts them into adaptive fusion weights.
QuDAR-llm uses an LLM to score the relevance of the top retrieved passages from the four retrieval signals, then converts the scores into query-specific fusion weights.
bm25as the default sparse retrieverspladeas the neural sparse retriever
contrieveras the default dense retrievere5-basebge-m3
expansionas the default expanded-query settingprf
Additional retrievers or expansion methods can be added by extending src/qudar/retrievers.py and updating the config file.
We evaluate QuDAR on four BEIR datasets.
- FiQA
- SciDocs
- Climate-FEVER
- HotpotQA
The full datasets are not included in this repository. Please download them from the official BEIR release and place them under the following local structure.
data/
├── fiqa/
├── scidocs/
├── climate-fever/
└── hotpotqa/
Small BEIR-style sample files are included under data/samples/ only for smoke testing and structure reference.
For more details, see data/README.md.
QuDAR/
├── configs/
├── data/
├── docs/
├── scripts/
└── src/qudar/
configs/: experiment configsdata/: sample data scaffolddocs/: paper / poster / slidesscripts/: helper scriptssrc/qudar/: main package
cd QuDAR
python -m venv .venv
source .venv/bin/activate
pip install -e .If you want to use QuDAR-llm, create a local .env file from .env.example and write your own API key.
cp .env.example .envThen set:
OPENAI_API_KEY=YOUR_API_KEYDense retrieval expects a FAISS index directory.
python -m qudar.build_index \
--dataset-path data/fiqa \
--model-name facebook/contriever \
--output-dir indexes/fiqa/contriever \
--dim 768Use the following settings.
facebook/contrieverwith--dim 768intfloat/e5-base-v2with--dim 768BAAI/bge-m3with--dim 1024
The repository provides config templates rather than machine-specific final configs.
An example is available at configs/fiqa_example.yaml.
Each user should update:
dataset.pathindexes.dense.pathqueries.expanded.pathoutput_dir
The config also supports:
default_mode: smoke | fullsmoke_max_queries
Build a sample dense index:
python -m qudar.build_index \
--dataset-path data/samples/fiqa \
--model-name facebook/contriever \
--output-dir indexes/samples/fiqa/contriever \
--dim 768Run smoke evaluation:
python -m qudar.cli --config configs/fiqa_sample_smoke.yaml --smokepython -m qudar.cli --config configs/fiqa_example.yaml --fullpython -m qudar.cli --config configs/fiqa_example.yaml --max-queries 20python -m qudar.cli --config configs/fiqa_example.yaml --disable-llm

