MedIR-RAG · Milestone 1: baseline BM25 no PubMedQA
Projeto da UC Recuperação de Informação em Bases de Texto (MEI, Universidade de Évora, 2026/2027). Autor: Paulo A. Julio (m70401).
Esta milestone constrói a baseline lexical do pipeline MedIR-RAG: indexação do PubMedQA,
pesquisa com BM25 e avaliação com pytrec_eval.
Formulação como tarefa de RI
- Corpus: cada resumo do
pqa_labeled(1000) é um documento, formado pela concatenação dosCONTEXTS. OLONG_ANSWERfica de fora porque é a conclusão do resumo. Opcionalmente juntam-se resumos dopqa_unlabeledcomo distratores (--distractors N). - Queries: as 1000 perguntas do
pqa_labeled. - Qrels: binários, 1 documento relevante por pergunta (o resumo de onde a pergunta saiu).
- Divisão: 20% das queries para validação (afinação de k1 e b), 80% para teste (seed 42).
Como reproduzir
Requer Java 21 (Pyserini/Lucene).
# Colab / Linux
apt-get install -y openjdk-21-jdk-headless
pip install -r requirements.txt
python milestone1_bm25.py # só pqa_labeled
python milestone1_bm25.py --distractors 20000 # com 20 000 distratores
Sem acesso ao Hugging Face Datasets, pode usar-se o ficheiro original do repositório do PubMedQA:
python milestone1_bm25.py --local-json ori_pqal.json.
Ficheiros gerados em outputs/
| Ficheiro | Conteúdo |
|---|---|
grid_val_*.csv |
grid search de k1 e b nas queries de validação |
results_test_*.csv |
métricas no teste (omissão, afinado, variantes de stemming) |
run_bm25_test_*.trec |
run TREC do BM25 afinado (top-100), reutilizado na Milestone 2 para a fusão RRF |
summary_*.json |
estatísticas do índice, melhores parâmetros, p-valor do Wilcoxon |
Métricas
NDCG@5, NDCG@10, MRR@10, MAP e Recall@100 (pytrec_eval). O MRR@10 é calculado sobre o
run cortado ao top-10.
Referências
- Jin, Q. et al. (2019). PubMedQA: A Dataset for Biomedical Research Question Answering. EMNLP-IJCNLP.
- Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press.
- Lin, J. et al. (2021). Pyserini: A Python Toolkit for Reproducible Information Retrieval Research. SIGIR.
- Van Gysel, C., & de Rijke, M. (2018). pytrec_eval: An Extremely Fast Python Interface to trec_eval. SIGIR.
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support