Cohere Embed
Cohere Embed
Cohere의 다국어 임베딩 모델. 100개 이상 언어 지원.
Cohere Embed
Cohere의 다국어 임베딩 모델. 100개 이상 언어 지원.
Cohere Embed는 Cohere에서 개발한 다국어 텍스트 임베딩 모델로, 텍스트를 고차원 벡터로 변환하여 시맨틱 검색, 클러스터링, 분류 등에 활용합니다. 최신 모델인 embed-v3는 1024차원 벡터를 생성하며, 100개 이상의 언어를 단일 모델로 지원합니다.
2021년 설립된 Cohere는 Google Brain 출신 연구진이 창업한 기업으로, 기업용 LLM 솔루션에 특화되어 있습니다. Embed 모델은 MTEB 벤치마크에서 상위권 성능을 기록하며, 특히 비영어권 언어에서 OpenAI ada-002 대비 우수한 성능을 보여줍니다.
Cohere Embed의 핵심 기술은 Contrastive Learning 기반 훈련으로, 의미적으로 유사한 텍스트는 가깝게, 다른 텍스트는 멀리 배치되도록 학습합니다. input_type 파라미터로 search_document, search_query, classification, clustering 등 용도에 맞는 최적화가 가능합니다.
실무에서 Cohere Embed는 RAG(검색 증강 생성) 파이프라인의 검색 단계, 문서 중복 탐지, 고객 문의 자동 분류, 다국어 시맨틱 검색 등에 널리 활용됩니다. AWS Bedrock, Azure, Google Cloud에서 모두 사용 가능하며, 초당 수천 건의 임베딩 요청을 처리할 수 있어 대규모 서비스에 적합합니다.
import cohere
import numpy as np
# Cohere 클라이언트 초기화
co = cohere.Client("your-api-key")
# 문서 임베딩 생성
documents = [
"인공지능은 인간의 학습능력을 모방한 기술입니다",
"머신러닝은 데이터에서 패턴을 학습합니다",
"오늘 날씨가 정말 좋네요"
]
doc_embeddings = co.embed(
texts=documents,
model="embed-multilingual-v3.0",
input_type="search_document" # 문서용 최적화
).embeddings
# 검색 쿼리 임베딩
query = "AI 기술이란 무엇인가?"
query_embedding = co.embed(
texts=[query],
model="embed-multilingual-v3.0",
input_type="search_query" # 쿼리용 최적화
).embeddings[0]
# 코사인 유사도 계산으로 가장 관련 높은 문서 찾기
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
similarities = [cosine_similarity(query_embedding, doc) for doc in doc_embeddings]
best_match_idx = np.argmax(similarities)
print(f"가장 관련 높은 문서: {documents[best_match_idx]}")
print(f"유사도: {similarities[best_match_idx]:.4f}")
"검색 단계 임베딩은 Cohere embed-v3로 가겠습니다. 우리 서비스가 한국어, 영어, 일본어 다국어 지원이라서 다국어 임베딩이 필수인데, Cohere가 이 부분에서 OpenAI보다 성능이 좋아요."
"Cohere Embed의 input_type 파라미터가 중요합니다. search_document와 search_query를 구분해서 사용해야 검색 성능이 최적화됩니다. 같은 모델이어도 용도에 따라 임베딩 공간이 다르게 조정되거든요."
"임베딩 비용이 너무 나오면 Cohere의 compress 옵션 써보세요. 1024차원을 256차원으로 압축해도 대부분의 태스크에서 성능 손실이 5% 미만입니다. 벡터 DB 저장 비용도 절감되고요."
문서 인덱싱 시 search_document, 검색 시 search_query를 사용해야 합니다. 혼용하면 검색 품질이 크게 저하되므로 파이프라인 전체에서 일관성을 유지하세요.
embed-v3 모델은 입력당 최대 512 토큰을 지원합니다. 긴 문서는 청킹(chunking)이 필요하며, 청크 크기와 오버랩 설정이 검색 품질에 큰 영향을 미칩니다.
API 호출당 최대 96개 텍스트를 배치 처리할 수 있습니다. 개별 호출보다 배치 처리가 비용과 속도 모두 효율적이므로, 대량 인덱싱 시 반드시 활용하세요.