pip install upstage-embedding
from upstage_embedding import UpstageEmbedding
model = UpstageEmbedding(model_name="solar-embedding-1-large")
text = "안녕하세요. 오늘 날씨가 좋네요."
embedding_vector = model.encode(text)
print(embedding_vector)
sentences = ["오늘 날씨가 좋네요.", "비가 올 것 같아요.", "저는 커피를 좋아해요."]
embedding_vectors = model.encode(sentences)
for i, vec in enumerate(embedding_vectors):
print(f"문장 {i+1}: {sentences[i]}")
print(f"벡터: {vec}\n")
from sklearn.metrics.pairwise import cosine_similarity
text1 = "오늘 날씨가 맑아요."
text2 = "비가 올 것 같아요."
vec1 = model.encode(text1)
vec2 = model.encode(text2)
similarity = cosine_similarity([vec1], [vec2])
print(f"두 문장의 유사도: {similarity[0][0]}")
| 기능 | 설명 |
|---|---|
encode(text) | 텍스트를 벡터로 변환 |
encode([text1, text2, ...]) | 여러 개의 문장을 한 번에 변환 |
cosine_similarity([vec1], [vec2]) | 두 문장의 유사도 계산 |
✅ 다양한 언어 지원 (한국어 포함)
✅ 고성능 모델 (대규모 데이터 적합)
✅ 손쉬운 사용 (API 호출 방식으로 간편)
임베딩 벡터는 보통 다음과 같은 특성을 가집니다.
| 특징 | 설명 |
|---|---|
| 고차원 벡터 | 768차원, 1024차원 등 모델에 따라 차원이 다름 |
| 의미적 유사성 | 같은 의미의 문장일수록 벡터 간 거리가 짧음 |
| 문법적 정보 포함 | 시제, 인칭, 부정/긍정 여부도 반영 가능 |
"비가 온다" → [0.12, -0.03, 0.87, ...]
"오늘 비가 올 것 같아요" → [0.11, -0.02, 0.85, ...]
| 모델명 | 언어 지원 | 성능 (정확도) | 속도 | 특이사항 |
|---|---|---|---|---|
| solar-embedding-1-small | 다국어 | 보통 | 빠름 | 경량화 모델 |
| solar-embedding-1-large | 다국어 | 높음 | 보통 | Upstage 대표 모델 |
| openai-embedding-ada | 다국어 | 매우 높음 | 보통 | 비용 높음 |
| ko-sbert | 한국어 | 높음 | 빠름 | 한국어 전용 |
비교 포인트
Upstage 임베딩은
활용 분야