mm-bright/MM-BRIGHT

10

stars

6

commits

Python

primary language

Jan 14, 2026

updated

README

MM-BRIGHT: A Multi-Task Multimodal Benchmark for Reasoning-Intensive Retrieval

Hugging Face Datasets License

Overview of MM-BRIGHT Tasks

🚨 News

  • [2026-01] πŸš€ MM-BRIGHT Launch: We release the MM-BRIGHT benchmark, dataset, and evaluation code!
  • [2026-01] πŸ› οΈ Code: Full evaluation code for all 4 tasks is released.

πŸ“– Overview

Existing retrieval benchmarks primarily consist of text-based queries where keyword or semantic matching is usually sufficient. Many real-world queries contain multimodal elementsβ€”particularly images such as diagrams, charts, and screenshotsβ€”that require intensive reasoning to identify relevant documents.

MM-BRIGHT bridges this gap as the first multimodal benchmark for reasoning-intensive retrieval.

Key Features

FeatureMM-BRIGHT
Total Queries2,803
Domains29 diverse technical domains
Total Documents2.5M+
Retrieval Tasks4 (increasing multimodal complexity)
Image TypesPhotos, Diagrams, Charts, Screenshots, Scientific Figures
SourceReal-world Stack Exchange Q&A

Four Retrieval Tasks

MM-BRIGHT evaluates retrieval across four tasks of increasing multimodal complexity:

TaskQueryTargetDescription
Task 1TextTextText-to-text retrieval (baseline)
Task 2Text + ImageTextMultimodal query β†’ text documents
Task 3Text + ImageImageMultimodal query β†’ relevant images
Task 4Text + ImageText + ImageMultimodal query β†’ multimodal documents

πŸ† Leaderboard

Task 1: Text-to-Text Retrieval (nDCG@10)

ModelBM25ContrieverDiVeRE5GritLMOpenAIQwen2RaderReasonIRSFR
Avg.8.520.132.225.325.328.828.124.928.626.9

Task 2: Multimodal-to-Text Retrieval (nDCG@10)

ModelBGE-VLCLIPGME-2BGME-7BJina-CLIPNomicSigLIP
Avg.10.010.419.522.023.027.610.8

Finding: Even state-of-the-art models struggle on MM-BRIGHT. BM25 achieves only 8.5 nDCG@10, while the best multimodal model (Nomic-Vision: 27.6) actually underperforms the best text-only model (DiVeR: 32.2).


πŸ“Š Dataset Statistics

Domains by Category

STEM & Life Sciences (9 domains)
DomainQueriesDocumentsAvg. Images/Query
Academia2660,0501.77
Bioacoustics4129,8122.17
Bioinformatics9045,5451.62
Biology9989,4352.96
Chemistry6536,0432.54
Earth Science8573,4512.15
Math45151,8672.64
Medical Sciences55240,8441.85
Physics100338,2912.45
Software & Technical Systems (8 domains)
DomainQueriesDocumentsAvg. Images/Query
Apple1429,2852.14
Ask Ubuntu3590,1982.09
Bitcoin6429,5951.48
Crypto7424,0541.50
GIS4420,7052.98
Quantum Computing88127,0091.84
Robotics3011,1852.33
Salesforce108,8902.50
Social Sciences & Humanities (6 domains)
DomainQueriesDocumentsAvg. Images/Query
Christianity3037,8751.47
Economics3118,4311.84
Islam2714,0791.33
Law3026,1421.23
Philosophy50137,8601.58
Psychology87328,5201.67
Applied Domains (6 domains)
DomainQueriesDocumentsAvg. Images/Query
Aviation125203,9382.41
Gaming2668,3211.85
PM5093,3761.56
Quant3464,0441.38
Sustainability6232,3651.61
Travel6868,0631.84

βš™οΈ Setup & Installation

1. Clone and Install

git clone https://github.com/mm-bright/MM-BRIGHT.git
cd MM-BRIGHT
pip install -r requirements.txt

2. Dataset Access

The dataset is automatically loaded from Hugging Face:

from datasets import load_dataset

# Load documents
docs = load_dataset("mm-bright/MM-BRIGHT", "documents", split="academia")

# Load queries (Task 1/2)
queries = load_dataset("mm-bright/MM-BRIGHT", "examples", split="academia")

# Load multimodal queries (Task 3/4)
mm_queries = load_dataset("mm-bright/MM-BRIGHT", "examples_multimodal", split="academia")

πŸš€ Running Evaluations

Task 1: Text-to-Text Retrieval

python run_task1.py --dataset_dir . --model bm25 --domains academia biology chemistry

Task 2: Multimodal Query β†’ Text Documents

python run_task2.py --dataset_dir . --model nomic-vision --domains academia biology

Task 3: Multimodal Query β†’ Images

python run_task3.py --dataset_dir . --model clip --domains academia biology

Task 4: Multimodal Query β†’ Multimodal Documents

python run_task4.py --dataset_dir . --model clip --domains academia biology

Run All Experiments

Use the experiment runner to evaluate all models across all domains:

# Dry run - see all commands
python run_experiments.py --dry_run

# Execute all experiments
python run_experiments.py --dataset_dir .

# Run specific tasks only
python run_experiments.py --dataset_dir . --tasks 1 2

πŸ“ Project Structure

MM-BRIGHT/
β”œβ”€β”€ run_task1.py          # Task 1: Text β†’ Text
β”œβ”€β”€ run_task2.py          # Task 2: Text+Image β†’ Text
β”œβ”€β”€ run_task3.py          # Task 3: Text+Image β†’ Image
β”œβ”€β”€ run_task4.py          # Task 4: Text+Image β†’ Text+Image
β”œβ”€β”€ run_experiments.py    # Batch experiment runner
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ data.py           # HuggingFace data loading
β”‚   β”œβ”€β”€ caching.py        # Embedding cache management
β”‚   β”œβ”€β”€ eval_runner.py    # Unified evaluation framework
β”‚   β”œβ”€β”€ utils.py          # Shared utilities
β”‚   β”œβ”€β”€ models/           # Custom model definitions
β”‚   β”‚   β”œβ”€β”€ gritlm7b.py
β”‚   β”‚   └── nvmmembed.py
β”‚   └── retrievers/       # Task-specific retrievers
β”‚       β”œβ”€β”€ task1_text.py
β”‚       β”œβ”€β”€ task2_multimodal.py
β”‚       β”œβ”€β”€ task3_image.py
β”‚       └── task4_pair.py
└── outputs/              # Evaluation results

πŸ“Š Benchmark Comparison

Benchmark#Queries#DomainsModalityReasoningMulti-Task
BRIGHT1,38412Textβœ…βœ…
RAR-b45,74517Textβœ…βŒ
WebQA7,540OpenIT β†’ IT❌❌
UNIIR190K10MixedβŒβœ…
ViDoRe3,81010T β†’ IT❌❌
MMEB36K36MixedβŒβœ…
MM-BRIGHT (Ours)2,80329Mixedβœ…βœ…

πŸ“ Citation

If you use MM-BRIGHT in your work, please cite our paper:

soon

πŸ“„ License

This project is licensed under CC-BY-4.0.


πŸ™ Acknowledgments

MM-BRIGHT is built on top of the excellent BRIGHT benchmark and extends it to the multimodal domain. We thank the Stack Exchange community for providing the raw data that makes this benchmark possible.

Contributors

mm-bright

2 commits

mm-bright/MM-BRIGHT

10

stars

6

commits

Python

primary language

Jan 14, 2026

updated

README

MM-BRIGHT: A Multi-Task Multimodal Benchmark for Reasoning-Intensive Retrieval

Hugging Face Datasets License

Overview of MM-BRIGHT Tasks

🚨 News

  • [2026-01] πŸš€ MM-BRIGHT Launch: We release the MM-BRIGHT benchmark, dataset, and evaluation code!
  • [2026-01] πŸ› οΈ Code: Full evaluation code for all 4 tasks is released.

πŸ“– Overview

Existing retrieval benchmarks primarily consist of text-based queries where keyword or semantic matching is usually sufficient. Many real-world queries contain multimodal elementsβ€”particularly images such as diagrams, charts, and screenshotsβ€”that require intensive reasoning to identify relevant documents.

MM-BRIGHT bridges this gap as the first multimodal benchmark for reasoning-intensive retrieval.

Key Features

FeatureMM-BRIGHT
Total Queries2,803
Domains29 diverse technical domains
Total Documents2.5M+
Retrieval Tasks4 (increasing multimodal complexity)
Image TypesPhotos, Diagrams, Charts, Screenshots, Scientific Figures
SourceReal-world Stack Exchange Q&A

Four Retrieval Tasks

MM-BRIGHT evaluates retrieval across four tasks of increasing multimodal complexity:

TaskQueryTargetDescription
Task 1TextTextText-to-text retrieval (baseline)
Task 2Text + ImageTextMultimodal query β†’ text documents
Task 3Text + ImageImageMultimodal query β†’ relevant images
Task 4Text + ImageText + ImageMultimodal query β†’ multimodal documents

πŸ† Leaderboard

Task 1: Text-to-Text Retrieval (nDCG@10)

ModelBM25ContrieverDiVeRE5GritLMOpenAIQwen2RaderReasonIRSFR
Avg.8.520.132.225.325.328.828.124.928.626.9

Task 2: Multimodal-to-Text Retrieval (nDCG@10)

ModelBGE-VLCLIPGME-2BGME-7BJina-CLIPNomicSigLIP
Avg.10.010.419.522.023.027.610.8

Finding: Even state-of-the-art models struggle on MM-BRIGHT. BM25 achieves only 8.5 nDCG@10, while the best multimodal model (Nomic-Vision: 27.6) actually underperforms the best text-only model (DiVeR: 32.2).


πŸ“Š Dataset Statistics

Domains by Category

STEM & Life Sciences (9 domains)
DomainQueriesDocumentsAvg. Images/Query
Academia2660,0501.77
Bioacoustics4129,8122.17
Bioinformatics9045,5451.62
Biology9989,4352.96
Chemistry6536,0432.54
Earth Science8573,4512.15
Math45151,8672.64
Medical Sciences55240,8441.85
Physics100338,2912.45
Software & Technical Systems (8 domains)
DomainQueriesDocumentsAvg. Images/Query
Apple1429,2852.14
Ask Ubuntu3590,1982.09
Bitcoin6429,5951.48
Crypto7424,0541.50
GIS4420,7052.98
Quantum Computing88127,0091.84
Robotics3011,1852.33
Salesforce108,8902.50
Social Sciences & Humanities (6 domains)
DomainQueriesDocumentsAvg. Images/Query
Christianity3037,8751.47
Economics3118,4311.84
Islam2714,0791.33
Law3026,1421.23
Philosophy50137,8601.58
Psychology87328,5201.67
Applied Domains (6 domains)
DomainQueriesDocumentsAvg. Images/Query
Aviation125203,9382.41
Gaming2668,3211.85
PM5093,3761.56
Quant3464,0441.38
Sustainability6232,3651.61
Travel6868,0631.84

βš™οΈ Setup & Installation

1. Clone and Install

git clone https://github.com/mm-bright/MM-BRIGHT.git
cd MM-BRIGHT
pip install -r requirements.txt

2. Dataset Access

The dataset is automatically loaded from Hugging Face:

from datasets import load_dataset

# Load documents
docs = load_dataset("mm-bright/MM-BRIGHT", "documents", split="academia")

# Load queries (Task 1/2)
queries = load_dataset("mm-bright/MM-BRIGHT", "examples", split="academia")

# Load multimodal queries (Task 3/4)
mm_queries = load_dataset("mm-bright/MM-BRIGHT", "examples_multimodal", split="academia")

πŸš€ Running Evaluations

Task 1: Text-to-Text Retrieval

python run_task1.py --dataset_dir . --model bm25 --domains academia biology chemistry

Task 2: Multimodal Query β†’ Text Documents

python run_task2.py --dataset_dir . --model nomic-vision --domains academia biology

Task 3: Multimodal Query β†’ Images

python run_task3.py --dataset_dir . --model clip --domains academia biology

Task 4: Multimodal Query β†’ Multimodal Documents

python run_task4.py --dataset_dir . --model clip --domains academia biology

Run All Experiments

Use the experiment runner to evaluate all models across all domains:

# Dry run - see all commands
python run_experiments.py --dry_run

# Execute all experiments
python run_experiments.py --dataset_dir .

# Run specific tasks only
python run_experiments.py --dataset_dir . --tasks 1 2

πŸ“ Project Structure

MM-BRIGHT/
β”œβ”€β”€ run_task1.py          # Task 1: Text β†’ Text
β”œβ”€β”€ run_task2.py          # Task 2: Text+Image β†’ Text
β”œβ”€β”€ run_task3.py          # Task 3: Text+Image β†’ Image
β”œβ”€β”€ run_task4.py          # Task 4: Text+Image β†’ Text+Image
β”œβ”€β”€ run_experiments.py    # Batch experiment runner
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ data.py           # HuggingFace data loading
β”‚   β”œβ”€β”€ caching.py        # Embedding cache management
β”‚   β”œβ”€β”€ eval_runner.py    # Unified evaluation framework
β”‚   β”œβ”€β”€ utils.py          # Shared utilities
β”‚   β”œβ”€β”€ models/           # Custom model definitions
β”‚   β”‚   β”œβ”€β”€ gritlm7b.py
β”‚   β”‚   └── nvmmembed.py
β”‚   └── retrievers/       # Task-specific retrievers
β”‚       β”œβ”€β”€ task1_text.py
β”‚       β”œβ”€β”€ task2_multimodal.py
β”‚       β”œβ”€β”€ task3_image.py
β”‚       └── task4_pair.py
└── outputs/              # Evaluation results

πŸ“Š Benchmark Comparison

Benchmark#Queries#DomainsModalityReasoningMulti-Task
BRIGHT1,38412Textβœ…βœ…
RAR-b45,74517Textβœ…βŒ
WebQA7,540OpenIT β†’ IT❌❌
UNIIR190K10MixedβŒβœ…
ViDoRe3,81010T β†’ IT❌❌
MMEB36K36MixedβŒβœ…
MM-BRIGHT (Ours)2,80329Mixedβœ…βœ…

πŸ“ Citation

If you use MM-BRIGHT in your work, please cite our paper:

soon

πŸ“„ License

This project is licensed under CC-BY-4.0.


πŸ™ Acknowledgments

MM-BRIGHT is built on top of the excellent BRIGHT benchmark and extends it to the multimodal domain. We thank the Stack Exchange community for providing the raw data that makes this benchmark possible.

Contributors

mm-bright

2 commits

Languages

Python

100.0%