MTEB는 Massively Multilingual and Multitask Benchmark의 약자로, 다국어 환경에서 문장 임베딩이 얼마나 효과적으로 이루어지는지 종합적으로 평가할 수 있는 벤치마크를 제공합니다.
🔎 참고) NLP 작업에서 문장 임베딩의 평가가 중요한 이유는 문장 임베딩이 텍스트의 의미를 수치 벡터로 압축해 표현하기 때문입니다. 이러한 벡터 표현은 다양한 자연어 처리(NLP) 작업의 핵심으로 사용되며, 문장 간 유사도 측정, 분류, 검색 등 여러 과제에 활용됩니다.
1. MTEB 데이터셋이 생겨난 이유
다양한 task에서의 성능 평가
기존에는 한 가지 유형의 task(예: classification, semantic textaul similarity 등)에 대해 모델의 성능을 평가해왔습니다. 그러나 이러한 방식은 여러 작업을 수행하는 모델의 전반적인 성능을 파악하는 데 한계가 있었습니다. 이러한 문제를 해결하고자, 분류(classification), 클러스터링(clustering), 검색(retrieval), 의미 유사도(semantic textual similarity) 등 다양한 자연어 처리 작업을 포함하여 모델의 다재다능함을 평가할 수 있는 표준화된 벤치마크 데이터셋의 필요성이 대두되었습니다.
다양한 언어 지원
또한 기존의 벤치마크들은 대부분 영어에 초점을 맞추고 있었습니다. 그러나 글로벌 애플리케이션에서는 다양한 언어를 지원하는 것이 필수적입니다. MTEB는 50개 이상의 언어를 포함하여 진정한 다국어 모델의 성능을 평가할 수 있도록 설계되었습니다. 이를 통해 다국어 지원의 중요성을 강조하고, 다양한 언어에서 우수한 성능을 발휘하는 모델을 개발하는 데 기여합니다.
2. 구성
💛 Multi Lingual
- 다양한 언어군을 대표하는 50개 이상의 언어를 포함합니다. 이러한 광범위한 커버리지를 통해 모델의 진정한 다국어 기능을 테스트할 수 있습니다.
- 그럼에도 불구하고 대부분은 영어와 중국어 데이터셋입니다...😂
- (2024.09.30 기준) 한국어 데이터셋은 27개로 task별 데이터셋의 갯수는 다음과 같습니다
Language BitextMining Classification Clustering InstructionRetrieval MultilabelClassification PairClassification Reranking Retrieval STS Speed Summarization KOR 4 8 1 0 1 2 1 7 3 0 0
💛 Tasks
벤치마크에는 8개의 작업 범주에 대한 50개 이상의 데이터셋이 포함되어 있습니다
- Clustering: 모델이 유사한 문장을 얼마나 잘 그룹화하는지를 테스트합니다
- Bitext Mining : 모델이 여러 언어에서 문장의 의미를 얼마나 잘 일치시킬 수 있는지에 초점을 맞춰 다국어 능력을 평가합니다
- Retrieval : 쿼리가 주어졌을 때 모델이 관련 문서나 문장을 얼마나 효과적으로 검색하는지를 측정합니다
- Sementic Textual Similarity (STS) : 문장 쌍의 유사성을 판단하는 모델의 능력을 평가합니다
- Summarization : 콘텐츠를 요약하고 모델이 필수 정보를 얼마나 잘 포착하는지 테스트합니다
- Classification: 문장을 카테고리로 분류하는 모델의 능력을 평가합니다(예: 감정 분석, 주제 분류)
- Pair Classifiaction : 의역어 식별과 같은 문장 쌍 작업에서 모델의 성능을 평가합니다
- Reranking : 관련성에 따라 후보 문장/문서를 재순서화하는 모델의 능력을 테스트합니다
💛 한국어 데이터셋 (Task별)
1. 문장 유사도(STS, s2s)
- KLUE-STS (Korean Language Understanding Evaluation - Semantic Textual Similarity): 한국어 문장 간 유사도를 측정하는 데이터셋으로, 리뷰, 뉴스, 구어체, 문어체 등 다양한 도메인에서 수집된 문장 쌍의 의미적 유사도를 제공합니다.
- KorSTS: 한국어 문장 간 유사도를 평가하기 위한 데이터셋으로, 주로 뉴스와 웹 문서에서 추출된 문장 쌍으로 구성되어 있습니다.
- STS17: 다양한 언어(한국어 포함)의 문장 쌍을 제공하는 데이터셋으로, 각 쌍의 유사도 점수가 포함되어 있습니다. 뉴스, 웹, 문어체 등 다양한 도메인에서 문장을 수집했습니다.
2. 검색 및 문단 추출 (Retrieval, s2p)
- BelebeleRetrieval: 100개 이상의 언어로 구성된 웹, 뉴스, 문어체 데이터로부터 문단을 검색하는 작업을 수행하는 데이터셋입니다.
- Ko-StrategyQA: 한국어에서 질문에 대한 답변을 문단에서 찾는 작업을 위한 검색 데이터셋입니다.
- MIRACLRetrieval: 여러 언어로 구성된 백과사전 및 문어체 데이터를 활용하여 질문에 대한 가장 적합한 문단을 찾는 검색 데이터셋입니다.
- MultiLongDocRetrieval: 백과사전, 웹, 논픽션, 픽션 등 여러 도메인에서 다양한 언어로 수집된 문단 검색 데이터셋입니다.
- PublicHealthQA: 의료, 정부, 웹 문서 등 다양한 출처에서 공중보건 관련 질문에 대한 답변을 찾기 위한 검색 데이터셋입니다.
3. 순위 매기기 및 분류 (Reranking, Classification, s2s)
- MIRACLReranking: 백과사전, 문어체 데이터에서 검색 결과의 순위를 재조정하는 작업을 수행하는 데이터셋입니다.
- KLUE-NLI: 한국어 자연어 추론(Natural Language Inference) 작업을 위한 데이터셋으로, 주어진 문장 쌍 간의 관계를 분류합니다.
- KorHateSpeechMLClassification: 한국어 혐오 발언 데이터셋으로, 다양한 소셜 미디어에서 수집된 문장들을 다중 라벨 분류합니다.
- MassiveIntentClassification: 여러 언어로 구성된 데이터셋으로, 문장이 의도(intent)를 나타내는지 분류하는 작업에 사용됩니다.
4. 문장 간 군집화 (Clustering, s2s)
- SIB200ClusteringS2S: 뉴스와 문어체 데이터에서 문장 간 군집화를 수행하는 데이터셋으로, 여러 언어로 구성되어 있습니다.
5. 텍스트 마이닝 (BitextMining, s2s)
- FloresBitextMining: 비소설, 백과사전, 문어체 데이터에서 언어 간 번역 쌍을 찾아내는 데이터셋입니다.
- IWSLT2017BitextMining: 다양한 언어의 문장 쌍을 포함하는 데이터셋으로, 소설, 픽션, 문어체 데이터에 집중하고 있습니다.
- Tatoeba: 다양한 언어의 번역 쌍으로 구성된 대규모 데이터셋으로, 문어체를 중심으로 문장 간 번역 관계를 추출합니다.
3. 평가 지표
MTEB(Massively Multilingual and Multitask Benchmark)에서 성능을 평가하는 지표는 작업의 유형에 따라 다릅니다. MTEB는 문장 임베딩의 다양한 측면을 평가하기 위해 여러 가지 자연어 처리(NLP) 작업을 포함하고 있으며, 각 작업은 자체적인 평가 지표를 사용해 모델의 성능을 측정합니다. 이로 인해 모델의 능력을 여러 측면에서 평가하고, 다국어 환경에서의 일반화 및 성능을 종합적으로 파악할 수 있습니다.
1. Semantic Textual Similarity (STS, s2s)
- 지표: Pearson/Spearman 상관계수 (Pearson/Spearman Correlation)
- 설명: STS 작업에서는 두 문장 간의 의미적 유사도를 수치로 나타냅니다. 모델이 예측한 유사도와 실제 주어진 유사도 간의 상관관계를 측정하여 모델의 성능을 평가합니다.
- Pearson 상관계수: 선형적 관계를 측정하며, 예측 값과 실제 값의 유사도를 직접적으로 반영합니다.
- Spearman 상관계수: 순위 기반 관계를 측정하며, 값 자체보다는 순서에 중점을 둡니다.
2. 정보 검색 및 문단 추출 (Retrieval, s2p)
- 지표: Mean Reciprocal Rank (MRR), Recall@K (R@K), Mean Average Precision (MAP)
- 설명: 검색 및 문단 추출 작업에서는 주어진 질의에 대해 가장 관련 있는 문서나 문단을 검색하는 것이 목표입니다.
- Mean Reciprocal Rank (MRR): 검색 결과에서 첫 번째로 등장하는 올바른 항목의 순위를 사용하여 평균을 계산합니다. 높은 MRR 값은 올바른 항목이 검색 결과 상위에 위치함을 의미합니다.
- Recall@K (R@K): 상위 K개의 검색 결과 내에 올바른 항목이 있는지를 측정합니다. K가 클수록 모델의 성능을 좀 더 넓게 평가할 수 있습니다.
- Mean Average Precision (MAP): 전체 검색 결과의 순서와 정확도를 종합적으로 평가하는 지표로, 검색 결과의 정밀도와 관련성을 반영합니다.
3. 재정렬 (Reranking, s2s)
- 지표: Mean Reciprocal Rank (MRR), Normalized Discounted Cumulative Gain (nDCG)
- 설명: 재정렬 작업에서는 초기 검색 결과를 다시 정렬하여 관련성이 높은 항목이 상위에 오도록 하는 것이 목표입니다.
- nDCG (Normalized Discounted Cumulative Gain): 검색 결과의 순서와 관련성을 평가하는 지표로, 상위에 나오는 관련성이 높은 항목에 더 높은 가중치를 부여합니다.
4. 문장 분류 (Classification, s2s)
- 지표: Accuracy, F1-Score, Precision, Recall
- 설명: 분류 작업에서는 문장을 특정 레이블이나 범주로 분류하는 것이 목표입니다.
- Accuracy: 전체 문장 중에서 올바르게 분류된 비율을 나타냅니다.
- F1-Score: Precision(정밀도)과 Recall(재현율)의 조화 평균으로, 특히 클래스 간 불균형이 존재할 때 유용합니다.
- Precision: 모델이 특정 클래스로 예측한 것 중 실제로 올바른 비율을 나타냅니다.
- Recall: 실제로 특정 클래스인 것 중에서 모델이 올바르게 예측한 비율을 나타냅니다.
5. 문장 군집화 (Clustering, s2s)
- 지표: Adjusted Rand Index (ARI), Normalized Mutual Information (NMI)
- 설명: 군집화 작업에서는 문장들을 의미적으로 비슷한 그룹으로 분류하는 것이 목표입니다.
- Adjusted Rand Index (ARI): 예측된 군집과 실제 군집 간의 일치도를 측정합니다. ARI 값이 높을수록 예측이 실제와 더 잘 일치합니다.
- Normalized Mutual Information (NMI): 두 군집 간의 정보 공유 정도를 측정합니다. 값이 1에 가까울수록 더 잘 군집화된 것으로 간주됩니다.
6. 쌍 분류 및 문장 관계 (PairClassification, s2s)
- 지표: Accuracy, F1-Score
- 설명: 쌍 분류 작업에서는 두 문장 사이의 관계(예: 동일 의미, 상반된 의미 등)를 분류합니다. Accuracy와 F1-Score를 사용하여 모델이 두 문장 간의 관계를 얼마나 잘 예측하는지 평가합니다.
7. 텍스트 마이닝 (BitextMining, s2s)
- 지표: Precision@K (P@K)
- 설명: Bitext Mining 작업에서는 다국어 문장 쌍 간의 번역 관계를 식별하는 것이 목표입니다.
- Precision@K: 상위 K개의 문장 쌍 중에서 올바른 번역 쌍이 얼마나 포함되어 있는지를 측정합니다. K가 클수록 검색 성능을 전반적으로 평가할 수 있습니다.
8. 다중 레이블 분류 (Multilabel Classification, s2s)
- 지표: F1-Score (Micro, Macro)
- 설명: 한 문장이 여러 레이블을 가질 수 있는 다중 레이블 분류 작업에서는 정확하게 여러 레이블을 예측하는 것이 중요합니다.
- Micro F1-Score: 모든 클래스의 개별 예측을 합산하여 F1-Score를 계산합니다.
- Macro F1-Score: 각 클래스별 F1-Score를 구한 후 평균을 냅니다.
4. 참고 자료
[Paper] MTEB: Massive Text Embedding Benchmark (2022년 10월)
Papers with Code - MTEB: Massive Text Embedding Benchmark
🏆 SOTA for Text Retrieval on MTEB (nDCG@10 metric)
paperswithcode.com
'LLM' 카테고리의 다른 글
[langChain] LangChain Expression Language(LCEL) (1) | 2024.10.16 |
---|---|
[LLM/RAG] Retrieval-Augmented Generation for Large Language Models : A Survey 논문 읽기(진행중) (2) | 2024.10.10 |
[python] API Key 환경변수로 설정하고 관리하기 (dotenv) (1) | 2024.09.06 |
RAG의 구성 요소 - 1. Document Loaders (0) | 2024.08.12 |
RAG란 무엇인가? (0) | 2024.08.12 |