인공지능/공부

mteb 한글 평가하기

이게될까 2025. 8. 29. 15:42
728x90
728x90

 

https://github.com/embeddings-benchmark/mteb?tab=readme-ov-file

 

GitHub - embeddings-benchmark/mteb: MTEB: Massive Text Embedding Benchmark

MTEB: Massive Text Embedding Benchmark. Contribute to embeddings-benchmark/mteb development by creating an account on GitHub.

github.com

일단 git은 여기에 있다. 

 

mteb kor 버전이 있다. 이렇게 불러올 수 있다. 

import mteb

benchmark = mteb.get_benchmark("MTEB(kor)")

>>
Benchmark(name='MTEB(kor)', tasks=MTEBTasks(KlueTC(name='KLUE-TC', languages=['kor']), MIRACLReranking(name='MIRACLReranking', languages=['kor']), MIRACLRetrieval(name='MIRACLRetrieval', languages=['kor']), KoStrategyQA(name='Ko-StrategyQA', languages=['kor']), KlueSTS(name='KLUE-STS', languages=['kor']), KorSTS(name='KorSTS', languages=['kor'])), description='Main Korean benchmarks from MTEB', reference=None, citation=None, contacts=None)

 

아니면 이렇게 한글이 포함된 tasks들을 가져올 수도 있다.

mteb.get_tasks(languages=["kor"])

>>
MTEBTasks(FloresBitextMining(name='FloresBitextMining', languages=['ace', 'acm', 'acq', '...']), IWSLT2017BitextMining(name='IWSLT2017BitextMining', languages=['eng', 'kor']), NTREXBitextMining(name='NTREXBitextMining', languages=['arb', 'ben', 'deu', '...']), TatoebaBitextMining(name='Tatoeba', languages=['eng', 'kor']), KlueTC(name='KLUE-TC', languages=['kor']), KorFin(name='KorFin', languages=['kor']), KorHateClassification(name='KorHateClassification', languages=['kor']), KorSarcasmClassification(name='KorSarcasmClassification', languages=['kor']), MassiveIntentClassification(name='MassiveIntentClassification', languages=['kor']), MassiveScenarioClassification(name='MassiveScenarioClassification', languages=['kor']), MultilingualSentimentClassification(name='MultilingualSentimentClassification', languages=['kor']), SIB200Classification(name='SIB200Classification', languages=['kor']), SIB200ClusteringFast(name='SIB200ClusteringS2S', languages=['kor']), AutoRAGRetrieval(name='AutoRAGRetrieval', languages=['kor']), KoStrategyQA(name='Ko-StrategyQA', languages=['kor']), BelebeleRetrieval(name='BelebeleRetrieval', languages=['eng', 'kor']), MIRACLRetrieval(name='MIRACLRetrieval', languages=['kor']), MIRACLRetrievalHardNegatives(name='MIRACLRetrievalHardNegatives', languages=['kor']), MrTidyRetrieval(name='MrTidyRetrieval', languages=['kor']), MultiLongDocRetrieval(name='MultiLongDocRetrieval', languages=['kor']), PublicHealthQARetrieval(name='PublicHealthQA', languages=['kor']), XPQARetrieval(name='XPQARetrieval', languages=['eng', 'kor']), KorHateSpeechMLClassification(name='KorHateSpeechMLClassification', languages=['kor']), KlueNLI(name='KLUE-NLI', languages=['kor']), PawsXPairClassification(name='PawsXPairClassification', languages=['kor']), MIRACLReranking(name='MIRACLReranking', languages=['kor']), KlueSTS(name='KLUE-STS', languages=['kor']), KorSTS(name='KorSTS', languages=['kor']), STS17Crosslingual(name='STS17', languages=['kor']))

 

기존에는 이러한 테스크를 통해 평가를 진행했다.

tasks = [
        "Ko-StrategyQA",
        "AutoRAGRetrieval",
        "MIRACLRetrieval",
        "PublicHealthQA",
        "BelebeleRetrieval",
        "MrTidyRetrieval",
        "MultiLongDocRetrieval",
        ]

 

이 것들은 모두 IR task이고, sts, classification 등 다양한 task의 성능도 확인해보고 싶어졌다.

 

그래서 mteb kor를 사용해보기로 했다.

 

모델은 이렇게 불러온다!

sentence transformer 모델은 그냥 이렇게 불러오면 된다. 

model = mteb.get_model(modelname)

 

Automodel 같은 경우는 wrapper를 통해 감싸주면 된다고 합니다 ㅎㅎ

evaluation = MTEB(
	tasks=get_tasks(tasks=tasks, languages=["kor-Kore", "kor-Hang", "kor_Hang"])
    )

다른 task들에서 이상한 evaluation 하지 않도록 ....

 

evaluation.run(
	model,
	output_folder=f"results/{model_name}",
	encode_kwargs={"batch_size": batch_size},
)

이제 평가 돌리면 끝!

 

이렇게 결과가 남는다 ㅎㅎ 

728x90

'인공지능 > 공부' 카테고리의 다른 글

딥러닝 응용 - 3주차  (0) 2025.09.15
딥러닝 응용 - 2주차  (0) 2025.09.08
Multi-GPU 기본 개념 DDP, Data Parallel, Model Parallel  (4) 2025.07.30
인공지능 기초 학습 코드 + 개념  (4) 2025.07.29
Collator란?  (4) 2025.07.29