Evaluate mContriever on Cross-lingual MKQA
mainTo measure how well retrievers retrieve relevant English Wikipedia documents given a query in another language using the MKQA dataset, follow these steps:
- Download data: Get the
mkqa.jsonl.gzfile. - Preprocess data: Use
data_scripts/preprocess_xmkqa.pyto prepare the data. - Generate embeddings: Use
generate_passage_embeddings.pyto create embeddings for your passages. Alternatively, you can download pre-computed embeddings formcontrieverormcontriever-msmarcofrom Facebook's public servers. - Retrieve and compute accuracy: Use
passage_retrieval.pyto perform retrieval and calculate accuracy.
When generating embeddings or performing retrieval, use the --lowercase and --normalize_text flags.
# 1. Download data
wget https://raw.githubusercontent.com/apple/ml-mkqa/master/dataset/mkqa.jsonl.gz
# 2. Preprocess data
python data_scripts/preprocess_xmkqa.py mkqa.jsonl xmkqa
# 3. Generate embeddings
python generate_passage_embeddings.py \
--model_name_or_path facebook/mcontriever \
--output_dir mcontriever_embeddings \
--passages psgs_w100.tsv \
--shard_id 0 --num_shards 1 \
--lowercase --normalize_text
# (Optional) Download pre-computed embeddings instead
# wget https://dl.fbaipublicfiles.com/contriever/embeddings/mcontriever/wikipedia_embeddings.tar
# wget https://dl.fbaipublicfiles.com/contriever/embeddings/mcontriever-msmarco/wikipedia_embeddings.tar
# 4. Retrieve passages and compute retrieval accuracy
python passage_retrieval.py \
--model_name_or_path facebook/mcontriever \
--passages psgs_w100.tsv \
--passages_embeddings "mcontriever_embeddings/*" \
--data "xmkqa/*.jsonl" \
--output_dir mcontriever_xmkqa \
--lowercase --normalize_text