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: 텍스트 + 이미지 공동 임베딩
  • 동일 벡터 공간에서 이미지-텍스트 검색 가능

임베딩의 차원

모델차원특징
Word2Vec300가볍고 빠름
GloVe100-300통계 기반
OpenAI text-embedding-ada-0021536고품질, 계산 비용 높음
CLIP512멀티모달

차원이 클수록: 정보량↑, 계산 비용↑, 저장 공간↑

임베딩 프로세스

[원본 데이터 (텍스트)]
  ↓
[전처리] (토큰화, 정규화)
  ↓
[임베딩 모델] (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]

임베딩의 장점

의미론적 검색: 정확한 단어 매칭이 아닌 의미 기반 검색
차원 축소: 고차원 정보를 저차원으로 압축
전이 학습: 사전학습된 임베딩 모델 재사용
빠른 검색: 벡터 거리 계산은 단순 수학 연산
다언어 지원: 다국어 공동 임베딩 가능

임베딩의 한계

의미론적 오류: 의미를 완벽하게 포착하지 못할 수 있음
맥락 의존성: 같은 단어도 맥락에 따라 다른 벡터로 표현
계산 비용: 대규모 데이터셋에 임베딩 생성 비용 높음
저장 공간: 벡터 저장소 관리 필요

온톨로지에서의 임베딩 활용

  1. 개념 벡터화: 온톨로지의 개념(클래스)을 벡터로 표현
  2. 의미론적 유사도: 관련 개념 자동 발견
  3. 범주 추론: 새로운 엔티티를 온톨로지 클래스로 자동 분류
  4. 검색 보강: Cypher 쿼리 + 벡터 검색 하이브리드 활용

관련 개념: Vector Retriever, RAG, Graph RAG

참고: neo4j-vector-retriever