본문 바로가기
Data Science

벡터 DB 검색 기본 개념 : Embedding (2)

by 난시간과싸워 2025. 12. 9.
반응형

2025.12.08 - [Data Science] - 벡터 DB 검색 기본 개념 : Embedding, ANN 개요 (1)

지난 글에서는 벡터 DB가 무엇이고, ANN 인덱싱 구조가 어느 방식으로 의미상 유사 벡터를 빠르게 찾는지를 정리했다. 이번 글에서는 벡터 DB가 의미를 표현할 수 있게 만드는 Embedding 과정에 집중해본다. 

Embedding

  • Embedding은 벡터 DB 검색에서 의미를 숫자 공간으로 투영하는 과정이다.
  • 일반적으로 딥러닝 모델의 Feature를 Embedding으로 사용하기 때문에, 딥러닝 모델이 어느 objective로 학습되었는지에 따라 벡터의 의미가 결정된다.
  • 예를들어, Image Classification 모델의 중간 Feature를 사용한다면, 이미지의 모양과 색깔 등의 시각적 특성이 Embedding이 된다. 이 경우 비슷한 시각적 특성을 가진 이미지들은 벡터 공간에서 서로 가까운 위치에 존재하고, 다른 시각적 특성을 가진 이미지들의 벡터는 서로 먼 위치에 존재할 것이다. 다만, 특정 유형의 사물이 딥러닝 모델의 클래스로 사용되었다면, 실제 시각적 차이가 크더라도 벡터 공간 내에서는 가깝게 위치할 수 있다.
  • 최근에는 LLM model을 활용한 텍스트 Embedding으로 RAG를 만드는데, 문장 내 특정 위치에  어느 token이 위치할지를 문맥적 패턴을 학습한 LLM은 서로 다른 모양의 같은 의미를 가진 단어(동의어)를 벡터 공간 내에 가깝게 위치시켜, 문장의 의미와 문맥을 투영한 벡터에 담는다. 
  • 즉, Embedding의 성능은 Feature가 표현하고자 하는 의미를 충분히 담을 수 있는가에 따라 결정된다. 딥러닝 모델의 학습 objective에서 성능 높은 모델이 벡터 공간에서의 좋은 정렬을 의미하지는 않지만, 성능이 나쁜 모델에서는 Embedding이 의도하는 벡터 정렬을 못가질 가능성이 매우 크다. 
  • 결국 벡터 DB의 역할은 Embedding간의 거리를 어떻게 빨리 찾는지만 담당할 뿐, 의미 검색의 성능은 Embedding의 품질에 의해 결정된다.

Embedding 선택 시 고려할 점

  • Embedding을 선택할 때는 의미 검색 성능이 중요한 요소이지만, 실제 벡터 DB 운영을 고려한다면 다양한 점을 고려해야한다. 

1. 데이터의 종류 (modality)

  • 너무 당연하지만, 어떤 데이터를 Embedding 할 것인지에 따라 Embedding model이 결정된다. 
  • 이미지는 이미지 학습을 위한 CNN, ViT 기반 Feature, 텍스트는 LLM 기반 Embedding을 사용해야한다. 동영상등에서 정적 장면이 중요하다면 이미지 기반 Embedding이면 충분하지만, 프레임의 변화가 중요하다면 시간축을 담을 수 있는 Embedding 모델, 소리가 중요하다면 음성 모델을 포함한 Embedding을 포함해야한다.

2. 모델이 학습한 objective

  • Embedding은 결국 어느 objective냐에 따라 벡터 공간 내 거리를 좁히고 멀게하기 때문에 모델의 objective가 중요하다.
  • 같은 이미지더라도 이미지 분류 모델은 클래스 간 구분에 최적화되어 있고, CLIP 같은 멀티모달 모델은 이미지와 텍스트간 의미적 정렬에 초점이 맞춰있다. 
  • 따라서 시각적 유사성이 중요한 경우에는 CNN, ViT 등의 이미지 분류 모델의 Feature가 더 적절하고, 의미적 유사성이 중요한 경우에는 CLIP 등의 모델이 더 적절하다.

3. 벡터 차원의 크기

  • 차원이 높을 수록, 많은 양의 정보를 담을 수 있지만 벡터 DB를 고려하면 적재 및 검색의 비용이 증가한다.
  • 특히, 벡터 DB 운영 시, 벡터의 차원에 따라 디스크 용량, 메모리 용량, 검색 속도가 크게 달라지기 때문에 적정한 수준의 차원을 선택하는 것이 좋다.
  • 딥러닝 모델을 직접 학습하지 못하는 환경에서는 PCA 등의 차원 축소를 이용해 차원을 줄여주는 것도 방법이다. 

4. 모델의 일관성

  • 같은 벡터 DB에 저장되는 Embedding은 모두 동일한 모델을 통해 만들어져야한다. 
  • Objective 성능이 올라갔더라도, 벡터 DB 내의 전체 데이터를 다시 Embedding하지 않을것이라면 성능이 낮더라도 사용하던 모델을 사용해야한다.
  • 특히, 최근 원격에서 pretrained 모델을 사용하여 Embedding을 하는 경우가 많은데, 언제 weight가 바뀔지 모르기 때문에 별도의 공간에서 버전관리를 꼭해야한다. 

5. 벡터 DB 운영

  • 결국 Embedding은 벡터 DB를 구현하기 위한 과정으로, 벡터 DB의 H/W 환경에 맞춰 검색 시간, 처리 가능 여부를 확인해야한다. 
  • 아무리 의미를 잘담아도 검색까지 너무 오랜 시간이 걸리거나, 메모리가 터져 활용하지 못하면 의미가 없기 때문에 많은 고려가 필요하다.
  • 예를들어, 동일 공간에서 검색이 필요없는 데이터들은, 클래스를 분류해서 각기 더 잘 분류할 수 있는 다른 Embedding 모델을 사용하여 각각 저장하는 것이 속도 및 의미 측면에서 유리할 수 있다.

 

자주 사용되는 Embedding 

  • 앞서 말한대로 목적에 따라 어느 Embedding을 사용할지는 다르지만, 일반적으로 아래 Embedding을 주로 사용한다. 
  • 2025년 말 기준 자주 사용되는 Embedding model이다.  
데이터 타입 모델 특징 메모리 요구량 (대략) CPU 기준 수행시간 (대략)
텍스트 BGE / E5 / SBERT 문장·문서 의미 기반 벡터 생성, RAG 표준 모델 300MB ~ 1.5GB (모델 크기 기준) 20~80ms
OpenAI Embedding API 기반, 로컬 리소스 필요 없음, 유료다. 메모리 무관 네트워크 왕복 100~300ms
이미지 CNN Feature
(ResNet, EfficientNet)
이미지 분류 모델의 중간 feature 활용 100~300MB 30~120ms
ViT (Vision Transformer) 객체·구조·스타일을 잘 반영 300MB ~ 1.2GB 80~200ms
CLIP Image Encoder 텍스트–이미지 공통 공간 생성 (이미지 가장 많이 사용됨) 300MB ~ 800MB 40~150ms
오디오 MFCC 등 전통 특징 빠르고 가벼움. 단순 음향 패턴 중심 매우 적음 (수 MB 이하) 5~20ms
Wav2Vec2 / Whisper Encoder 음성 의미·화자 특성 반영 300MB ~ 1GB 80~200ms
영상 I3D / SlowFast 동작(action) 중심 pattern 추출 1GB 이상 300~600ms (1초 단위 영상 기준)
VideoCLIP 영상–텍스트 정렬 Embedding 1.5GB 이상 400ms~1s 이상
멀티모달 CLIP / SigLIP 이미지–텍스트 통합 의미 공간 300MB ~ 800MB 40~150ms
BLIP / BLIP2 caption + 멀티모달 QA 강함 1GB ~ 3GB 150~400ms
구조적 데이터 Embedding Layer / TabTransformer 표 데이터의 의미를 효율적으로 압축 매우 적음 (10~50MB) 1~10ms

 

 

Embedding의 한계

Embedding의 장점을 살펴봤지만(벡터 DB 소개 글이기 때문), Embedding도 많은 한계를 가지고 있다. 최근에는 실무에서 LLM Embedding을 활용한 RAG보다 BM25 기반의 문서 검색이 유용하다는 글도 자주 보인다.

  • 설명 가능성 낮음 : 왜 비슷한지 사람이 해석하기 어렵다. 딥러닝 특유의 블랙박스 적인 특징도 있고, 일반적으로 Embedding은 학습 과정과 분리되어 있기 때문에, 데이터를 확인하기도 어려워 벡터 공간 내 거리를 사람이 해석하기 어렵다.
  • 도메인 외 데이터에 취약 : LLM의 경우 특수 도메인에서만 사용되는 단어 또는 은어등에 대해서 충분히 데이터가 없을 수 있기 때문에 별도의 도메인 파인튜닝이 없다면 오히려 단어 기반 검색인 BM25가 더 적절할 수 있다. 
  • 미세한 차이 구분 어려움 : CLIP의 경우 의미 중심이기 때문에 작은 외형 차이를 놓칠 수 있다. 딥러닝 모델에서는 Robust 하다는 장점이 벡터 검색에서는 단점이 될 수 있다. 특히 템플릿이 존재하고 미세한 변화가 있을때는 단어 기반 검색인 BM25가 나을 수 있다.

→ 따라서 BM25나 조건부 Filtering 등의 기존 방법과 Embedding을 잘 섞어 쓰는것(Hybrid 방)이 벡터 DB의 검색 성능과 속도에 유리하다.