A large-scale biomedical question-answering dataset for training and evaluating search agents that reason over scientific literature.
PaperSearchQA contains 60,000 question-answer pairs generated from PubMed abstracts, designed for training retrieval-augmented language models on biomedical question answering tasks.
Golden Answers: Each question includes multiple acceptable answer variations (synonyms, abbreviations, alternate names) to facilitate exact match (EM) evaluation. This allows for robust automatic evaluation without requiring semantic similarity models.
Question Paraphrasing: 50% of questions are paraphrased versions to increase diversity and reduce reliance on surface-form matching during retrieval.
Source Attribution: Each Q&A pair is linked to its source PubMed abstract via PMID for verification and further exploration.
Category Labels: Questions span 10 biomedical categories including genetics, therapeutics, protein function, disease mechanisms, and more.
The dataset was generated using a scalable pipeline:
LLM Models Used: GPT-4.1 (via OpenRouter) for all generation steps
| Field | Type | Description |
|---|---|---|
question | string | The question text (possibly paraphrased) |
answer | string | The primary answer |
golden_answers | List[string] | All acceptable answer variations for EM evaluation |
question_original | string | Original question before paraphrasing |
is_paraphrased | bool | Whether the question was paraphrased |
cat_num | string | Category number (1-10) |
cat | string | Category description |
pmid | string | PubMed ID of source abstract |
paper_title | string | Title of source paper |
from datasets import load_dataset
# Load full dataset
dataset = load_dataset("PaperSearchQA/PaperSearchQA")
# Access splits
train_data = dataset["train"]
test_data = dataset["test"]
# Example
example = train_data[0]
print(f"Question: {example['question']}")
print(f"Answer: {example['answer']}")
print(f"Golden Answers: {example['golden_answers']}")
The golden_answers field enables exact match evaluation with multiple acceptable answers:
def compute_exact_match(prediction: str, golden_answers: List[str]) -> float:
"""Returns 1.0 if prediction matches any golden answer (case-insensitive)"""
prediction_normalized = prediction.strip().lower()
for golden in golden_answers:
if prediction_normalized == golden.strip().lower():
return 1.0
return 0.0
# Example
prediction = "dystrophin"
golden_answers = ["dystrophin", "DMD protein", "dystrophin protein"]
score = compute_exact_match(prediction, golden_answers) # Returns 1.0
{
"question": "What anatomical structure, when atretic congenitally, can lead to unilateral hydrocephalus?",
"answer": "Foramen of Monro",
"golden_answers": [
"Foramen of Monro",
"interventricular foramen",
"Monro's foramen",
"interventricular foramina",
"foramina of Monro"
],
"question_original": "What anatomical structure, when atretic congenitally, can lead to unilateral hydrocephalus?",
"is_paraphrased": false,
"cat_num": "9",
"cat": "Anatomy & cellular localisation",
"pmid": "2666938",
"paper_title": "Perinatal unilateral hydrocephalus. Atresia of the foramen of Monro."
}
The PubMed retrieval corpus is available separately:
jmhb/pubmed_bioasq_2022For additional evaluation, use the BioASQ factoid test set:
jmhb/BioASQIf you use PaperSearchQA in your research, please cite:
@misc{burgess2026papersearchqalearningsearchreason,
title={PaperSearchQA: Learning to Search and Reason over Scientific Papers with RLVR},
author={James Burgess and Jan N. Hansen and Duo Peng and Yuhui Zhang and Alejandro Lozano and Min Woo Sun and Emma Lundberg and Serena Yeung-Levy},
year={2026},
eprint={2601.18207},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2601.18207},
}
MIT License - see the GitHub repository for details.
The PubMed corpus is derived from allMeSH (BioASQ 2022). BioASQ evaluation data requires registration at http://bioasq.org/.
6 commits
A large-scale biomedical question-answering dataset for training and evaluating search agents that reason over scientific literature.
PaperSearchQA contains 60,000 question-answer pairs generated from PubMed abstracts, designed for training retrieval-augmented language models on biomedical question answering tasks.
Golden Answers: Each question includes multiple acceptable answer variations (synonyms, abbreviations, alternate names) to facilitate exact match (EM) evaluation. This allows for robust automatic evaluation without requiring semantic similarity models.
Question Paraphrasing: 50% of questions are paraphrased versions to increase diversity and reduce reliance on surface-form matching during retrieval.
Source Attribution: Each Q&A pair is linked to its source PubMed abstract via PMID for verification and further exploration.
Category Labels: Questions span 10 biomedical categories including genetics, therapeutics, protein function, disease mechanisms, and more.
The dataset was generated using a scalable pipeline:
LLM Models Used: GPT-4.1 (via OpenRouter) for all generation steps
| Field | Type | Description |
|---|---|---|
question | string | The question text (possibly paraphrased) |
answer | string | The primary answer |
golden_answers | List[string] | All acceptable answer variations for EM evaluation |
question_original | string | Original question before paraphrasing |
is_paraphrased | bool | Whether the question was paraphrased |
cat_num | string | Category number (1-10) |
cat | string | Category description |
pmid | string | PubMed ID of source abstract |
paper_title | string | Title of source paper |
from datasets import load_dataset
# Load full dataset
dataset = load_dataset("PaperSearchQA/PaperSearchQA")
# Access splits
train_data = dataset["train"]
test_data = dataset["test"]
# Example
example = train_data[0]
print(f"Question: {example['question']}")
print(f"Answer: {example['answer']}")
print(f"Golden Answers: {example['golden_answers']}")
The golden_answers field enables exact match evaluation with multiple acceptable answers:
def compute_exact_match(prediction: str, golden_answers: List[str]) -> float:
"""Returns 1.0 if prediction matches any golden answer (case-insensitive)"""
prediction_normalized = prediction.strip().lower()
for golden in golden_answers:
if prediction_normalized == golden.strip().lower():
return 1.0
return 0.0
# Example
prediction = "dystrophin"
golden_answers = ["dystrophin", "DMD protein", "dystrophin protein"]
score = compute_exact_match(prediction, golden_answers) # Returns 1.0
{
"question": "What anatomical structure, when atretic congenitally, can lead to unilateral hydrocephalus?",
"answer": "Foramen of Monro",
"golden_answers": [
"Foramen of Monro",
"interventricular foramen",
"Monro's foramen",
"interventricular foramina",
"foramina of Monro"
],
"question_original": "What anatomical structure, when atretic congenitally, can lead to unilateral hydrocephalus?",
"is_paraphrased": false,
"cat_num": "9",
"cat": "Anatomy & cellular localisation",
"pmid": "2666938",
"paper_title": "Perinatal unilateral hydrocephalus. Atresia of the foramen of Monro."
}
The PubMed retrieval corpus is available separately:
jmhb/pubmed_bioasq_2022For additional evaluation, use the BioASQ factoid test set:
jmhb/BioASQIf you use PaperSearchQA in your research, please cite:
@misc{burgess2026papersearchqalearningsearchreason,
title={PaperSearchQA: Learning to Search and Reason over Scientific Papers with RLVR},
author={James Burgess and Jan N. Hansen and Duo Peng and Yuhui Zhang and Alejandro Lozano and Min Woo Sun and Emma Lundberg and Serena Yeung-Levy},
year={2026},
eprint={2601.18207},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2601.18207},
}
MIT License - see the GitHub repository for details.
The PubMed corpus is derived from allMeSH (BioASQ 2022). BioASQ evaluation data requires registration at http://bioasq.org/.
6 commits