본문 바로가기
C.W.K.
Stream
Lesson 05 of 06 · published

토큰, 입력 한도, 잘림

~20 min · tokens, models, gotchas

Level 0Scout
0 XP0/41 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

임베딩 모델에는 넘을 수 없는 토큰 한도가 있어

임베딩 모델은 글자 수가 아니라 토큰 수를 기준으로 입력을 받아. 토큰은 모델의 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는 한도를 넘은 입력의 뒤를 아무 말 없이 잘라내. 오류도 내지 않고 텍스트 앞부분만 임베딩한 뒤 나머지를 버리지. 벡터는 멀쩡해 보이고 검색도 돌아가는 듯하지만, 긴 문서의 뒷부분은 이미 사라진 상태야.

조용한 잘림을 막는 순서

  1. 보내기 전에 해당 모델의 tokenizer로 토큰 수를 세.
  2. tokens > limit이면 다음 트랙에서 배울 청킹을 적용하거나 긴 입력을 받는 모델로 바꿔.
  3. 자료를 넣은 뒤 청크 길이 분포를 기록해. P99가 한도에 정확히 붙어 있다면 어딘가에서 데이터를 잃고 있을 가능성이 커.

Code

임베딩 전 토큰 수 카운트 (OpenAI)·python
import tiktoken

enc = tiktoken.encoding_for_model('text-embedding-3-large')

def count_tokens(text: str) -> int:
    return len(enc.encode(text))

long_text = open('white_paper.md').read()
print(count_tokens(long_text))   # 8192 넘으면 청킹 필요
HuggingFace 모델 토큰 카운트·python
from transformers import AutoTokenizer

tok = AutoTokenizer.from_pretrained('BAAI/bge-m3')
print(len(tok.encode(long_text)))   # 실제 모델 tokenizer 사용

External links

Exercise

자료 모음에서 가장 큰 문서 5개를 골라 임베딩 모델의 실제 tokenizer로 토큰 수를 세. 한도를 넘는 문서가 몇 개인지 확인하고, 그 분포를 바탕으로 청킹 크기를 정해. 짐작으로 정하지 마.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.