티스토리 뷰
✅ 1. KoSimCSE란?
- SimCSE 구조 + 한국어 사전학습 모델(RoBERTa 등) 조합
- 한국어 문장 간 의미 유사도 계산, 임베딩, 벡터 DB 구축에 적합
- 대표 개발자: BM-K 팀
📦 대표 모델:
- BM-K/KoSimCSE-roberta
- BM-K/KoSimCSE-bert
- BM-K/KoSimCSE-klue-roberta-base
✅ 2. 설치 방법
| # 기본 라이브러리 설치 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # GPU용 pip install transformers pip install sentence-transformers |
✅ GPU 없이 CPU에서도 가능하지만, GPU 권장 (RTX 3060 이상)
✅ PyTorch 설치 시 CUDA 버전 꼭 확인 (cu118 = CUDA 11.8)
✅ 3. 기본 사용법
| # 파이썬 from sentence_transformers import SentenceTransformer model = SentenceTransformer("BM-K/KoSimCSE-roberta") sentences = ["오늘 날씨 어때?", "비가 올 것 같아."] embeddings = model.encode(sentences) print(embeddings[0]) # 첫 번째 문장의 임베딩 벡터 |
✅ 4. 최적화 구성 (성능 & 속도)
🔹 A. GPU 사용 설정
| # 파이썬 import torch device = "cuda" if torch.cuda.is_available() else "cpu" model = SentenceTransformer("BM-K/KoSimCSE-roberta", device=device) |
🔹 B. Batch 처리 (속도 향상 핵심)
| # 파이썬 texts = ["문장1", "문장2", ...] # 수백/수천 문장 embeds = model.encode(texts, batch_size=64, show_progress_bar=True) |
- 기본 batch_size는 32 ~ 64 추천
- GPU 메모리에 따라 조정
🔹 C. ONNX 모델로 추론 속도 2배 향상 (선택 사항)
| # Bash pip install optimum onnxruntime |
| # 파이썬 from transformers import AutoTokenizer, AutoModel from optimum.onnxruntime import ORTModelForFeatureExtraction model_id = "BM-K/KoSimCSE-roberta" tokenizer = AutoTokenizer.from_pretrained(model_id) model = ORTModelForFeatureExtraction.from_pretrained(model_id, export=True) |
✅ HuggingFace → ONNX 자동 변환 → onnxruntime으로 추론
🔹 D. FP16 (반정밀도 연산, GPU 최적화)
KoSimCSE는 HuggingFace 모델 기반이므로 accelerate, transformers에서 fp16 지원
| # 파이썬 model = SentenceTransformer(model_id, device="cuda") model.half() # fp16 변환 |
단, 일부 연산 정확도 저하 있을 수 있음 (실제 테스트 필요)
✅ 5. 벡터 유사도 비교 (코사인 유사도)
| # 파이썬 from sklearn.metrics.pairwise import cosine_similarity sim_score = cosine_similarity([embeddings[0]], [embeddings[1]]) print(sim_score[0][0]) # 유사도: 1에 가까울수록 유사 |
✅ 6. 실무 적용 구조 (RAG 기반 예시)

✅ 7. 성능 팁 요약
| 항목 | 최적화 팁 |
| 속도 | GPU 사용 (cuda), batch_size=64, FP16 |
| 경량화 | BM-K/KoSimCSE-klue-roberta-small (작은 모델) |
| 정확도 | BM-K/KoSimCSE-roberta (성능 최고), bge-small-ko (검색 특화) |
| 유사도 검색 | cosine_similarity, FAISS |
| 대량 문서 처리 | multiprocessing, joblib, langchain.chunk 병렬 처리 |
📂 자주 쓰는 모델 요약
| 모델 ID설명 | 설 명 |
| BM-K/KoSimCSE-roberta | KoSimCSE 최고 성능 |
| BM-K/KoSimCSE-klue-roberta-small | 경량 버전, 빠름 |
| snunlp/KR-SBERT-V40K-klueNLI-augSTS | STS + NLI 기반 대용량 학습 |
| bge-small-ko | 검색 최적화, 빠르고 정확 |
📘 KoSimCSE 참고 문서
- GitHub: https://github.com/BM-K/KoSimCSE
- HuggingFace: https://huggingface.co/BM-K
- 논문: SimCSE (arXiv)
🎁 마무리 요약
| 항목내용 | 내 용 |
| 최적 모델 | BM-K/KoSimCSE-roberta |
| 설치 | sentence-transformers로 간편 설치 |
| 속도 향상 | GPU 사용 + batch 처리 + ONNX 변환 |
| 실무 사용 | 벡터 DB(FAISS 등)와 결합하여 문서 검색 + LLM 연결 |
| 추천 환경 | RTX 3060 이상 + batch_size=64 이상 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- RAG
- AWS
- poetry
- n8n
- llm
- Chroma
- 5.4.0.1072
- CVE 취약점 점검
- KoSimCSE
- MCP
- open ai
- llama
- Weaviate
- 임베딩
- VectorStore
- 오라클
- 쿠버네티스
- MSA
- faiss
- 테라폼
- RangChain
- Ai
- 버쳐박스
- chunking
- kiwipiepy
- K8s
- embedding
- 코로나19
- Qdrant
- Oracle
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
글 보관함
