- 2024.12.21: 🤗 KURE-v1, MTEB-ko-retrieval Leaderboard 공개
- 2024.10.02: 🤗 KoE5, 🤗 ko-triplet-v1.0 공개
KURE는 고려대학교 NLP & AI 연구실과 HIAI 연구소가 개발한 한국어 특화 임베딩 모델입니다.
KURE를 공개합니다.
pip install sentence-transformers
아래 예제 코드로 실행해볼 수 있습니다.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("nlpai-lab/KURE-v1")
# model = SentenceTransformer("nlpai-lab/KoE5")
# Run inference
sentences = [
'헌법과 법원조직법은 어떤 방식을 통해 기본권 보장 등의 다양한 법적 모색을 가능하게 했어',
'4. 시사점과 개선방향 앞서 살펴본 바와 같이 우리 헌법과 「법원조직 법」은 대법원 구성을 다양화하여 기본권 보장과 민주주의 확립에 있어 다각적인 법적 모색을 가능하게 하는 것을 근본 규범으로 하고 있다. 더욱이 합의체로서의 대법원 원리를 채택하고 있는 것 역시 그 구성의 다양성을 요청하는 것으로 해석된다. 이와 같은 관점에서 볼 때 현직 법원장급 고위법관을 중심으로 대법원을 구성하는 관행은 개선할 필요가 있는 것으로 보인다.',
'연방헌법재판소는 2001년 1월 24일 5:3의 다수견해로 「법원조직법」 제169조 제2문이 헌법에 합치된다는 판결을 내렸음 ○ 5인의 다수 재판관은 소송관계인의 인격권 보호, 공정한 절차의 보장과 방해받지 않는 법과 진실 발견 등을 근거로 하여 텔레비전 촬영에 대한 절대적인 금지를 헌법에 합치하는 것으로 보았음 ○ 그러나 나머지 3인의 재판관은 행정법원의 소송절차는 특별한 인격권 보호의 이익도 없으며, 텔레비전 공개주의로 인해 법과 진실 발견의 과정이 언제나 위태롭게 되는 것은 아니라면서 반대의견을 제시함 ○ 왜냐하면 행정법원의 소송절차에서는 소송당사자가 개인적으로 직접 심리에 참석하기보다는 변호사가 참석하는 경우가 많으며, 심리대상도 사실문제가 아닌 법률문제가 대부분이기 때문이라는 것임 □ 한편, 연방헌법재판소는 「연방헌법재판소법」(Bundesverfassungsgerichtsgesetz: BVerfGG) 제17a조에 따라 제한적이나마 재판에 대한 방송을 허용하고 있음 ○ 「연방헌법재판소법」 제17조에서 「법원조직법」 제14절 내지 제16절의 규정을 준용하도록 하고 있지만, 녹음이나 촬영을 통한 재판공개와 관련하여서는 「법원조직법」과 다른 내용을 규정하고 있음',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# Results for KURE-v1
# tensor([[1.0000, 0.6967, 0.5306],
# [0.6967, 1.0000, 0.4427],
# [0.5306, 0.4427, 1.0000]])
# Results for KoE5
# tensor([[1.0000, 0.6721, 0.3897],
# [0.6721, 1.0000, 0.3740],
# [0.3897, 0.3740, 1.0000]])
MTEB에 등록된 모든 Korean Retrieval Benchmark에 대한 평가를 진행하였습니다.
- Ko-StrategyQA: 한국어 ODQA multi-hop 검색 데이터셋 (StrategyQA 번역)
- AutoRAGRetrieval: 금융, 공공, 의료, 법률, 커머스 5개 분야에 대해, pdf를 파싱하여 구성한 한국어 문서 검색 데이터셋
- MIRACLRetrieval: Wikipedia 기반의 한국어 문서 검색 데이터셋
- PublicHealthQA: 의료 및 공중보건 도메인에 대한 한국어 문서 검색 데이터셋
- BelebeleRetrieval: FLORES-200 기반의 한국어 문서 검색 데이터셋
- MrTidyRetrieval: Wikipedia 기반의 한국어 문서 검색 데이터셋
- MultiLongDocRetrieval: 다양한 도메인의 한국어 장문 검색 데이터셋
- XPQARetrieval: 다양한 도메인의 한국어 문서 검색 데이터셋
evaluate.py
에 모델을 추가하여 mteb를 활용한 평가를 진행할 수 있습니다.
cd eval
pip install -r requirements.txt
python evaluate.py
streamlit을 통해 모든 모델의 모든 태스크에 대한 평가 결과를 시각화합니다.
streamlit run leaderboard.py
아래는 모든 모델의, 모든 벤치마크 데이터셋에 대한 평균 결과입니다.
자세한 결과는 eval/results
폴더에서 확인하실 수 있습니다.
Model | Average Recall | Average Precision | Average NDCG | Average F1 |
---|---|---|---|---|
nlpai-lab/KURE-v1 | 0.52640 | 0.60551 | 0.60551 | 0.55784 |
dragonkue/BGE-m3-ko | 0.52361 | 0.60394 | 0.60394 | 0.55535 |
BAAI/bge-m3 | 0.51778 | 0.59846 | 0.59846 | 0.54998 |
Snowflake/snowflake-arctic-embed-l-v2.0 | 0.51246 | 0.59384 | 0.59384 | 0.54489 |
nlpai-lab/KoE5 | 0.50157 | 0.57790 | 0.57790 | 0.53178 |
intfloat/multilingual-e5-large | 0.50052 | 0.57727 | 0.57727 | 0.53122 |
jinaai/jina-embeddings-v3 | 0.48287 | 0.56068 | 0.56068 | 0.51361 |
BAAI/bge-multilingual-gemma2 | 0.47904 | 0.55472 | 0.55472 | 0.50916 |
intfloat/multilingual-e5-large-instruct | 0.47842 | 0.55435 | 0.55435 | 0.50826 |
intfloat/multilingual-e5-base | 0.46950 | 0.54490 | 0.54490 | 0.49947 |
intfloat/e5-mistral-7b-instruct | 0.46772 | 0.54394 | 0.54394 | 0.49781 |
Alibaba-NLP/gte-multilingual-base | 0.46469 | 0.53744 | 0.53744 | 0.49353 |
Alibaba-NLP/gte-Qwen2-7B-instruct | 0.46633 | 0.53625 | 0.53625 | 0.49429 |
openai/text-embedding-3-large | 0.44884 | 0.51688 | 0.51688 | 0.47572 |
Salesforce/SFR-Embedding-2_R | 0.43748 | 0.50815 | 0.50815 | 0.46504 |
upskyy/bge-m3-korean | 0.43125 | 0.50245 | 0.50245 | 0.45945 |
jhgan/ko-sroberta-multitask | 0.33788 | 0.38497 | 0.38497 | 0.35678 |
Model | Average Recall | Average Precision | Average NDCG | Average F1 |
---|---|---|---|---|
nlpai-lab/KURE-v1 | 0.68678 | 0.28711 | 0.65538 | 0.39835 |
dragonkue/BGE-m3-ko | 0.67834 | 0.28385 | 0.64950 | 0.39378 |
BAAI/bge-m3 | 0.67526 | 0.28374 | 0.64556 | 0.39291 |
Snowflake/snowflake-arctic-embed-l-v2.0 | 0.67128 | 0.28193 | 0.64042 | 0.39072 |
intfloat/multilingual-e5-large | 0.65807 | 0.27777 | 0.62822 | 0.38423 |
nlpai-lab/KoE5 | 0.65174 | 0.27329 | 0.62369 | 0.37882 |
BAAI/bge-multilingual-gemma2 | 0.64415 | 0.27416 | 0.61105 | 0.37782 |
jinaai/jina-embeddings-v3 | 0.64116 | 0.27165 | 0.60954 | 0.37511 |
intfloat/multilingual-e5-large-instruct | 0.64353 | 0.27040 | 0.60790 | 0.37453 |
Alibaba-NLP/gte-multilingual-base | 0.63744 | 0.26404 | 0.59695 | 0.36764 |
Alibaba-NLP/gte-Qwen2-7B-instruct | 0.63163 | 0.25937 | 0.59237 | 0.36263 |
intfloat/multilingual-e5-base | 0.62099 | 0.26144 | 0.59179 | 0.36203 |
intfloat/e5-mistral-7b-instruct | 0.62087 | 0.26144 | 0.58917 | 0.36188 |
openai/text-embedding-3-large | 0.61035 | 0.25356 | 0.57329 | 0.35270 |
Salesforce/SFR-Embedding-2_R | 0.60001 | 0.25253 | 0.56346 | 0.34952 |
upskyy/bge-m3-korean | 0.59215 | 0.25076 | 0.55722 | 0.34623 |
jhgan/ko-sroberta-multitask | 0.46930 | 0.18994 | 0.43293 | 0.26696 |
Model | Average Recall | Average Precision | Average NDCG | Average F1 |
---|---|---|---|---|
nlpai-lab/KURE-v1 | 0.73851 | 0.19130 | 0.67479 | 0.29903 |
dragonkue/BGE-m3-ko | 0.72517 | 0.18799 | 0.66692 | 0.29401 |
BAAI/bge-m3 | 0.72954 | 0.18975 | 0.66615 | 0.29632 |
Snowflake/snowflake-arctic-embed-l-v2.0 | 0.72962 | 0.18875 | 0.66236 | 0.29542 |
nlpai-lab/KoE5 | 0.70820 | 0.18287 | 0.64499 | 0.28628 |
intfloat/multilingual-e5-large | 0.70124 | 0.18316 | 0.64402 | 0.28588 |
BAAI/bge-multilingual-gemma2 | 0.70258 | 0.18556 | 0.63338 | 0.28851 |
jinaai/jina-embeddings-v3 | 0.69933 | 0.18256 | 0.63133 | 0.28505 |
intfloat/multilingual-e5-large-instruct | 0.69018 | 0.17838 | 0.62486 | 0.27933 |
Alibaba-NLP/gte-multilingual-base | 0.69365 | 0.17789 | 0.61896 | 0.27879 |
intfloat/multilingual-e5-base | 0.67250 | 0.17406 | 0.61119 | 0.27247 |
Alibaba-NLP/gte-Qwen2-7B-instruct | 0.67447 | 0.17114 | 0.60952 | 0.26943 |
intfloat/e5-mistral-7b-instruct | 0.67449 | 0.17484 | 0.60935 | 0.27349 |
openai/text-embedding-3-large | 0.66365 | 0.17004 | 0.59389 | 0.26677 |
Salesforce/SFR-Embedding-2_R | 0.65622 | 0.17018 | 0.58494 | 0.26612 |
upskyy/bge-m3-korean | 0.65477 | 0.17015 | 0.58073 | 0.26589 |
jhgan/ko-sroberta-multitask | 0.53136 | 0.13264 | 0.45879 | 0.20976 |
Model | Average Recall | Average Precision | Average NDCG | Average F1 |
---|---|---|---|---|
nlpai-lab/KURE-v1 | 0.79682 | 0.10624 | 0.69473 | 0.18524 |
dragonkue/BGE-m3-ko | 0.78450 | 0.10492 | 0.68748 | 0.18288 |
BAAI/bge-m3 | 0.79195 | 0.10592 | 0.68723 | 0.18456 |
Snowflake/snowflake-arctic-embed-l-v2.0 | 0.78669 | 0.10462 | 0.68189 | 0.18260 |
intfloat/multilingual-e5-large | 0.75902 | 0.10147 | 0.66370 | 0.17693 |
nlpai-lab/KoE5 | 0.75296 | 0.09937 | 0.66012 | 0.17369 |
BAAI/bge-multilingual-gemma2 | 0.76153 | 0.10364 | 0.65330 | 0.18003 |
jinaai/jina-embeddings-v3 | 0.76277 | 0.10240 | 0.65290 | 0.17843 |
intfloat/multilingual-e5-large-instruct | 0.74851 | 0.09888 | 0.64451 | 0.17283 |
Alibaba-NLP/gte-multilingual-base | 0.75631 | 0.09938 | 0.64025 | 0.17363 |
Alibaba-NLP/gte-Qwen2-7B-instruct | 0.74092 | 0.09607 | 0.63258 | 0.16847 |
intfloat/multilingual-e5-base | 0.73512 | 0.09717 | 0.63216 | 0.16977 |
intfloat/e5-mistral-7b-instruct | 0.73795 | 0.09777 | 0.63076 | 0.17078 |
openai/text-embedding-3-large | 0.72946 | 0.09571 | 0.61670 | 0.16739 |
Salesforce/SFR-Embedding-2_R | 0.71662 | 0.09546 | 0.60589 | 0.16651 |
upskyy/bge-m3-korean | 0.71895 | 0.09583 | 0.60258 | 0.16712 |
jhgan/ko-sroberta-multitask | 0.61225 | 0.07826 | 0.48687 | 0.13757 |
- KURE-v1은 BAAI/bge-m3를 기반으로 fine-tuning된 모델입니다.
- KoE5는 intfloat/multilingual-e5-large를 기반으로 fine-tuning된 모델입니다.
KURE-v1
- 한국어 query-document-hard_negative(5개) 데이터 쌍
- 약 2,000,000 examples
KoE5
- ko-triplet-v1.0
- 한국어 query-document-hard_negative(1개) 데이터 쌍 (open data)
- 약 700,000+ examples
KURE-v1
- loss: CachedGISTEmbedLoss
- batch size: 4096
- learning rate: 2e-05
- epochs: 1
KoE5
- loss: CachedMultipleNegativesRankingLoss
- batch size: 512
- learning rate: 1e-05
- epochs: 1
- KoE5 사용 시, prefix를 붙여 주어야 합니다. (query: {query}, passage: {document})
MIT
If you find our paper or models helpful, please consider cite as follows:
@misc{KURE,
publisher = {Youngjoon Jang, Junyoung Son, Taemin Lee},
year = {2024},
url = {https://github.com/nlpai-lab/KURE}
},
@misc{KoE5,
author = {NLP & AI Lab and Human-Inspired AI research},
title = {KoE5: 한국어 임베딩 성능 향상을 위한 새로운 데이터셋 및 모델},
year = {2024},
publisher = {Youngjoon Jang, Junyoung Son, Taemin Lee},
journal = {GitHub repository},
howpublished = {\url{https://drive.google.com/file/d/1wB02XGFH5v18iJYSYB0oJkWFYxH0ftoJ/view}},
}