-
임베딩 모델 평가) 한국어 임베딩 모델 리더보드 (3)자연어처리(NLP)와 인공지능(AI) 2025. 3. 20. 17:54
임베딩 모델은 자연어 검색과 클러스터링, 유사도 매칭 등에 널리 쓰이고 있다.
특히, 근래에는 LLM/RAG를 통해 임베딩 모델을 접하게 되는 경우가 많을 것이라고 생각한다.
그렇다면, 한국어 성능이 좋은 오픈소스 임베딩 모델은 어떤 것들이 있을까?
이 궁금증을 해소하는데, 조금이라도 기여하고자 리더보드를 제작해보았다.
(참고로, 블로그 작성 시점은 25년 3월 20일이다.)
(리더보드 깃허브 주소 바로가기 : https://github.com/OnAnd0n/ko-embedding-leaderboard)
이전 글 : 임베딩 모델 평가) MTEB 코드 살펴보기 (2) - Custom Model 평가
평가를 위한 몇가지 기준은 다음과 같다.
1. 먼저, 임베딩을 평가하기위한 여러 Task 중
가장 중요하다고 생각하는 IR/Clustering/NLI/STS 4개의 Task를 선정하였다.
2. MTEB를 custom하여 평가하였고, 오픈소스 임베딩 모델을 대상으로 선정하였다.
3. Encoder를 Load하는 방식은 HuggingFace에 기재된 대로 진행하되,
SentenceTransformer > Transformers 의 우선순위로 모델 load하였다.
(단, Flagembedding으로만 기재된 경우, SentenceTransformer와 Transformers 중 높은 성능의 점수로 기입)
4. 또한, query_prefix / Prompt는 비대칭 문서 구조인 IR에만 적용하였다.
5. LLM Based 임베딩 모델은 fp16/bf16으로 평가하였다.
6. Task별로 가중치를 두어, 종합 점수를 평균내었다.- Weighted_Average = Retrieval : 33.3%, Clustering : 33.3%, [NLI, STS] : 33.3%
7. Task 별 평가 Metric 아래와 같다.
- STS : mean of {pearson, spearman, cosine_pearson, cosine_spearman, ..., euclidean_spearman}
- NLI : average precision
- Clustering : v-measure
- Retrieval : mean of NDCG @ 5, 10
8. 평가 데이터는 MTEB의 등록된 데이터를 기준으로 하였다.
(단, IR Task에서 Miracl, Mr.Tidy는 사이즈 이슈로... 제외하였다)
9. HuggingFace에 Query_fix가 기재된 경우, Query_fix를 STS/NLI/Clustering/IR 모두에 적용해봄.
(단, IR에 대해서만 Query_fix가 명시되어 있을 경우에는 MTEB Instruction 기준으로 적용해보고,
더 성능이 좋게 나온다면 그대로 인정하였다.)
그렇다면, 결과는 어떨까? (다시 얘기하지만, 블로그 작성 시점은 25년 3월 20일이다.)
Case 1) IR에만 Query_fix / Instruction을 적용한 경우
종합순위는 nlpai-lab/KURE-v1이 1등을 차지하였다. 모든 Task에서 골고루 좋은 스코어가 나온 것 같다.
Case 2) STS/NLI/Clustering/IR 모두에 Query_fix / Instruction을 적용한 경우
종합순위는 Alibaba-NLP/gte-Qwen2-7B-instruct가 1등을 차지하였다. 모든 Task에서 최상위권 스코어가 나온 것 같다.
2등과 3등은 인코더 계열인, intfloat/multilingual-e5-large-instruct와 dragonkue/snowflake-arctic-embed-l-v2.0-ko였다.
IR 랭킹만 따로보자면, 아래와 같다.
dragonkue/snowflake-arctic-embed-l-v2.0-ko의 성능이 상당히 좋은 것으로 보인다.ㅇㅢ Clustering의 성능은, 아래와 같다.(query_fix 적용된 경우)
intfloat/multilingual-e5-large-instruct의 성능이 매우 좋았다.
오픈소스 임베딩 모델이 생기면, 계속해서 추가할 계획이다.
또한 MTEB 평가 코드를 리뷰하면서, 평가 방식에 의문이 가는 부분도 있고 개선해보고 싶은 부분도 많이 생겼다.
계속해서 평가 코드에 Contribution할 수 있도록 할 계획이다.
한국어 임베딩 오픈 소스 모델의 활용을 장려하는데, 도움이 되길 바래본다.728x90'자연어처리(NLP)와 인공지능(AI)' 카테고리의 다른 글
임베딩 모델 평가) MTEB 코드 살펴보기 (2) - Customizing (1) 2025.02.25 임베딩 모델 평가) MTEB 코드 살펴보기 (1) (0) 2025.02.25 FP32, TF32, FP16, BF16, Mixed Precision에 대한 이해 (5) 2024.10.03 Last_hidden_state와 Logit (5) 2024.09.24 Batch Size, Iteration, Step, Epoch 이해하기 (4) 2024.09.22