Field Log · Entry
다국어·한국어 Embedding 학습과 평가 (8/14)
이번 글의 결론
- Multilingual은 여러 언어를 각각 처리하는 능력이고, cross-lingual은 서로 다른 언어의 query와 document를 직접 맞추는 능력입니다. 평균 점수 하나로 합치지 않습니다.
- 한국어는 조사·어미, 띄어쓰기 변이, 한영 혼용, 제품명·약어, 숫자·단위가 실제 hard case를 만듭니다. 번역 benchmark만으로 충분하지 않습니다.
- Parallel text는 언어 공간을 정렬하지만 검색 relevance를 모두 가르치지는 않습니다. Monolingual retrieval, bitext, cross-lingual QA를 섞습니다.
- 언어별 데이터 수에 비례한 sampling은 영어 같은 high-resource language가 학습을 지배하게 할 수 있습니다.
- Model 선택은
ko→ko,ko→en,en→ko, mixed query를 나눈 품질–latency–tokenizer cost matrix로 합니다.
앞 글의 domain adaptation을 한국어와 다국어 조건으로 확장합니다.
1. 네 개의 Retrieval 방향
| Query | Document | 예 | 평가 이름 |
|---|---|---|---|
| 한국어 | 한국어 | 사내 한국어 FAQ | ko→ko |
| 한국어 | 영어 | 한국어 질문으로 영문 API 문서 | ko→en |
| 영어 | 한국어 | 해외 팀이 한국 정책 검색 | en→ko |
| 혼합 | 혼합 | kubectl 롤백 방법 | code-mixed |
Cross-lingual model이 ko→en에 강해도 ko→ko domain jargon에 약할 수 있습니다. 방향별 matrix를 냅니다.
2. Shared Space를 학습하는 Signal
Parallel Sentence
"환불은 14일 이내 가능합니다."
↔ "Refunds are available within 14 days."
언어별 의미를 맞추지만 sentence translation similarity가 핵심입니다.
Cross-lingual Query–Passage
query_ko: "인증서 갱신 주기는?"
passage_en: "Certificates must be rotated every 90 days."
실제 retrieval 비대칭을 학습합니다.
Multilingual NLI·STS
Entailment·contradiction·semantic similarity를 가르칩니다. Answer-bearing relevance와 차이가 있습니다.
Comparable Documents
Wikipedia interlanguage link, 같은 제품의 localized manual처럼 정확한 문장 번역은 아니지만 topic을 공유합니다.
각 signal을 동일한 positive로 취급하지 않고 task tag·weight를 둡니다.
3. Language Sampling
언어 (l)의 example 수를 (n_l)이라 하면:
p(l) ∝ n_l^α
α=1: 원래 규모, high-resource 지배α=0: 언어별 균등, 작은 noisy dataset 과대 표집0<α<1: 절충
언어별 quality와 task diversity도 반영합니다. Row 수만으로 sampling을 정하지 않습니다.
4. Batch 구성
Monolingual Batch
같은 언어 안의 미세한 hard negative를 풍부하게 봅니다.
Cross-lingual Batch
번역·동일 의미가 다른 언어에 있을 때 space alignment를 배웁니다. Unlabeled translation이 false negative가 될 수 있습니다.
Mixed-language Batch
실제 corpus distribution과 가깝지만 language identity shortcut와 false-negative 관리가 어렵습니다.
추천 ablation:
A language-homogeneous batches
B 50% homogeneous + 50% cross-lingual
C fully mixed + duplicate/translation masking
5. 한국어 Tokenization 진단
모델의 tokenizer가 한국어를 지나치게 잘게 쪼개면 같은 max token에서 실질 context가 짧아집니다.
fertility(text) = number_of_tokens / number_of_whitespace_words
측정 slice:
- 일반 문장
- 조사·어미가 긴 문장
- 띄어쓰기 오류
- 영문 제품명+한국어 조사
- URL·path·code
- 날짜·버전·단위
- 한자·약어
tokenizer_report:
korean_general_p50: 1.8
korean_technical_p50: 2.6
english_technical_p50: 1.3
truncation_rate_ko: 0.14
truncation_rate_en: 0.05
같은 512 tokens가 같은 정보량이 아닙니다.
6. 한국어 Minimal Pair
Lexical overlap은 높지만 의미가 바뀌는 pair를 만듭니다.
"관리자만 삭제할 수 있다."
"관리자는 삭제할 수 없다."
"2026년 3월 이전 버전"
"2026년 3월 이후 버전"
"10MB 이하"
"10MB 이상"
"승인 없이 배포"
"승인 후 배포"
Topic similarity에는 가깝지만 policy retrieval에서는 강한 negative입니다. Evaluation label을 task에 맞춥니다.
7. 띄어쓰기·표기 변이
머신 러닝 / 머신러닝
로그 인 / 로그인
Kubernetes / 쿠버네티스 / k8s
v3.2 / 3.2 버전 / version 3.2
GPU 24 GB / 24GB GPU
Positive robustness set으로 만들되, entity가 다른 표기까지 무조건 positive로 만들지 않습니다.
8. Translation Benchmark의 함정
영어 query를 기계 번역해 한국어 test를 만들면:
- 번역체 문장이 실제 사용자보다 정형적
- 영어 원문의 ambiguity가 사라지거나 늘어남
- 한국 local entity·문화·업무 vocabulary가 없음
- model training에 원본 benchmark가 포함됐을 가능성
- 같은 translator style이 model에 유리할 수 있음
Translated set은 coverage 도구로 사용하고 native query set을 별도로 둡니다.
9. MIRACL·MMTEB를 어떻게 쓸까
MIRACL은 18개 언어의 retrieval dataset으로 multilingual retriever를 비교하는 공통 기준을 제공합니다. MMTEB는 500개가 넘는 task와 1,000개 이상 언어 범위를 설명하며 multilingual·code·long-document·instruction-following 평가를 확장했습니다.
공개 benchmark의 역할:
public multilingual benchmark → broad transfer / shortlist
native Korean benchmark → 실제 언어 현상
in-domain Korean benchmark → product decision
세 층을 대체 관계로 보지 않습니다.
10. Cross-lingual Metric Matrix
doc ko doc en doc mixed
query ko nDCG nDCG nDCG
query en nDCG nDCG nDCG
query mixed nDCG nDCG nDCG
추가 metric:
- language bias@k: relevant와 무관하게 query language 문서만 선호하는가
- translation consistency: 번역된 query의 top-k overlap
- bilingual hubness: 특정 언어 문서가 모든 query에 자주 뜨는가
- code-switch robustness
- tokenizer latency·tokens/input
11. Translation Consistency는 완전 일치를 요구하지 않는다
원 query (q_{ko})와 번역 (q_{en})의 top-k가 다를 수 있습니다. 서로 다른 relevant 문서가 존재할 수 있기 때문입니다.
평가:
top-k overlap
rank correlation on shared candidates
relevance metric for each direction
evidence-set equivalence
ID overlap가 낮아도 같은 사실을 지지하는 언어별 문서를 찾았다면 성공일 수 있습니다.
12. Multilingual Hard Negative
유형별 예:
- 같은 entity, 다른 policy version
- 번역은 비슷하지만 숫자가 다름
- 같은 제품명, 다른 국가 규정
- 한국어 query에 keyword가 겹치는 일본어/중국어 문서
- code token은 같지만 설명이 다른 언어
- 번역 duplicate인 실제 positive
마지막 유형은 negative에서 제거해야 합니다. Cross-lingual teacher와 bilingual human audit가 필요합니다.
13. Model Shortlist
연구 계열별로 고릅니다.
| 계열 | 확인할 특성 |
|---|---|
| multilingual E5 | query/passage prefix, context length |
| BGE-M3 | dense·sparse·multi-vector, 8K 입력 |
| mGTE | multilingual long-context efficiency |
| jina-embeddings-v3 | task LoRA, MRL dimension |
| Qwen3 Embedding | LLM backbone, instruction, 0.6B/4B/8B |
| EmbeddingGemma | sub-500M/on-device, supported languages |
표는 추천 순위가 아닙니다. License, hardware, official prompt, Korean eval을 통과한 model만 비교합니다.
14. 한국어 Evaluation Set 구성
korean_eval:
queries: 2500
sources:
native_real: 1200
native_curated: 700
translated: 300
adversarial_minimal_pairs: 300
directions:
ko_ko: 0.65
ko_en: 0.15
en_ko: 0.10
mixed: 0.10
slices:
- spacing_variation
- entity_transliteration
- negation
- number_version_date
- honorific_ellipsis
- code_mixed
- long_document
- no_answer
비율은 실제 traffic에 맞춥니다.
15. 공정한 Serving 비교
한국어 fertility가 높으면 tokens/s가 같아도 texts/s가 낮을 수 있습니다.
report both:
tokens/second
texts/second by language and length
p95 query latency
document indexing hours
API model은 request overhead와 rate limit, local model은 batching과 GPU memory를 포함합니다.
16. Release Gate
multilingual_gate:
ko_ko_ndcg_at_10: ">= baseline + 0.02"
ko_en_recall_at_20: ">= baseline"
en_ko_recall_at_20: ">= baseline"
number_negation_slice: ">= baseline"
translation_consistency_drop: "<= 0.03"
korean_p95_ms: "<= 35"
license: approved
Multilingual 평균 gain이 한국어 regression을 가리지 못하게 합니다.
스스로 확인하기
- Multilingual과 cross-lingual capability의 차이는 무엇인가?
- Parallel sentence만으로 answer-bearing retrieval을 완전히 학습하기 어려운 이유는 무엇인가?
- Language-balanced sampling에서
α=0도 위험할 수 있는 이유는 무엇인가? - 번역된 한국어 benchmark와 native query set을 분리해야 하는 이유는 무엇인가?
- Cross-lingual top-k ID가 다르더라도 둘 다 성공일 수 있는 경우는 무엇인가?
다음 글에서는 chunk-before-embed, late chunking, contextual document embedding, situated embedding과 multi-vector를 비교합니다.
참고자료
- Multilingual E5 Text Embeddings: A Technical Report
- MIRACL: A Multilingual Retrieval Dataset Covering 18 Diverse Languages
- MMTEB: Massive Multilingual Text Embedding Benchmark
- BGE M3-Embedding
- mGTE: Generalized Long-Context Text Representation and Reranking
- Recovering Gold from Black Sand: Multilingual Dense Passage Retrieval