1. 텍스트 → 토큰 (Tokenizer 단계)
- **토크나이저(tokenizer)**는 “문장을 모델이 이해할 수 있는 단위(토큰)”로 쪼개는 역할을 합니다.
- 예를 들어:
"로봇이 움직인다."
→ ["로", "봇", "이", " ", "움", "직", "인", "다", "."]
- 이 각각이 **토큰(token)**입니다.
- 영어의 경우
"robot is moving."
→["robot", " is", " moving", "."]
- 즉, 단어 또는 단어의 조각 단위로 분리됩니다.
✅ 핵심:
토크나이저는 “숫자 인덱스 벡터”를 만드는 역할.
실제로 모델에 들어갈 때는 각 토큰이 정수 ID로 변환됩니다.
예시:
"robot" → [6884]
"moving" → [15789]
🧠 2. 토큰 → 임베딩 벡터 (Embedding 단계)
- 임베딩 모델(
text-embedding-3-small
)은 이 토큰 시퀀스를 입력받아 - **각 토큰의 의미적 관계를 반영한 고정 길이 벡터(=1536차원)**로 변환합니다.
- 즉, 모델은 입력 문장의 모든 토큰을 한 번에 읽고,
- 그 의미를 요약해 1536차원의 실수 벡터로 압축합니다.
예시 (개념적 표현):
"robot is moving."
→ [0.021, -0.158, 0.334, ..., 0.045] # 길이 1536
⚙️ 이 1536차원은 “한 문서(또는 문장, 청크)를 하나의 점으로 표현하는 공간의 크기”입니다.
즉, 토크나이저가 단어 단위로 분리한 걸 벡터 공간의 한 점으로 매핑한 것.
🧮 3. 임베딩 벡터의 의미
- 이 벡터는 “의미 공간(semantic space)”에서의 좌표로,
- 비슷한 의미의 문장은 서로 가까운 거리로 위치하게 됩니다.
- 예:
"robot is moving" → 벡터 A
"machine is walking" → 벡터 B
- → 두 벡터의 코사인 유사도(cosine similarity)가 높음 (≈ 의미가 비슷함).
🔁 정리: 개념의 분리
구분 | 역할 | 결과물 | 예시 |
Tokenizer | 문장을 토큰으로 쪼갬 | 정수 ID 시퀀스 | "robot" → [6884] |
Embedding Model | 문장 전체를 의미 벡터로 변환 | 1536차원 실수 벡터 | [0.12, -0.45, …, 0.03] |
1536차원 | “임베딩 공간의 크기” (특징 수) | 문장 의미의 요약 표현 | 벡터 간 거리 = 의미 유사도 |
💡 쉽게 비유하면
단계 | 비유 |
Tokenizer | 문장을 “철자 코드”로 바꾸는 과정 |
Embedding Model | 그 코드들을 “의미 있는 숫자 좌표(벡터)”로 바꾸는 과정 |
1536차원 | 벡터 공간의 축 개수 (언어의 의미적 방향 수) |