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 dos CONTEXTS. O LONG_ANSWER fica de fora porque é a conclusão do resumo. Opcionalmente juntam-se resumos do pqa_unlabeled como 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.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support