Embedding (임베딩)
정의
텍스트, 이미지, 음성 등의 고차원 정보를 고정 차원의 저차원 벡터로 변환하는 기술. 이 벡터는 원본 정보의 의미론적(semantic) 특징을 보존한다.
수학적 개념
텍스트 "영화는 재미있다"
↓
임베딩 함수 f(·) 적용
↓
벡터: [0.123, -0.456, 0.789, ..., 0.045] (1536 차원)
임베딩의 성질
- 의미론적 유사도: 의미가 유사한 단어/문장의 벡터는 공간에서 가까움
- 연산 가능: 벡터 간 연산으로 개념적 관계 표현
- 예: vec(“왕”) - vec(“남자”) + vec(“여자”) ≈ vec(“여왕”)
임베딩의 종류
1. 단어 임베딩 (Word Embedding)
- Word2Vec: 문맥 기반 단어 벡터
- GloVe: 공존 행렬 기반 벡터
- FastText: 부분단어(subword) 정보 활용
2. 문장/문서 임베딩 (Sentence/Document Embedding)
- Sentence-BERT: 문장의 의미론적 유사도 보존
- Doc2Vec: 문서 전체의 벡터 표현
- OpenAI Embedding (text-embedding-ada-002): 대규모 언어 모델 기반 고품질 임베딩
3. 멀티모달 임베딩 (Multimodal Embedding)
- CLIP: 텍스트 + 이미지 공동 임베딩
- 동일 벡터 공간에서 이미지-텍스트 검색 가능
임베딩의 차원
| 모델 | 차원 | 특징 |
|---|---|---|
| Word2Vec | 300 | 가볍고 빠름 |
| GloVe | 100-300 | 통계 기반 |
| OpenAI text-embedding-ada-002 | 1536 | 고품질, 계산 비용 높음 |
| CLIP | 512 | 멀티모달 |
차원이 클수록: 정보량↑, 계산 비용↑, 저장 공간↑
임베딩 프로세스
[원본 데이터 (텍스트)]
↓
[전처리] (토큰화, 정규화)
↓
[임베딩 모델] (Word2Vec, BERT, OpenAI, ...)
↓
[벡터 표현]
↓
[저장소] (Vector DB, Graph DB의 벡터 프로퍼티)
Vector Retriever에서의 활용
from openai import OpenAI
# 1. 학습 데이터 임베딩
movies = ["Toy Story", "Avatar", "Inception", ...]
embeddings = []
for movie in movies:
embedding = OpenAI.embeddings.create(
input=movie.plot,
model="text-embedding-ada-002"
).data[0].embedding
embeddings.append(embedding)
# 2. 쿼리 임베딩
query = "재미있는 애니메이션"
query_embedding = OpenAI.embeddings.create(
input=query,
model="text-embedding-ada-002"
).data[0].embedding
# 3. 유사도 계산
similarities = [cosine_similarity(query_embedding, emb) for emb in embeddings]
top_k = sorted(zip(movies, similarities), key=lambda x: x[1], reverse=True)[:3]임베딩의 장점
✅ 의미론적 검색: 정확한 단어 매칭이 아닌 의미 기반 검색
✅ 차원 축소: 고차원 정보를 저차원으로 압축
✅ 전이 학습: 사전학습된 임베딩 모델 재사용
✅ 빠른 검색: 벡터 거리 계산은 단순 수학 연산
✅ 다언어 지원: 다국어 공동 임베딩 가능
임베딩의 한계
❌ 의미론적 오류: 의미를 완벽하게 포착하지 못할 수 있음
❌ 맥락 의존성: 같은 단어도 맥락에 따라 다른 벡터로 표현
❌ 계산 비용: 대규모 데이터셋에 임베딩 생성 비용 높음
❌ 저장 공간: 벡터 저장소 관리 필요
온톨로지에서의 임베딩 활용
- 개념 벡터화: 온톨로지의 개념(클래스)을 벡터로 표현
- 의미론적 유사도: 관련 개념 자동 발견
- 범주 추론: 새로운 엔티티를 온톨로지 클래스로 자동 분류
- 검색 보강: Cypher 쿼리 + 벡터 검색 하이브리드 활용
관련 개념: Vector Retriever, RAG, Graph RAG