728x90
반응형
1. 토크나이징 (Tokenization)
먼저 텍스트를 토큰 단위로 쪼갬.
"안녕하세요 반갑습니다"
→ ["안녕", "##하세요", "반갑", "##습니다"] ← BPE/WordPiece 방식
한글은 영어보다 형태소가 복잡해서, 글자 단위나 음절 단위로 쪼개는 경우도 많아.
2. 토큰 → 벡터 매핑
각 토큰은 모델 내부의 임베딩 테이블(lookup table) 에서 고정된 초기 벡터로 변환돼.
"안녕" → [0.23, -0.11, 0.87, ...] (768차원 등)
"반갑" → [0.41, 0.03, 0.12, ...]
이건 네가 말한 "단어 매핑"이랑 거의 같아.
3. Transformer로 문맥 반영 (핵심 차이점!)
근데 여기서 끝이 아니야. 각 토큰 벡터가 주변 문맥을 보면서 서로 영향을 주고받아 (Self-Attention).
"사과가 맛있다" → "사과" 벡터가 과일 방향으로
"사과드립니다" → "사과" 벡터가 사죄 방향으로
같은 단어도 문맥에 따라 다른 벡터가 됨.
4. 문서 전체를 하나의 벡터로 압축
마지막으로 모든 토큰 벡터를 하나의 벡터로 풀링해서 문서 전체의 의미를 표현.
[CLS] 토큰 사용 또는 평균 풀링
→ 최종 문서 벡터: [0.15, 0.72, -0.33, ...] (1536차원 등)
정리하면
단계 하는 일
| 토크나이징 | 텍스트 → 토큰 조각 |
| 임베딩 테이블 | 토큰 → 초기 벡터 (네 말한 매핑!) |
| Transformer | 문맥 반영해서 벡터 보정 |
| 풀링 | 전체를 하나의 벡터로 압축 |
결국 벡터디비에 들어가는 건 "이 문서의 의미 전체를 압축한 좌표" 같은 거야. 검색할 때 쿼리도 같은 과정으로 벡터화해서, 벡터 공간에서 가까운 문서를 찾는 방식이지.
728x90
반응형
'AI기웃기웃 > LLM' 카테고리의 다른 글
| 벡터 DB 비교 : Pinecone, ChromaDB, pgvector (0) | 2026.03.30 |
|---|---|
| [Repomix] GPT-4o, Claude 3에 Private GitHub 코드 통째로 넣는 법 (0) | 2025.11.04 |
| MCP 보안에서 세션을 인증 수단으로 이용하면 안되는 이유 (0) | 2025.11.03 |