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
                            
                        
                          
                          - heapq
 - docker
 - LLM
 - javascript
 - build
 - Algorithm
 - CI/CD
 - Two Pointer
 - 파이썬
 - modbus
 - jenkins
 - BFS
 - VectoreStore
 - turbo
 - queue
 - frontend
 - rag
 - 알고리즘
 - monorepo
 - React
 - OpenAI
 - AI
 - javascirpt
 - 스택/큐
 - python
 - 프로그래머스
 - ansible
 - DP
 - dfs
 - typescript
 
                            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 실습 #1] Chroma 실습: 벡터DB를 활용한 문서 검색 (0) | 2025.09.13 | 
|---|---|
| [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 | 
          