반응형
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의 검색 성능과 속도에 유리하다.
'Data Science' 카테고리의 다른 글
| 벡터 DB 검색 기본 개념 : Embedding, ANN 개요 (1) (1) | 2025.12.08 |
|---|---|
| DTW(Dynamic Time Warping) (1) | 2023.06.02 |
| PCA(Principal Component Analysis) (1) | 2023.05.04 |
| 이상치(Outlier) 제거 방법(2) - 머신 러닝 이용 방법 (1) | 2023.03.31 |
| 이상치(Outlier) 제거 방법(1) - 통계적 방법 (5) | 2023.03.19 |