임베딩 모델에는 넘을 수 없는 토큰 한도가 있어
임베딩 모델은 글자 수가 아니라 토큰 수를 기준으로 입력을 받아. 토큰은 모델의 tokenizer가 나눈 subword 조각이야. 영어는 대략 토큰 하나에 0.75단어지만 한국어, 일본어, 코드는 훨씬 촘촘하게 잘릴 수 있어.
2026년에 흔히 보는 한도는 이래:
- OpenAI text-embedding-3-large: 8,192토큰
- Voyage voyage-3-large: 32,000토큰
- BGE-M3: 8,192토큰
- BGE-small-en-v1.5: 512토큰 — 여기서 자주 발이 걸려
- all-MiniLM-L6-v2: 256토큰
한도를 넘으면 뒤가 사라져
거의 모든 API는 한도를 넘은 입력의 뒤를 아무 말 없이 잘라내. 오류도 내지 않고 텍스트 앞부분만 임베딩한 뒤 나머지를 버리지. 벡터는 멀쩡해 보이고 검색도 돌아가는 듯하지만, 긴 문서의 뒷부분은 이미 사라진 상태야.
조용한 잘림을 막는 순서
- 보내기 전에 해당 모델의 tokenizer로 토큰 수를 세.
tokens > limit이면 다음 트랙에서 배울 청킹을 적용하거나 긴 입력을 받는 모델로 바꿔.- 자료를 넣은 뒤 청크 길이 분포를 기록해. P99가 한도에 정확히 붙어 있다면 어딘가에서 데이터를 잃고 있을 가능성이 커.