Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 좌표이동
- Two Pointer
- 완전탐색
- 인베딩
- modbus
- dfs
- typescript
- retriever
- set활용
- InfluxDB
- 알고리즘
- Stack
- AI
- javascript
- Algorithm
- DP
- 프로그래머스
- queue
- python
- 파이썬
- 코딩테스트
- VectoreStore
- LLM
- Weaviate
- React
- frontend
- 개발브로그
- 스택/큐
- javascirpt
- data platform
Archives
- Today
- Total
DM Log
[AI 개념 및 이해 #2] 임베딩(Embedding) 이해: 텍스트-벡터 변환 기술 본문
컴퓨터의 텍스트 이해 방식
- 사람은 "사과"를 보면 과일을 떠올리고, "애플"을 보면 회사나 아이폰을 연상한다. 하지만 컴퓨터는 "사과"를 단순한 문자열로 인식한다.
- 텍스트 의미적 관계를 이해하기 위해서는 텍스트를 수학적 공간의 좌표 즉, 벡터 공간의 좌표로 변환이 필요하며, 이를 임베딩이라고 한다.
- 임베딩은 RAG, 추천 시스템, 검색 엔진, 챗봇 등 AI 서비스의 기반이 되는 핵심 개념이다.
백터 표현의 필요성
- 텍스트는 문자나 단어 나열 (그대로 비교 불가능)
- 단순한 방법: 원-핫 인코딩(one-hot encoding)
- 사과: [1,0,0,0,...]
- 바나나: [0,1,0,0,...]
- 한계:
- 차원이 단어 수만큼 커짐
- 사과와 배의 의미적 유사성을 표현 불가
- 추후, 단어 / 문장을 저차원 벡터 공간에 배치해 의미적 거리로 비교하는 방식 등장
임베팅의 원리
1. Word2Vec (고전적 접근)
- 비슷한 문맥에 사용되는 단어는 의미도 비슷 (Distributional Hypothesis)
- 예: 사과를 먹다, 바나나를 먹다와 같은 문장은 사과와 바나나의 벡터가 가까워짐
2. BERT (컨텍스트 기반)
- 같은 단어라도 문맥에 따라 다른 벡터 생성
- 예:
- eat apple - 과일 의미
- apple company - 기업 의미
3. OpenAI Embeddings
- OpenAI에서 제공하는 범용 임베딩 모델 (text-embedding-3-smal, text-embedding-3-large)
- 문장 / 단락 단위 의미 벡터 생성
- 검색, 분류, 추천, RAG에서 바로 활용
OpenAI Embeddings 모델 비교
- text-embedding-3-smal
- 벡터 차원: 1536
- 속도 빠르고 비용 저렴
- 대규모 검색, 추천 서비스 등 실시간성 비용 효율이 중요한 경우 적합\
- text-embedding-3-large
- 백터 차원: 3072
- 더 정밀한 의미 표현 가능
- 지식검색, QA, 분류 등 정확도가 중요한 경우 적합
- 간단한 Python 예제 - 출력 예시
from openai import OpenAI
client = OpenAI()
response = client.embeddings.create(
model="text-embedding-3-small",
input=["사과를 먹다", "바나나를 먹다", "자동차를 타다"]
)
for i, emb in enumerate(response.data):
print(f"문장 {i} 벡터 차원:", len(emb.embedding))
문장 0 벡터 차원: 1536
문장 1 벡터 차원: 1536
문장 2 벡터 차원: 1536
의미 공간 (Semantic Space)
임베딩은 단어/문장을 다차원 공간의 점으로 배치
- 가까이 위치 - 의미적 유사
- 멀리 위치 - 의미적 다름
유사도 측정 방법
임베딩 벡터 간 관계를 수치화하는 방법:
- 코사인 유사도 (Cosine Similarity)
- 벡터 간 각도 비교 (1에 가까울수록 유사)
- 유클리드 거리 (Euclidean Distance)
- 좌표 간 실제 거리
- 내적 (Dot Product)
- 벡터 크기와 방향 고려
👉 RAG에서는 보통 코사인 유사도를 사용
임베딩 활용 사례
1. 문서 검색 (RAG 핵심)
- 질문 임베딩 문서 ↔ 조각 임베딩 거리 계산 → 가장 가까운 문서 선택
2. 추천 시스템
- 비슷한 콘텐츠 추천
3. 분류 / 클러스터링
- 의미적 비슷한 문서 자동 그룹화
4. 추천 시스템
- 다른 벡터를 발견해 특이 케이스 탐
(부록) 용어 정리
- 임베딩(Embedding): 텍스트/객체를 수치 벡터로 표현하는 방법
- 원-핫 인코딩(One-hot encoding): 단순 0/1 벡터, 의미 정보 없음
- Word2Vec: 주변 단어 문맥 기반 임베딩
- BERT: 문맥에 따라 달라지는 임베딩
- 코사인 유사도: 두 벡터의 각도 기반 유사도 지표
- text-embedding-3-small / large: OpenAI의 최신 임베딩 모델 (1536차원 / 3072차원)
'개발공부 > AI' 카테고리의 다른 글
[AI 개념 및 이해 #5] RAG: 검색과 생성을 결합하는 기술 (0) | 2025.09.07 |
---|---|
[AI 개념 및 이해 #4] LangChain: LLM 오케스트레이션 프레임워크 (0) | 2025.09.07 |
[AI 개념 및 이해 #3] 벡터 DB(Vector Database) 개념: Chroma, Pinecone, Weaviate 비교 (0) | 2025.09.07 |
[AI 개념 및 이해 #1] LLM(Language Model) 이해: GPT의 동작 (0) | 2025.09.06 |