한국어 임베딩 모델 성능 비교 테스트 결과
한국어 corpus 데이터셋으로 테스트 했습니다.
import autorag
from autorag.evaluator import Evaluator
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.embeddings.openai import OpenAIEmbedding, OpenAIEmbeddingModelType
autorag.embedding_models["text-embedding-3-small"] = OpenAIEmbedding(model="text-embedding-3-small")
autorag.embedding_models["bge-m3"] = HuggingFaceEmbedding("BAAI/bge-m3")
autorag.embedding_models["ko-sroberta-multitask"] = HuggingFaceEmbedding("jhgan/ko-sroberta-multitask")
autorag.embedding_models["ko-sbert-nli"] = HuggingFaceEmbedding("jhgan/ko-sbert-nli")
autorag.embedding_models['kosimcse'] = HuggingFaceEmbedding("BM-K/KoSimCSE-roberta-multitask")
autorag.embedding_models['sroberta'] = HuggingFaceEmbedding("bespin-global/klue-sroberta-base-continue-learning-by-mnr")
evaluator = Evaluator(
qa_data_path="./qa.parquet",
corpus_data_path="./corpus.parquet",
project_dir="./project_dir",
)
evaluator.start_trial("./config_korean.yaml")
| module_name | module_params | execution_time | retrieval_f1 | retrieval_recall | retrieval_precision | is_best |
|---|---|---|---|---|---|---|
| vectordb | {'top_k': 3, 'embedding_model': 'bge-m3'} | 0.21 | 0.35 | 0.7 | 0.23 | True |
| vectordb | {'top_k': 3, 'embedding_model': 'ko-sroberta-multitask'} | 0.13 | 0.14 | 0.28 | 0.09 | False |
| vectordb | {'top_k': 3, 'embedding_model': 'ko-sbert-nli'} | 0.03 | 0.08 | 0.16 | 0.05 | False |
| vectordb | {'top_k': 3, 'embedding_model': 'kosimcse'} | 0.07 | 0.09 | 0.18 | 0.06 | False |
| vectordb | {'top_k': 3, 'embedding_model': 'sroberta'} | 0.02 | 0.06 | 0.12 | 0.04 | False |
| vectordb | {'top_k': 3, 'embedding_model': 'text-embedding-3-small'} | 0.39 | 0.22 | 0.44 | 0.14 | False |
| vectordb | {'top_k': 3, 'embedding_model': 'solar-embedding-1-large', 'embedding_batch': 100} | 0.57 | 0.31 | 0.62 | 0.20 | False |
| bm25 | {'top_k': 3, 'bm25_tokenizer': 'ko_kiwi'} | 1.02 | 0.13 | 0.26 | 0.09 | False |
평가 방법 설명
execution_time (실행 시간):
- 모델이 주어진 작업을 완료하는 데 걸리는 시간입니다. 단위는 초(Seconds)로 측정됩니다. 짧을수록 더 효율적입니다.
retrieval_f1 (검색 F1 점수):
- 검색 성능을 평가하는 지표로, 정밀도(Precision)와 재현율(Recall)의 조화 평균입니다. 값이 높을수록 검색 성능이 좋습니다.
retrieval_recall (검색 재현율):
- 검색된 문서 중 실제 관련 문서가 차지하는 비율입니다. 값이 높을수록 더 많은 관련 문서를 검색해냈음을 의미합니다.
retrieval_precision (검색 정밀도):
- 검색된 문서 중 실제 관련 문서의 비율입니다. 값이 높을수록 검색된 문서가 실제로 관련성이 높음을 의미합니다.
평가 결과: bge-m3
높은 검색 성능:
- bge-m3 모델은 retrieval_f1 점수에서 0.35로 가장 높은 점수를 기록했습니다. 이는 정밀도와 재현율의 조화 평균이 가장 높다는 것을 의미합니다.
- 또한, retrieval_recall 점수도 0.7로 가장 높아, 관련 문서를 많이 검색해냈음을 보여줍니다.
적절한 실행 시간:
- bge-m3 모델의 실행 시간은 0.21초로, 다른 모델들에 비해 빠른 편입니다. 이는 실시간 검색 시스템에서 중요한 요소입니다.
균형 잡힌 성능:
- bge-m3 모델은 검색 정밀도(retrieval_precision)에서도 0.23으로 가장 높은 점수를 기록했습니다. 이는 검색된 문서의 관련성이 높음을 의미합니다.
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.