DM Log

[AI 개념 및 이해 #2] 임베딩(Embedding) 이해: 텍스트-벡터 변환 기술 본문

개발공부/AI

[AI 개념 및 이해 #2] 임베딩(Embedding) 이해: 텍스트-벡터 변환 기술

Dev. Dong 2025. 9. 6. 23:27

컴퓨터의 텍스트 이해 방식

  • 사람은 "사과"를 보면 과일을 떠올리고, "애플"을 보면 회사나 아이폰을 연상한다. 하지만 컴퓨터는 "사과"를 단순한 문자열로 인식한다.
  • 텍스트 의미적 관계를 이해하기 위해서는 텍스트를 수학적 공간의 좌표 즉, 벡터 공간의 좌표로 변환이 필요하며, 이를 임베딩이라고 한다.
  • 임베딩은 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차원)