AdaCQR: Enhancing Query Reformulation for Conversational Search via Sparse and Dense Retrieval Alignment(COLING 2025)
See README.md in preprocess folder.
NOTE: The processed training and testing datasets, including QReCC and TopiOCQA, can be downloaded from Google Drive.
Before training and inference, please modify the provided scripts to make sure the variables(including index path and data path) are correctly set.
- Stage 1 Training:
bash scripts/train_stage1.sh
After obtaining Stage 1 models, modify the checkpoint path and output path in scripts/gen_candidates.sh
, then generating candidates for Stage 2:
bash scripts/gen_candidates.sh
Leveraging the generated candidates, we use a fusion metric to obtain the relative orders for Stage 2 training:
bash scripts/obtain_ranking_ance.sh
bash scripts/obtain_ranking_bm25.sh
bash scripts/ranking_fusion.sh
- Stage 2 Training:
bash scripts/train_rerank.sh
We manually stop Stage 2 training after one epoch and leverage the new checkpoints to generate new candidates for training, which is needed 2-3 times based on our experiments.
- For inference of AdaCQR, the script is being used to generate reformulation queries:
bash scripts/test_rerank.sh
-
For BM25 and ANCE retrieval, we provide
src/cs_shortcut/run_dense_search.sh
andsrc/test_BM25_direct.py
, feel free to use them. -
For Query Expansion, you can use tools like vLLM or Ollama to leverage LLM to generate pseudo expansion.
@misc{lai2024adacqrenhancingqueryreformulation,
title={AdaCQR: Enhancing Query Reformulation for Conversational Search via Sparse and Dense Retrieval Alignment},
author={Yilong Lai and Jialong Wu and Congzhi Zhang and Haowen Sun and Deyu Zhou},
year={2024},
eprint={2407.01965},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2407.01965},
}
We are very grateful to leverage prior works & source code to build this work, which includes ConvGQR, InfoCQR, cs-shortcut, LLM4CS, BRIO.
If you have any questions about AdaCQR, feel free to contact me by [email protected].