LongBench

LongBench

A bilingual (English + Chinese) benchmark for long-context understanding, with 21 tasks across document QA, summarization, few-shot learning, synthetic reasoning, and code completion. 4,750 test samples averaging 5k–15k tokens, scored with a fully automated evaluation.

MIT
1K – 10K
Text Generation
Text Classification
Question Answering
by @AIOZAI
2

Last updated: 15 days ago


LongBench

Summary

Introduction

LongBench is the first benchmark for bilingual, multitask, and comprehensive assessment of long context understanding capabilities of large language models. LongBench includes different languages (Chinese and English) to provide a more comprehensive evaluation of the large models' multilingual capabilities on long contexts. In addition, LongBench is composed of six major categories and twenty-one different tasks, covering key long-text application scenarios such as single-document QA, multi-document QA, summarization, few-shot learning, synthetic tasks, and code completion.

We are fully aware of the potentially high costs involved in the model evaluation process, especially in the context of long context scenarios (such as manual annotation costs or API call costs). Therefore, we adopt a fully automated evaluation method, aimed at measuring and evaluating the model's ability to understand long contexts at the lowest cost.

LongBench includes 14 English tasks, 5 Chinese tasks, and 2 code tasks, with the average length of most tasks ranging from 5k to 15k, and a total of 4,750 test data. For detailed statistics and construction methods of LongBench tasks, please refer to the GitHub repository. In addition, we provide LongBench-E, a test set with a more uniform length distribution constructed by uniform sampling, with comparable amounts of data in the 0-4k, 4k-8k, and 8k+ length intervals to provide an analysis of the model's performance variations at different input lengths.

GitHub repo for LongBench. arXiv paper for LongBench.

Dataset Structure

Data Instances

An example of a data instance looks as follows:

{
    "input": "The input/command for the task, usually short, such as questions in QA, queries in Few-shot tasks, etc",
    "context": "The long context required for the task, such as documents, cross-file code, few-shot examples in Few-shot tasks",
    "answers": "A List of all true answers",
    "length": "Total length of the first three items (counted in characters for Chinese and words for English)",
    "dataset": "The name of the dataset to which this piece of data belongs",
    "language": "The language of this piece of data",
    "all_classes": "All categories in classification tasks, null for non-classification tasks",
    "_id": "Random id for each piece of data"
}

Data Fields

The dataset has the following fields:

  • input (str): The input/command for the task, usually short, such as questions in QA or queries in few-shot tasks.
  • context (str): The long context required for the task, such as documents, cross-file code, or few-shot examples.
  • answers (list): A list of all true answers.
  • length (int): Total length of the input, context, and answers (counted in characters for Chinese and words for English).
  • dataset (str): The name of the dataset to which this piece of data belongs.
  • language (str): The language of this piece of data.
  • all_classes (list): All categories in classification tasks; null for non-classification tasks.
  • _id (str): Random id for each piece of data.

Task statistics

TaskTask TypeEval metricAvg lenLanguage#Sample
HotpotQAMulti-doc QAF19,151EN200
2WikiMultihopQAMulti-doc QAF14,887EN200
MuSiQueMulti-doc QAF111,214EN200
DuReaderMulti-doc QARouge-L15,768ZH200
MultiFieldQA-enSingle-doc QAF14,559EN150
MultiFieldQA-zhSingle-doc QAF16,701ZH200
NarrativeQASingle-doc QAF118,409EN200
QasperSingle-doc QAF13,619EN200
GovReportSummarizationRouge-L8,734EN200
QMSumSummarizationRouge-L10,614EN200
MultiNewsSummarizationRouge-L2,113EN200
VCSUMSummarizationRouge-L15,380ZH200
TriviaQAFew shotF18,209EN200
SAMSumFew shotRouge-L6,258EN200
TRECFew shotAccuracy5,177EN200
LSHTFew shotAccuracy22,337ZH200
PassageRetrieval-enSyntheticAccuracy9,289EN200
PassageCountSyntheticAccuracy11,141EN200
PassageRetrieval-zhSyntheticAccuracy6,745ZH200
LCCCodeEdit Sim1,235Python/C#/Java500
RepoBench-PCodeEdit Sim4,206Python/Java500

Note: In order to avoid discrepancies caused by different tokenizers, we use the word count (using Python's split function) to calculate the average length of English datasets and code datasets, and use the character count to calculate the average length of Chinese datasets.

Task description

TaskTask Description
HotpotQAAnswer related questions based on multiple given documents
2WikiMultihopQAAnswer related questions based on multiple given documents
MuSiQueAnswer related questions based on multiple given documents
DuReaderAnswer related Chinese questions based on multiple retrieved documents
MultiFieldQA-enAnswer English questions based on a long article, which comes from a relatively diverse field
MultiFieldQA-zhAnswer Chinese questions based on a long article, which comes from a relatively diverse field
NarrativeQAAnswer questions based on stories or scripts, including understanding of important elements such as characters, plots, themes, etc.
QasperAnswer questions based on an NLP research paper; questions proposed and answered by NLP practitioners
GovReportA summarization task that requires summarizing government work reports
MultiNewsA multi-doc summarization task that requires summarizing over multiple news articles
QMSumA summarization task that requires summarizing meeting records based on user queries
VCSUMA summarization task that requires summarizing Chinese meeting records
SAMSumA dialogue summarization task, providing several few-shot examples
TriviaQASingle document question answering task, providing several few-shot examples
TRECA classification task that requires categorizing questions, includes 50 categories in total
LSHTA Chinese classification task that requires categorizing news, includes 24 categories in total
PassageRetrieval-enGiven 30 English Wikipedia paragraphs, determine which paragraph the given summary corresponds to
PassageCountDetermine the total number of different paragraphs in a given repetitive article
PassageRetrieval-zhGiven several Chinese paragraphs from the C4 data set, determine which paragraph the given abstract corresponds to
LCCGiven a long piece of code, predict the next line of code
RepoBench-PGiven code in multiple files within a GitHub repository (including cross-file dependencies), predict the next line of code

LongBench-E statistics

TaskTask Type#data in 0-4k#data in 4-8k#data in 8k+
HotpotQAMulti-doc QA100100100
2WikiMultihopQAMulti-doc QA100100100
MultiFieldQA-enSingle-doc QA677013
QasperSingle-doc QA10010024
GovReportSummarization100100100
MultiNewsSummarization10010094
TriviaQAFew shot100100100
SAMSumFew shot100100100
TRECFew shot100100100
PassageRetrieval-enSynthetic100100100
PassageCountSynthetic100100100
LCCCode100100100
RepoBench-PCode100100100

Reference

We would like to acknowledge Yushi Bai and Xin Lv et al. for creating and maintaining the LongBench dataset as a valuable resource for the natural language processing and machine learning research community. For more information about the LongBench dataset and its creators, please visit the LongBench repository.

License

The dataset has been released under the MIT license.

Citation

@misc{bai2023longbench,
      title={LongBench: A Bilingual, Multitask Benchmark for Long Context Understanding}, 
      author={Yushi Bai and Xin Lv and Jiajie Zhang and Hongchang Lyu and Jiankai Tang and Zhidian Huang and Zhengxiao Du and Xiao Liu and Aohan Zeng and Lei Hou and Yuxiao Dong and Jie Tang and Juanzi Li},
      year={2023},
      eprint={2308.14508},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}