sentence-transformers에서 자주 쓰이는 모델들을 정리
sentence-transformers에서 자주 쓰이는 모델들을 정리했습니다. 한국어 처리 여부를 기준으로 나눴어요.
| 모델명 | 벡터 차원 | 최대 토큰 | 특징 |
|---|---|---|---|
jhgan/ko-sroberta-multitask | 768 | 128 | 한국어 STS/NLI 데이터로 학습, 문장 유사도 태스크에 최적화. 가장 널리 쓰이는 한국어 임베딩 모델 |
jhgan/ko-sroberta-nli | 768 | 128 | NLI(자연어 추론) 데이터 위주로 학습, 문장 함의 관계 파악에 강함 |
BM-K/KoSimCSE-roberta | 768 | 128 | SimCSE 방식(대조 학습)으로 학습, 문장 유사도 성능이 좋음 |
snunlp/KR-SBERT-V40K-klueNLI-augSTS | 768 | 128 | KLUE 데이터 기반, 서울대 자연어처리 연구실 배포 |
BM-K/KoDiffCSE-roberta | 768 | 128 | Diff-CSE 방식, 미묘한 의미 차이 구분에 강점 |
| 모델명 | 벡터 차원 | 최대 토큰 | 특징 |
|---|---|---|---|
intfloat/multilingual-e5-large | 1024 | 512 | 100개 이상 언어 지원, 검색/RAG 성능 우수. query/passage 접두사 필요 (query: , passage: ) |
intfloat/multilingual-e5-base | 768 | 512 | large의 경량 버전, 속도와 성능 균형 |
intfloat/multilingual-e5-small | 384 | 512 | 가장 가벼움, 빠른 처리 필요할 때 |
sentence-transformers/paraphrase-multilingial-mpnet-base-v2 | 768 | 128 | 50개 언어 지원, 패러프레이즈 탐지에 강함 |
BAAI/bge-m3 | 1024 | 8192 | 다국어+장문 지원, dense/sparse/multi-vector 검색 동시 지원 (하이브리드 검색용) |
sentence-transformers/distiluse-base-multilingual-cased-v2 | 512 | 128 | 가볍고 빠름, 다국어 지원하지만 성능은 위 모델들보다 낮음 |
| 모델명 | 벡터 차원 | 최대 토큰 | 특징 |
|---|---|---|---|
sentence-transformers/all-MiniLM-L6-v2 | 384 | 256 | 가장 유명한 경량 모델, 속도 매우 빠름, 영어 전용에 가까움 |
sentence-transformers/all-mpnet-base-v2 | 768 | 384 | 영어 문장 임베딩 품질이 가장 좋다고 알려진 모델 중 하나 |
선택 가이드
jhgan/ko-sroberta-multitask 또는 BM-K/KoSimCSE-roberta가 무난한 첫 선택intfloat/multilingual-e5-large 또는 BAAI/bge-m3multilingual-e5-small 또는 distiluse-base-multilingual-cased-v2bge-m3가 유일하게 긴 컨텍스트 지원참고로 e5 계열 모델은 입력 앞에 "query: " 또는 "passage: " 접두사를 붙여야 성능이 제대로 나오니, 사용 시 주의하세요.
all-MiniLM-L6-v2는 sentence-transformers 생태계에서 가장 유명하고 가장 많이 다운로드되는 모델이지만, 한국어 작업에는 추천하지 않습니다. 이유를 자세히 설명드릴게요.
| 항목 | 내용 |
|---|---|
| 벡터 차원 | 384 |
| 최대 토큰 | 256 |
| 모델 크기 | 약 80MB (매우 가벼움) |
| 기반 구조 | MiniLM (BERT를 경량화한 구조), 6개 레이어 |
| 학습 데이터 | 10억 개 이상의 영어 문장 쌍 (Reddit, S2ORC, WikiAnswers 등) |
| 임베딩 속도 | 매우 빠름 (CPU에서도 실시간 처리 가능한 수준) |
한국어가 조금이라도 섞인 프로젝트라면 이전에 말씀드린 jhgan/ko-sroberta-multitask나 intfloat/multilingual-e5-small(384차원으로 크기도 비슷함)을 쓰는 게 훨씬 나은 결과를 줄 겁니다.