목차
1. 문제 정의
2. 전체 파이프라인 개요
3. 주요 레시피1 : 다양한 문서 수집
4. 주요 레시피2 : 합성 쿼리 생성
5. 주요 레시피3 : 하드 네거티브 마이닝
6. 주요 레시피4 : 학습
7. 평가
8. GPU 인프라
9. 모델 사용하기
SionicAI는 EUREKA(Extremely Universal Robust Embedding for Knowledge Access) 프로젝트를 진행하고 있습니다. 이름 그대로, 어떤 언어·도메인·쿼리 형태에서도 지식에 닿게 해주는 보편적(universal)이고 견고한(robust) 임베딩을 지향합니다.
1. 문제 정의
검색 임베딩 모델은 쿼리를 관련 문서와 유사한 표현 공간에 매핑하는 것을 목표로 합니다. 그런데 언어와 도메인마다 요구 사항이 서로 다릅니다.
•
쿼리 스타일이 다르다: 어떤 쿼리는 짧은 쿼리 형식이고, 어떤 쿼리는 여러 문단을 종합해야 하는 분석형이기도 합니다.
•
문서 길이가 다르다: 한 문장짜리 답변부터, 수만 자짜리 장문(long document)까지 섞여 있습니다.
•
정답 위치가 다르다: 정답이 문서 서두에 있기도 하고, 본문 중간이나 끝부분에 있기도 합니다.
•
쿼리-문서 대응이 1:1이 아니다: 현실 검색에서는 한 쿼리에 매핑되는 문서가 여럿이고, 한 문서가 여러 쿼리로 매핑 되기도 합니다.
즉, 현실 세계에서 있음직한 여러 상황(정답 위치의 다양성, 쿼리-문서의 1:N·N:1 관계)을 학습 데이터가 담아내야 특정 상황에만 강한 모델이 아니라 어떠한 상황에서든 강한(robust) 모델이 나옵니다.
2. 전체 파이프라인 개요
전체 학습 파이프라인은 다음 여섯 단계로 이루어집니다. 데이터를 모으고(①), 그 문서에서 학습용 쿼리를 합성하고(②), 혼동하기 쉬운 오답을 캐낸 뒤(③), 더 강한 teacher의 점수를 붙여(④) student를 distillation으로 학습하고(⑤), 마지막으로 평가합니다(⑥).
[다양한 소스 코퍼스]
(FineWeb · HuggingFace · AIHub · 공개 도메인 데이터 …)
│ ① 데이터 수집 · 큐레이션
▼
[문서 풀] ──② 합성 쿼리 생성──► [(쿼리, 문서) 쌍]
│ ③ hard negative 마이닝
▼
[(쿼리, 문서, negative×K)]
│ ④ teacher score 부여 (두 teacher 결합)
▼
[teacher 점수가 붙은 학습셋]
│ ⑤ KL-div distillation
▼
[student 검색 모델]
│ ⑥ 평가
▼
[벤치마크 점수]
Markdown
복사
3. 주요 레시피 ①: 다양한 문서 수집
합성 쿼리를 만들려면 먼저 문서(코퍼스)가 필요합니다. 우리는 특정 한 곳에 종속되지 않도록, 여러 출처의 문서를 폭넓게 수집·큐레이션하여 학습용 문서 풀을 구성했습니다.
3.1 다중 소스 문서 수집
문서는 단일 데이터셋이 아니라 여러 공개 소스에서 폭넓게 수집했습니다. 웹 스케일 코퍼스(FineWeb 계열), HuggingFace의 공개 데이터셋, 한국어의 경우 AIHub 등 공공 데이터, 그리고 법률·보건·의료·금융·과학·코드 등 도메인 데이터를 수집했습니다.
3.2 학습·평가 분리를 통한 누출 방지
학습 소스와 평가 벤치마크가 겹치지 않도록, 수집 단계에서 test set에 등장하는 데이터를 학습 데이터에서 제외했습니다. 이 경계를 명확히 그어야 이후의 성능 향상이 실제 검색 능력에서 비롯된 것인지 벤치마크 암기에서 비롯된 것인지 명확히 구분됩니다.
4. 주요 레시피 ②: 합성 쿼리 생성
좋은 합성 쿼리는 문맥상 자연스럽고, 실제 사용자의 구체적인 검색 상황을 반영한 질문이어야 합니다. 합성 쿼리 생성에는 데이터 질을 최우선으로 두어 주로 GPT-5.5를 사용했습니다.
4.1 쿼리 다양성 확보
실제 사용자의 쿼리는 한 가지 형식이 아닙니다. 그래서 쿼리 다양성을 생성 단계의 핵심 목표로 두었습니다.
이렇게 해서 짧은 사실 쿼리(factoid), 여러 문단을 종합해야 하는 분석형 질의, 논평/리뷰형 질의, 자연어로 코드 를 찾는 코드 검색 질의 같은 도메인 특화 질의까지 서로 다른 형식의 쿼리를 폭넓게 생성했습니다. subset 특성에 맞는 쿼리 형식을 사용하였으며 쿼리 다양성을 위해 subset별 하나의 방식이 아닌 여러 방식 병용하였습니다. 따라서 학습 데이터가 특정 쿼리 형식에 편향되지 않으며 다양한 쿼리를 학습할 수 있도록 유도하였습니다.
4.2 Answer Position Bias를 고려한 학습 데이터 구성
쿼리 형식과 함께 통제한 또 하나의 변수는 정답 문장이 문서의 어디에 위치하여 있느냐입니다. 실제 사용자의 문서에서 정답이 항상 특정 위치에 오리라는 보장은 없습니다. 본문 중간, 결론부, 부록 어디에나 있을 수 있습니다.
그런데 검색 모델은 이러한 정답 위치에 대한 편향을 갖기 쉽습니다. "Is Position Bias in Dense Retrievers Built In—or Learned from Data?"[4]에 따르면, 일반적인 dense retriever는 쿼리의 정답에 해당하는 문장이 문서 뒤쪽에 위치할수록 검색 성능이 하락하는 position bias 문제를 겪습니다. 이 편향은 아키텍처도 어느정도 영향을 미치지만 주요 편향 요인은 학습 데이터에서 기인합니다. comsat은 이 발견에 근거해 학습 데이터의 정답 위치 분포를 명시적으로 제어했으며, 그 결과 답변이 문서의 어느 위치에 있든 해당 문서를 안정적으로 검색하도록 유도하였습니다. 정답 위치 분포를 명시적 변수로 두고, 정답이 문서의 앞/중/뒤에 고르게 분포하도록 합성 쿼리를 생성·선별했습니다. "정답은 문서 어디에나 있을 수 있다"는 현실 검색 상황을 학습 데이터에 그대로 담았습니다.
4.3 Multi-positive 데이터 구성: 1:N·N:1 대응 관계 반영
현실 검색에서 쿼리와 문서의 대응은 1:1이 아닐 수 있습니다.
•
1:N (one query, many positives): 하나의 쿼리에 여러 문서가 매핑된 경우입니다. 예를 들어 "연차 규정이 어떻게 되나요?"의 답은 취업규칙·인사 FAQ·복무 지침 여러 문서에 흩어져 있습니다.
•
N:1 (many queries, one positive): 하나의 문서가 여러 쿼리로 매핑된 경우입니다. 예를 들어 하나의 계약서 조항이 기간·해지·갱신에 관한 서로 다른 쿼리 모두의 근거가 됩니다.
그런데 통상적인 Retrieval model의 학습 데이터 구성은 쿼리당 정답 문서를 하나만 사용합니다. 다양한 산업군의 검색 벤치마크인 RTEB 리더보드 1위를 달성한 octen의 분석[5]도 이 multi-positive 라벨 보존을 핵심 요소로 꼽습니다. 그래서 우리는 기존의 단일-문서 구성을 변형하여, 한 쿼리의 여러 문서를 라벨링하였으며, 하나의 문서에 다양한 쿼리 형식의 데이터를 생성하여 데이터의 쿼리-문서 구성을 1:N·N:1로 다양하게 유지했습니다.
5. 주요 레시피 ③: 하드 네거티브 마이닝
5.1 Hard Negative의 필요성
Contrastive learning에서 모델은 positive를 negative보다 위로 올리는 법을 배웁니다. 이때 negative가 너무 쉬우면(전혀 상관없는 문서) 학습 신호가 없습니다. positive와 그럴듯하게 닮았지만 관련 없는 문서, 즉 hard negative가 검색 품질을 좌우합니다. 배치 안의 다른 샘플을 negative로 쓰는 in-batch negative만으로는 이러한 혼동하기 쉬운 negative를 충분히 확보하지 못합니다.
5.2 Hard Negative Mining Method : Positive-aware Mining
Positive-aware mining은 이와 달리, negative를 고를 때 그 쿼리와 매핑된 문서와의 유사도를 기준으로 hard negative를 선택하는 방식입니다.
1.
임베딩 검색으로 각 쿼리에 대해 유사도 상위 후보 문서를 뽑습니다.
2.
쿼리와 positive로 매핑된 문서와의 유사도를 기준선으로 임계값을 정하고, 이를 넘는 후보는 제외합니다.
3.
남은 후보의 상위에서 쿼리당 negative 15개를 확정합니다.
2번의 임계값을 수식으로 쓰면, 후보 문서 는 다음을 만족할 때만 hard negative로 채택됩니다.
즉, 쿼리와 후보 문서와의 유사도가 쿼리와 positive 유사도에서 margin을 뺀 값을 넘는 문서의 경우 제거합니다. 즉, 쿼리와 positive와의 유사도의 margin 값만큼 여유를 두고 그 이하에서 hard negative mining합니다. negative를 자체 점수의 고정 임계값이 아니라 그 쿼리의 positive 점수에 상대적으로 거르는 방법(positive-aware)을 취함으로써 보다 세밀하게 hard negative mining을 진행할 수 있었습니다.
6. 주요 레시피 ④: 학습
이제 (query, positive, negative×15)가 준비됐습니다. 남은 건 "positive를 negative보다 얼마나 위로 올려야 하는지"를 student에게 가르치는 것입니다. 우리는 그 기준을 더 강한 teacher 모델에게서 가져옵니다.
6.1 Scalar Teacher Score Precomputation
Teacher를 학습 루프 안에서 매번 실행하면 속도가 느리고 비용이 큽니다. 대신 학습 전에 teacher 점수를 미리 계산해 저장(precompute)했습니다. 저장하는 건 임베딩 벡터가 아니라, 각 (쿼리, 문서) 쌍에 대한 scalar 점수입니다.
•
장점: 학습 시 teacher를 메모리에 올릴 필요가 없어, student만 forward하면 됩니다.
•
저장 스키마: 쿼리 기준으로 positive 점수 + negative 점수 15개
6.2 KL Divergence–Based Distillation Loss
student는 각 쿼리에 대해 positive + K(negative) 후보의 점수 분포를 만들고, 이 분포를 teacher의 점수 분포에 맞추도록 학습합니다(KL divergence 기반 knowledge distillation[7]). 이때 학습 속도를 빠르게 하기 위해 in-batch negative는 제외하고, 쿼리별 자기 후보군 안에서만 분포를 맞춥니다. 이때, temperature(τ)로 분포의 뾰족함을 조절합니다.
수식으로 쓰면, 쿼리 q의 후보 집합 {positive p, negative n₁ … n_K}에 대해 다음 loss를 최소화합니다.
student 점수 , teacher 점수 라고 할 때,
Teacher의 점수 분포를 target으로 두고, student의 후보 점수 분포가 그에 가까워질수록 loss가 작아집니다.
6.3 Ablation Study on Loss Functions
대표적인 retrieval model distillation loss 목록
•
KL-div (listwise): 후보들 사이의 상대 순위 분포를 맞춤. (τ=분표의 뾰족함을 결정)
◦
τ에 따른 distribution 차이 그래프 예시
•
•
실험은 student·teacher·LR을 고정하고 loss만 바꿔 진행했습니다. 평가 지표는 내부 retrieval 종합 점수입니다.
Loss별 서로 다른 4개 학습 데이터에서 비교한 점수는 다음과 같습니다.
표 1. Loss별 최종 성능 (내부 retrieval 종합 점수)
학습 데이터 | KL-div (τ=0.05) | KL-div (τ=1.0) | Margin-MSE (hard-neg) | cosine-distillation |
데이터 A | 0.6216 | 0.5912 | 0.6035 | 0.5732 |
데이터 B | 0.6244 | 0.6050 | 0.6053 | - |
데이터 C | 0.6232 | 0.5935 | 0.6017 | - |
데이터 D | 0.6281 | 0.6148 | 0.6034 | - |
4개 데이터 전부에서 KL-div(τ=0.05)가 1위였습니다.
Cosine distillation은 데이터 A에서 한 번만 실험했습니다. cosine distillation 실험의 하락 원인은 이미 잘 정돈된 student의 embedding space를 teacher 임베딩 공간에 직접 맞추도록 강제하면서 기존 표현이 흐트러지기 때문인데, 자세한 메커니즘은 아래 loss별 작동 원리에서 다룹니다.
loss별 작동 원리
핵심 전제는 우리 student가 이미 잘 finetuning된 강한 검색 모델이라 자기만의 잘 정돈된 embedding space를 이미 갖고 있다는 점입니다.
•
cosine distillation: student 임베딩을 teacher 임베딩 공간에 직접 정렬합니다. jina-embeddings-v5[9]처럼 처음부터(from scratch) 학습할 땐 강력하지만, 이미 좋은 student에선 반대로 작용합니다. teacher와 차원을 맞추려 덧붙이는 linear projection은 작은 값으로 초기화되어 student의 기존 공간이 사실상 그대로 유지되는데, 그 상태에서 teacher 공간에 억지로 끌어당기면 잘 잡혀 있던 student의 표현이 흐트러집니다.
•
Margin-MSE: (positive − negative)의 절대 margin 값을 teacher와 동일하게 맞춥니다. 이 역시 절대값 정렬이므로 같은 이유로 student 공간을 왜곡하여 역효과를 냅니다.
•
KL-div: teacher와 student의 절대 점수가 달라도 무관하게, 후보들 사이의 상대적 순위 분포만 맞춥니다. student의 embedding space(절대 스케일)는 그대로 두고 순위 정보만 전달하므로, 이미 우수한 student를 훼손하지 않으면서 성능을 높입니다. (단, 온도 τ가 너무 크면 분포가 평탄해져 신호가 약해집니다. 표의 τ=1.0 사례가 이에 해당합니다.)
즉 "이미 강한 student + 상대 순위가 본질인 검색" 조합에서는, teacher의 절대 표현에 맞추는 cosine·MSE가 아니라 상대 순위 분포를 맞추는 KL-div가 정답이었습니다.
7. 평가
모든 점수는 NDCG@10(상위 10개 검색 결과의 랭킹 품질, 1.0이 최대)입니다.
7.1
한국어: MTEB retrieval ko v2 · 사내 OOD 벤치마크
공개 벤치마크: MTEB retrieval ko v2(9개 subset, 전체 코퍼스). MTEB 평가는 오픈웨이트 모델과 상용 API 모델로 나누어 비교했습니다. 먼저 오픈웨이트 임베딩 모델을 동일 채점 파이프라인으로 평가한 리더보드에서 comsat-embed-ko-8b가 평균 NDCG@10 0.7930으로 1위입니다. 상용 API 모델과의 비교는 뒤에서 따로 다룹니다.
표 2. 한국어 공개 벤치마크 오픈웨이트 상위 10개 모델 (MTEB retrieval ko v2 · 9개 subset 평균 NDCG@10 · 동일 채점 파이프라인)
순위 | 모델 | 개발 조직 | 평균 NDCG@10 |
1 | comsat-embed-ko-8b | Sionic AI | 0.7930 |
2 | Qwen3-Embedding-8B | Alibaba | 0.7825 |
3 | Qwen3-Embedding-4B | Alibaba | 0.7718 |
4 | Harrier-OSS-27B | Microsoft | 0.7669 |
5 | Arctic-embed-l-v2.0-ko | dragonkue | 0.7636 |
6 | F2LLM-v2-8B | CodeFuse | 0.7621 |
7 | KURE-v1 | 고려대 | 0.7603 |
8 | PIXIE-Rune-v1.5 | TelePIX | 0.7602 |
9 | F2LLM-v2-14B | CodeFuse | 0.7599 |
10 | Llama-Nemotron-embed | NVIDIA | 0.7579 |
comsat-embed-ko-8b: 베이스 모델 대비 전 subset 상회. 동일 베이스 모델(Qwen3-Embedding-8B, 무학습) 평균 0.7825 대비 +0.0105, 9개 subset 전부 상회 또는 동등했습니다.
중요한 것은 평균이 오른 방식입니다. 평균 향상은 일부 subset의 큰 상승이 다른 subset의 하락을 가리는 형태로도 만들어질 수 있습니다. 아래 그래프처럼 subset별로 베이스 모델(Qwen3-Embedding-8B)과 나란히 놓고 보면, comsat-embed-ko-8b는 9개 중 8개 subset에서 상승했고 나머지 1개(LawIRKo)도 −0.0007로 사실상 노이즈 수준입니다. 즉 하락으로 평균을 가린 subset이 없습니다. 특히 절대값이 낮은 어려운 subset(MLDR +0.0147, MIRACL +0.0181)에서도 상승 폭이 유지됩니다.
모델 크기 축으로 함께 보면 이 1위의 의미가 더 분명해집니다. 아래 산점도에서 comsat-embed-ko-8b는 같은 8B급은 물론, 3배 이상 큰 27B 모델(Harrier-OSS-27B, 0.7669)보다도 높은 점수를 기록해, 크기 대비 효율 면에서 가장 좋은 지점에 있습니다.
오픈웨이트 모델뿐 아니라 글로벌 상용(closed) 임베딩 API와의 비교에서도 1위입니다. 위 9개 subset을 그대로 쓰되 이를 모두 평가한 상용 API와 나란히 놓고 보면(OpenAI text-embedding-3-large는 MIRACL·MrTidy를 평가하지 않아 9개 비교가 불가능해 제외), comsat-embed-ko-8b가 0.7930으로 Solar-large(0.7674)·Gemini-Emb-2(0.7522)·Cohere Embed-v4.0(0.7521)·Gemini-Emb-001(0.7517)을 모두 앞섰습니다. 리더보드와 같은 9개 subset 기준이라 comsat 값은 위 표의 0.7930과 동일합니다.
사내 OOD 벤치마크(17개 도메인). 공개 벤치마크만으로는 "학습이 그 벤치에만 특화된 것 아닌가"라는 질문에 답할 수 없습니다. 그래서 학습 데이터와 겹치지 않는 사내 out-of-distribution(OOD) 벤치마크를 17개 도메인(법률·의료·공공·금융·상거래·연구 보고서 등, 도메인별 chunk 128~2048 평균 NDCG@10)으로 구성해 comsat-embed-ko-8b를 베이스 모델과 비교했습니다.
•
평균 0.7237 vs 베이스 모델 0.7148로, 검색 성능 향상이 OOD에서도 재현됩니다.
베이스 모델과의 비교를 넘어, 공개 모델과 상용 API 모델을 한자리에 놓고 같은 OOD 벤치마크에서 겨루어도 comsat-embed-ko-8b가 1위입니다.
공개 벤치마크와 OOD를 합쳐 보면 일관된 그림이 나옵니다. 특정 subset에 몰아주고 다른 subset을 희생해 평균을 끌어올린 것이 아니라, 전 영역이 고르게 오르는 균형 잡힌 향상입니다. 우리는 이것이 정답 위치 다양화 1:N·N:1 구성처럼 특정 벤치가 아닌 현실 검색의 다양한 상황 자체를 학습 데이터에 반영한 설계의 결과라고 해석합니다.
7.2
일본어: JMTEB v2 · 사내 OOD 벤치마크
공개 벤치마크: JMTEB v2(11개 태스크). 일본어는 용도에 따라 두 모델을 만들었습니다. 최고 성능을 겨냥한 comsat-embed-ja-8b(한국어와 동일한 8B decoder 계열, 베이스 모델=Qwen3-Embedding-8B)와, 경량 배포를 겨냥한 comsat-embed-ja-0.3b(0.3B encoder)입니다. comsat-embed-ja-8b와 comsat-embed-ja-0.3b 두 모델 모두 동일한 파이프라인으로 학습했으며, 한국어와 마찬가지로 Open 모델 리더보드에서 8B가 전체 1위(0.8133), 0.3B가 전체 5위(0.7785)입니다. 상용 API 모델과의 비교는 뒤에서 따로 다룹니다.
표 3. 일본어 공개 벤치마크 오픈웨이트 상위 10개 모델 (JMTEB v2 · 11개 태스크 평균 NDCG@10 · 동일 채점 파이프라인)
순위 | 모델 | 개발 조직 | 평균 NDCG@10 |
1 | comsat-embed-ja-8b | Sionic AI | 0.8133 |
2 | F2LLM-v2-14B | CodeFuse | 0.7965 |
3 | Qwen3-Embedding-8B | Alibaba | 0.7924 |
4 | F2LLM-v2-8B | CodeFuse | 0.7855 |
5 | comsat-embed-ja-0.3b | Sionic AI | 0.7785 |
6 | Qwen3-Embedding-4B | Alibaba | 0.7779 |
7 | F2LLM-v2-4B | CodeFuse | 0.7705 |
8 | Qwen3-VL-Embedding-8B | Alibaba | 0.7702 |
9 | sarashina-embedding-v2-1b | SB Intuitions | 0.7659 |
10 | ruri-v3-130m | 나고야대 | 0.7641 |
comsat-embed-ja-8b: JMTEB 전체 1위. JMTEB v2 11개 태스크 평균 NDCG@10 0.8133으로 2위(F2LLM-v2-14B)와 0.015점 이상 차이를 보입니다.
comsat-embed-ja-0.3b: 공개 소형(≤4B) 1위. 0.3B(310M)이라는 작은 크기로 F2LLM-v2-14B·Qwen3-Embedding-8B 등 자기보다 10배 이상 큰 모델들 바로 뒤(전체 5위)에 자리하며, 공개된 소형(≤4B) 모델 중에서는 1위입니다.
모델 크기 축의 산점도로 보면, 8B는 최상단에, 0.3B는 자기보다 10~40배 큰 모델들과 같은 성능대에 위치합니다. 크기 대비 효율이 두 모델 모두 앞서 있습니다.
한국어와 마찬가지로 글로벌 상용(closed) 임베딩 API와의 비교에서도 1위입니다. API 모델들이 평가되지 않은 MIRACL·MrTidy를 제외한 공통 9개 태스크 평균(NDCG@10, 위 11개 평균과는 태스크 구성이 달라 절대값 기준이 다름)에서 comsat-embed-ja-8b가 0.8399로, Gemini-Emb-001(0.7991)·Gemini-Emb-2(0.7893)·Cohere Embed-v4.0(0.7805)·OpenAI text-emb-3-large(0.7459)를 모두 앞섰습니다.
사내 OOD 벤치마크(17개 도메인). 한국어와 같은 방식으로, 학습 데이터와 겹치지 않는 17개 도메인(학술·공공·금융·제조·IT·기업 IR 등) OOD 벤치마크에서 comsat-embed-ja-8b를 베이스 모델과 비교했습니다. 17개 모든 도메인에서 베이스 모델 대비 성능이 향상된 것을 알 수 있습니다.
•
공개 모델과 상용 API 모델을 한자리에 놓고 같은 벤치마크에서 비교해도 1위입니다(Qwen3-8B 0.7394, Gemini-Emb-001 0.7219(API), Cohere Embed-v4.0 0.7181(API), Arctic-l-v2.0 0.7136, EmbeddingGemma-300m 0.7090, bge-m3 0.6845).
7.3 성능 기여 요인
1.
현실 분포를 반영한 데이터 구성
•
다양한 소스에서 문서 데이터를 수집하였습니다.
•
문서에 적합한 다양한 합성 쿼리를 생성하였습니다.
•
정답 위치를 다양하게 고려하였습니다.
•
쿼리와 문서의 대응이 1:1이 아닌 1:N·N:1 로 다양하게 구성하였습니다.
2.
Hard Negative Mining
•
Positive aware한 방식으로 hard negative mining을 진행하여 원하는 난이도의 네거티브를 선별할 수 있었습니다.
8. GPU 인프라: NVIDIA B300 64장 (8노드 × 8)
한 개 노드의 GPU 구성
comsat-embed 모델들은 NVIDIA B300 GPU 64장(노드당 8장 × 8노드)에서 학습했습니다. 8B 모델의 8192 토큰 장문 학습과 대규모 teacher 점수 precompute까지 무리 없이 소화해 준 덕분에 데이터 구성 → 하드네거티브 마이닝 → distillation의 실험 사이클을 빠르게 반복할 수 있었습니다.
9. 모델 사용하기
모델은 HuggingFace에 공개되어 있습니다. 본문에서 comsat-embed-ko-8b 등으로 표기한 모델의 실제 repo는 아래와 같으며, 현재 preview 버전으로 공개되어 있습니다.
표 4. 공개 모델 스펙 (HuggingFace 공개 · 라이선스 CC-BY-NC-4.0)
모델 | 언어 | 파라미터 | 아키텍처 / pooling | 임베딩 차원 | 최대 길이 | 쿼리/문서 prefix 처리 |
sionic-ai/comsat-embed-ko-8b-preview | 한국어 | 8B | decoder / last-token | 4096 | 8192 | 쿼리에 query prefix, 문서는 prefix 없음 |
sionic-ai/comsat-embed-ja-8b-preview | 일본어 | 8B | decoder / last-token | 4096 | 8192 | 쿼리에 query prefix, 문서는 prefix 없음 |
sionic-ai/comsat-embed-ja-0.3b-preview | 일본어 | 0.3B(310M) | encoder / mean | 768 | 8192 | 쿼리/문서 각 prefix 사용
検索クエリ: / 検索文書: |
모든 임베딩은 cosine 유사도로 비교합니다.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sionic-ai/comsat-embed-ko-8b-preview")
queries = ["연차 휴가는 며칠까지 사용할 수 있나요?"]
documents = [
"제60조(연차 유급휴가) ① 사용자는 1년간 80퍼센트 이상 출근한 근로자에게 15일의 유급휴가를 주어야 한다. ...",
"제74조(임산부의 보호) ① 사용자는 임신 중의 여성에게 출산 전과 출산 후를 통하여 90일의 출산전후휴가를 주어야 한다. ...",
]
query_emb = model.encode(queries, prompt_name="query") # 쿼리는 반드시 query prefix 적용
doc_emb = model.encode(documents) # 문서는 prefix 없음
similarity = model.similarity(query_emb, doc_emb)
Python
복사
EUREKA
이 글은 EUREKA(Extremely Universal Robust Embedding for Knowledge Access) — 어떤 언어·도메인·쿼리 형태에서도 지식에 가 닿는, 보편적이고 견고한 임베딩 — 라는 목표에서 출발했습니다. 그 목표를 향해 우리는 세상의 문서를 폭넓게 모으고(주요 레시피 ①), 사용자가 던질 법한 쿼리를 생성하고(주요 레시피 ②), 헷갈리기 쉬운 오답을 캐내(주요 레시피 ③), 더 강한 teacher의 순위 감각을 student에게 distillation으로 옮겼습니다(주요 레시피 ④). 그렇게 완성된 comsat-embed는 한국어·일본어 검색 벤치마크에서 1위로 그 목표에 한 걸음 다가섰습니다.
아직 preview이고 갈 길도 남았지만, 방향은 분명합니다. 그 방향은 방대한 문서 더미 어딘가에 숨어 있는 바로 그 문서를, comsat의 스캔으로 정확히 비춰 내는 것입니다.
참고문헌
[2]: Lee et al., Gecko: Versatile Text Embeddings Distilled from Large Language Models, 2024. arXiv:2403.20327
[3]: Qwen Team, Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models, 2025. arXiv:2506.05176
[4]: Yu et al., Is Position Bias in Dense Retrievers Built In—or Learned from Data?, 2026. arXiv:2605.26578
[6]: Moreira et al., NV-Retriever: Improving text embedding models with effective hard-negative mining, 2024. arXiv:2407.15831
[8]: Hofstätter et al., Improving Efficient Neural Ranking Models with Cross-Architecture Knowledge Distillation, 2020. arXiv:2010.02666
[9]: Akram et al. (Jina AI), jina-embeddings-v5-text: Task-Targeted Embedding Distillation, 2026. arXiv:2602.15547
















