Vector DB 개요
1. 벡터 데이터베이스 (Vector DB)
1.1 벡터 데이터베이스의 개요
- 정의 및 개념
- 방대한 양의 고차원 데이터를 벡터 형태로 저장하고 처리하기 위한 특수한 데이터베이스
- 정보는 벡터로 저장되며, 각 벡터는 특성이나 품질을 기반으로 개체를 설명하는 수학적 데이터 표현을 의미함
- 벡터 임베딩이라고도 알려진 데이터 객체의 수치 표현 형태
- 벡터 임베딩의 강력한 기능을 활용하여
- 텍스트, 이미지, 오디오 등의 비정형 데이터를 임베딩 모델을 통해
- 고차원 수치 배열인 밀집 벡터(Dense Vector)로 변환한 뒤,
- 이를 효율적으로 저장, 인덱싱, 고속 유사도 검색을 수행할 수 있도록 설계됨
- 이미지, 텍스트 또는 센서 데이터와 같은 비정형 데이터와 반정형 데이터로 구성된 대규모 데이터 세트를 색인하고 검색함
- 벡터 데이터베이스의 주요 특징과 장점
- 고차원 벡터 임베딩 저장 및 관리 (구조적 특징)
- 데이터 항목은 특성 벡터(feature vector)로 표현됨
특성 벡터를 기반으로 데이터 검색, 분류, 군집화 등의 작업을 수행할 수 있음
- 고차원 특성 벡터(Feature Vector) 처리:
- 텍스트, 이미지, 오디오 등의 비정형 데이터가 AI 임베딩 모델을 통해 변환된 수백~수천 차원의 밀집 벡터(Dense Vector)를
- 손실 없이 효율적으로 저장
- 비정형 데이터의 구조화:
- 전통적인 관계형 DB가 처리하기 힘든 이미지, 자연어, 오디오, 센서 데이터 등을
- ‘벡터 공간 내의 좌표’로 변환하여 통합 관리
- 메타데이터 필터링(하이브리드 검색):
- 벡터 데이터뿐만 아니라, 이와 결합된 텍스트, 타임스탬프, ID 등의 메타데이터(Metadata)를 함께 저장
- 이를 기반으로 한 사전/사후 필터링(Filtering)을 제공
- 고속 유사성 검색 (Similarity Search)
- 주어진 쿼리 벡터와 가장 유사한 벡터를 빠르게 검색할 수 있음
- ANN(Approximate Nearest Neighbor) 알고리즘 기반:
- 모든 데이터와 일일이 거리를 계산하는 완전 탐색(Exact Search) 대신,
- HNSW, IVF, ScaNN 등 최신 근사 최근접 이웃 알고리즘을 사용하여
- 수억 개의 데이터 중 가장 유사한 항목을 밀리초(ms) 단위로 찾아냄
- 다양한 거리 측정 메트릭 지원:
- 데이터의 특성에 따라 다양한 수학적 거리 측정 방식을 유연하게 선택
- 코사인 유사도(Cosine Similarity)
- 유클리드 거리(L2 Distance)
- 내적(Dot Product) 등
- 데이터의 특성에 따라 다양한 수학적 거리 측정 방식을 유연하게 선택
- 하이브리드 검색 및 키워드 결합
- Sparse-Dense 하이브리드 검색:
- 최근 벡터 DB들은 밀집 벡터(Semantic 중심) 검색뿐만 아니라,
- 전통적인 키워드 기반의 희소 벡터(Sparse Vector, 예: BM25) 검색을 동시에 지원하여 검색 정확도를 극대화
- 재순위화(Reranking) 연동:
- 1차 검색된 고차원 벡터 결과에 대해 AI 모델과 연동하여 최종 순위를 정밀하게 재조정하는 파이프라인 지원
- Sparse-Dense 하이브리드 검색:
- 엔터프라이즈급 아키텍처 및 확장성 (운영적 특징)
- 실시간 정적/동적 인덱싱:
- 데이터가 수시로 추가/변경(CRUD)되는 환경에서도 background에서 인덱스를 동적으로 재구축
- 실시간에 가까운(Near Real-Time) 검색을 보장
- 클라우드 네이티브 및 분산 처리 (Storage-Compute Separation):
- 최신 공식 아키텍처(예: Milvus, Qdrant 등)는 저장소와 컴퓨팅 노드를 분리하여 설계됨
- 데이터 양이 늘어나면 저장 노드를, 쿼리 요청(QPS)이 폭증하면 컴퓨팅 노드만 독립적으로 수평 확장(Scale-out)할 수 있음
- 실시간 정적/동적 인덱싱:
- AI 에코시스템 및 RAG 최적화 (활용적 특징)
- 컨텍스트 윈도우 한계 극복:
- LLM(대형 언어 모델)의 외부 메모리 역할 수행
- 거대한 지식 베이스를 기반으로 한 RAG(검색 증강 생성) 시스템 구축의 핵심 컴포넌트로 작동
- 프레임워크 및 에이전트 연동:
- LangChain, LlamaIndex 등 대표적인 AI 오케스트레이션 프레임워크와 네이티브 SDK/API를 통해 긴밀하게 연동
- 컨텍스트 윈도우 한계 극복:
- 엔터프라이즈 보안 및 격리
- 멀티테넌시(Multi-tenancy):
- 하나의 DB 인스턴스 내에서 사용자나 조직별로 데이터 영역과 인덱스를 안전하게 격리
- 보안 규정 준수:
- 데이터 암호화(At-rest / In-transit), RBAC(역할 기반 접근 제어) 등을 지원하여 기업용 AI 애플리케이션 요구사항을 충족
- 멀티테넌시(Multi-tenancy):
- 고차원 벡터 임베딩 저장 및 관리 (구조적 특징)
1.2 핵심 메커니즘 (작동 원리)
- 벡터 데이터베이스는 전통적인 관계형 DB의 스키마 매칭이나 완전 일치(Exact Match) 방식과 달리,
고차원 벡터 공간에서의 ANN(Approximate Nearest Neighbors, 근사 최근접 이웃) 알고리즘과 수학적 거리 메트릭을 기반으로 작동함
전체적인 파이프라인
- 데이터 파이프라인 및 임베딩 (Data Pipeline & Embedding)
- 청킹 및 고차원 투영:
- 텍스트, 이미지 등 대규모 비정형 데이터를 의미적 단위로 분할(Chunking)한 후,
- LLM 또는 비전 모델(예: 타깃 임베딩 모델)을 통과시켜
- 수백~수천 차원의 밀집 벡터(Dense Vector) 공간에 좌표로 투영
- 원시 데이터 및 메타데이터 결합:
- 생성된 벡터와 함께,
- 원본 텍스트 데이터 및 필터링에 사용될 메타데이터(예: 생성일, 카테고리, 권한 ID 등)를
- 키-값(Key-Value) 형태로 묶어
- 데이터 페이로드(Payload)를 구성하고 저장소에 영구 적재(Persistence)
- 청킹 및 고차원 투영:
- 고속 탐색을 위한 인덱싱 (Indexing)
- 차원의 저주(Curse of Dimensionality) 극복:
- 전수 조사 방식인 KNN(K-Nearest Neighbors)은 데이터 수와 차원이 늘어날 때 연산량이 기하급수적으로 증가(O(N))하므로,
- 성능 타협을 통해 탐색 복잡도를 O(log N) 수준으로 낮추는 ANN 인덱스를 빌드함
- 최신 인덱싱 아키텍처 적용:
- 그래프 기반 (HNSW):
- 벡터 간의 근접성을 초고속으로 탐색할 수 있도록 다층 구조의 스몰 월드 그래프를 형성
- 클러스터 기반 (IVF):
- 벡터 공간을 Voronoi 다각형 공간으로 분할하여 역색인(Inverted File) 구조의 셀(Cell)로 그룹화
- 압축 기반 (PQ/SQ):
- 고차원 벡터를 양자화(Quantization)하여 메모리 사용량을 대폭 줄이고 캐시 효율성을 극대화
- 그래프 기반 (HNSW):
- 차원의 저주(Curse of Dimensionality) 극복:
- 하이브리드 실행 및 쿼리 처리 (Query Processing & Filtering)
- 실시간 쿼리 벡터 변환:
- 사용자 검색 요청(Query)이 들어오면
- 실시간으로 동일한 AI 임베딩 모델을 거쳐
- 동일 차원의 쿼리 벡터(q)로 변환
- 단일 단계(Single-stage) 하이브리드 필터링:
- 최근 고성능 벡터 DB는 메타데이터 필터링과 벡터 유사도 검색을 동시에 수행함
- 인덱스 탐색 과정에서 메타데이터 조건(예:
user_id == 123)을 함께 검사하여 - 불필요한 벡터 연산을 원천 차단하고
- 검색 정확도를 높임
- 실시간 쿼리 벡터 변환:
- 수학적 유사도 측정 및 Top-K 추출 (Similarity Evaluation)
- 거리 메트릭 계산:
- 사전에 정의된 수학적 알고리즘을 통해
- 쿼리 벡터와 인덱스 공간 내 후보 벡터들 간의 거리를 연산
- 코사인 유사도 (Cosine Similarity):
- 두 벡터 사이의 각도(방향성)를 측정하여
- 크기 변화에 무관한 의미적 유사성을 판별
- \[\cos\theta = \frac{A \cdot B}{\|A\|\|B\|}\]
- L2 유클리드 거리 (Euclidean Distance):
- 고차원 공간상에서 두 좌표 간의 절대적인 직선거리를 측정
- \[d = \sqrt{\sum(A_i - B_i)^2}\]
- 내적 (Dot Product):
- 임베딩 벡터들이 정규화(Normalized)되어 있을 때 가장 빠른 연산 속도를 보장
- 가중치가 반영된 유사도를 계산
- \[A \cdot B = \sum A_i B_i\]
- 정렬 및 결과 반환:
- 계산된 거리 값을 기준으로
- 가장 유사도가 높은 최상위 k개의 레코드(Top-K)를 실시간으로 정렬 및 추출하여
- 컨텍스트 데이터와 함께 호출자에게 반환
- 거리 메트릭 계산:
- 데이터 파이프라인 및 임베딩 (Data Pipeline & Embedding)
1.3 대표적인 인덱싱 알고리즘
벡터 DB의 검색 성능(속도 vs 정확도 트레이드오프)을 제어하는 핵심 내장 알고리즘들
- HNSW (Hierarchical Navigable Small World):
- 설명:
- 벡터 공간을 다층 구조의 그래프(Graph) 형태로 연결하여,
- 상위 레이어에서 크게 건너뛴 후 하위 레이어에서 정밀하게 탐색하는 방식
- 특징:
- 현대 벡터 DB에서 가장 널리 쓰이는 표준 알고리즘
- 메모리 소비량은 크지만 압도적으로 빠른 검색 속도와 높은 정확도를 자랑함
- 검색 속도가 매우 빠르고 정확도가 높지만, 그래프 구조를 유지하기 위해 메모리(RAM) 소모가 큼
- 설명:
- IVF (Inverted File Index):
- 설명:
- 전체 벡터 공간을 K-평균(K-Means) 군집화 기법으로 여러 개의 클러스터로 나눈 뒤,
- 쿼리와 가장 가까운 일부 클러스터 내부만 조사하는 방식
- 특징:
- 인덱스 크기가 작아 메모리를 적게 차지하므로 대규모 데이터에 유리함
- 클러스터 경계면에 있는 데이터를 놓칠 수 있어 검색 정확도가 다소 떨어질 수 있음
- 설명:
- ScaNN (Scalable Nearest Neighbors)
- 설명:
- 구글이 개발한 알고리즘
- 벡터의 차원을 축소(양자화)할 때 거리 오차를 최소화하도록
- 수학적으로 최적화된 비대칭 양자화(Anisotropic Vector Quantization) 방식 사용
- 특징:
- 압도적인 메모리 효율성과 빠른 속도를 동시에 자랑
- 대규모 검색 환경에서 높은 정확도를 유지하는 데 특화됨
- 설명:
- HNSW (Hierarchical Navigable Small World):
2. 모델과 DB 연동 시 주의사항
- 임베딩 모델의 일관성 (Model Consistency):
- 절대 주의:
- 데이터를 DB에 넣을 때 사용한 임베딩 모델과, 사용자의 질문을 변환하는 임베딩 모델은 반드시 동일해야 함
- 모델이 다르면 같은 단어도 전혀 다른 좌표에 찍히게 되어 검색이 불가능
- 절대 주의:
- 차원 수 정합성:
- 벡터 DB의 컬럼 크기(Dimension)는 임베딩 모델의 출력 크기와 1:1로 매칭되어야 함
- 예: 1536차원 모델 사용 시 DB 설정도 1536
- 벡터 DB의 컬럼 크기(Dimension)는 임베딩 모델의 출력 크기와 1:1로 매칭되어야 함
- 처리 성능 (Throughput):
- 대규모 ERP나 스마트팩토리 로그 데이터를 실시간으로 처리할 때는
- Batch Embedding을 지원하는 라이브러리를 사용하여 DB 인서트 성능을 최적화해야 함
- 로컬 vs 클라우드:
- 보안이 중요한 기업 내부용이라면
- HuggingFace의 오픈소스 모델(BGE, RoBERTa 등)을 로컬 GPU에서 돌리고,
- Milvus나 FAISS를 온프레미스로 연동하는 아키텍처가 적합
3. 대표적인 벡터 데이터베이스
- 글로벌 AI 및 엔터프라이즈 환경에서 가장 많이 활용되는 대표적인 벡터 데이터베이스 5종(Milvus, Pinecone, Qdrant, Chroma, pgvector)
3.1 Milvus
- Linux 재단 산하의오픈소스 프로젝트로, 현재 대규모 엔터프라이즈의 표준
수억 단위 이상의 대규모 벡터 데이터를 분산 처리하기 위해 설계된 강력한 클라우드 네이티브(Cloud-Native) 벡터 DB
- 주요 특징:
- 스토리지-컴퓨팅 분리:
- 저장 노드와 연산(쿼리) 노드가 철저히 분리되어 있음
- 트래픽 폭증 시 쿼리 노드만 유연하게 수평 확장(Scale-out)할 수 있음
- 다양한 인덱스 지원:
- HNSW, IVF뿐만 아니라 GPU 가속 인덱스(자체 및 구글 ScaNN 계열)까지 폭넓게 지원
- 스토리지-컴퓨팅 분리:
- 장점:
- 압도적인 확장성:
- 데이터 볼륨이 페타바이트(PB) 급으로 커져도 안정적인 성능을 유지
- 풍부한 기능:
- 완벽한 멀티테넌시, 시각화 대시보드(Attu), 강력한 하이브리드 검색 및 필터링을 제공
- 압도적인 확장성:
- 단점:
- 높은 아키텍처 복잡도:
- MinIO, Pulsar/Kafka, etcd 등 여러 컴포넌트가 의존성을 가짐
- 자체 구축(On-premise) 시 초기 설정과 운영 리소스 부담이 매우 큼
- 높은 아키텍처 복잡도:
3.2 Pinecone
인프라 관리 없이 API 호출만으로 벡터 데이터베이스를 전적으로 이용할 수 있도록 만든 Fully Managed(완전 관리형) 클라우드 전용 서비스
- 주요 특징:
- Serverless 아키텍처:
- 최근 인프라 관리 부담을 완전히 없앤 Serverless 플랜을 도입
- 사용한 쿼리와 저장 용량만큼만 비용을 지불하도록 변경됨
- 실시간 변경 반영:
- 데이터의 삽입, 수정, 삭제가 인덱스에 즉각 반영
- Near Real-Time 검색 성능이 뛰어남
- Serverless 아키텍처:
- 장점:
- 제로 운영 공수(Ops-less):
- 인프라 세팅, 클러스터 스케일링, 백업 등을 모두 Pinecone 측에서 관리
- 개발자는 비즈니스 로직에만 집중할 수 있음
- 빠른 PoC 및 상용화:
- 직관적인 API 환경 제공
- RAG 파이프라인 프로토타입을 가장 빠르게 구축할 수 있음
- 제로 운영 공수(Ops-less):
- 단점:
- 폐쇄성 및 클라우드 종속:
- 오픈소스가 아니므로 온프레미스나 폐쇄망 환경에서는 사용이 불가능
- 데이터 규모가 커질수록 비용 예측이 어려울 수 있음
- 폐쇄성 및 클라우드 종속:
3.3 Qdrant
- Rust 언어로 개발되어 하드웨어 자원을 극한으로 활용하는 고성능 오픈소스 벡터 데이터베이스
엔터프라이즈급 기능과 가벼움을 동시에 잡았다는 평가
- 주요 특징:
- Rust 기반 최적화:
- 가비지 컬렉션(GC)으로 인한 멈춤 현상이 없음
- 메모리 효율성과 스레드 동시성 제어가 매우 뛰어남
- 자체 하이브리드 엔진:
- 페이로드(메타데이터) 필터링이 인덱스 스캔과 동시에 일어나는 Single-stage 필터링이 정교하게 구현되어 있음
- Rust 기반 최적화:
- 장점:
- 뛰어난 리소스 가성비:
- 동일 사양의 가상 머신(VM)에서 타 DB 대비 더 적은 메모리로 더 높은 QPS(초당 쿼리 처리량)를 기록
- 유연한 배포:
- 단일 바이너리로 가볍게 띄울 수도 있고,
- 쿠버네티스 상에서 대규모 분산 클러스터로 확장할 수도 있어 유연성이 높음
- 뛰어난 리소스 가성비:
- 단점:
- 에코시스템 규모:
- Milvus나 Pinecone에 비해 커뮤니티 플러그인이나 레퍼런스가 다소 적은 편
- 에코시스템 규모:
3.4 Chroma
Python 에코시스템과 LangChain/LlamaIndex 등 AI 프레임워크에 완벽히 통합되도록 설계된 개발자 친화적 오픈소스 임베딩 데이터베이스
- 주요 특징:
- In-Memory 및 Local 파일 기반 지원:
- SQLite처럼 코드 몇 줄로 로컬 메모리나 로컬 디렉토리에 데이터를 저장하고 바로 쿼리할 수 있음
- 기본 임베딩 모델 내장:
- 데이터를 넣을 때 별도의 임베딩 파이프라인을 거치치 않아도
- Chroma가 내부적으로 올라마(Ollama)나 OpenAI 모델을 호출해 처리할 수 있음
- In-Memory 및 Local 파일 기반 지원:
- 장점:
- 극상의 간결함:
pip install chromadb후 즉시 사용 가능- 로컬 개발 환경 테스트 및 소규모 AI 애플리케이션 프로토타이핑에 최적
- 극상의 간결함:
- 단점:
- 대규모 확장성 한계:
- 단일 노드 중심 설계 구조라 수천만 건 이상의 엔터프라이즈급 대규모 트래픽과 대용량 분산 환경에는 부적합
- 대규모 확장성 한계:
3.5 pgvector (PostgreSQL 확장)
전 세계적으로 가장 안정적인 오픈소스 관계형 데이터베이스인 PostgreSQL의 확장(Extension) 플러그인
- 주요 특징:
- 관계형 데이터와 벡터의 결합:
- 기존 비즈니스 데이터(사용자 정보, 결제 내역 등)가 있는 테이블에
vector타입을 추가하여 한 번에 관리함
- 기존 비즈니스 데이터(사용자 정보, 결제 내역 등)가 있는 테이블에
- HNSW 및 IVFFlat 인덱스 내장:
- 확장 팩임에도 대중적인 ANN 알고리즘을 SQL 레이어에서 그대로 지원함
- 관계형 데이터와 벡터의 결합:
- 장점:
- 추가 인프라 비용 제로:
- 이미 PostgreSQL이나 AWS RDS 등을 운영 중이라면,
- 새로운 DB 기술 스택을 추가하지 않고 즉시 벡터 검색 기능을 도입할 수 있음
- 강력한 ACID 트랜잭션:
- RDB의 완벽한 데이터 일관성과 복잡한 SQL JOIN 연산을 벡터 검색과 결합할 수 있음
- 추가 인프라 비용 제로:
- 단점:
- 전문 솔루션 대비 성능 제한:
- 전용(Dedicated) 벡터 DB가 아니기 때문에,
- 초고차원 대규모 벡터 데이터셋에서 검색 속도 및 인덱싱 빌드 타임이 전문 DB에 비해 떨어질 수 있음
- 전문 솔루션 대비 성능 제한:
- 요약 및 선택 가이드
벡터 DB 형태 주요 인덱스 라이센스 상업이용 수정/비공개 적합한 유스케이스 Milvus 분산 오픈소스 HNSW, IVF,
ScaNN 등Apache 2.0 ○ ○ PB급 대규모 엔터프라이즈 환경, GPU 가속 필요 시 Pinecone 클라우드 SaaS 자체 전용 인덱스 Proprietary
(독점)유료 플랜만
가능X 인프라 운영 공수를 제로로 만들고 빠른 상용화를 원할 때 Qdrant Rust 오픈소스 HNSW 기반 Apache 2.0 ○ ○ 비용 대비 고성능(QPS)과 안정적인 자원 관리가 중요할 때 Chroma 경량 오픈소스 HNSW (로컬) Apache 2.0 ○ ○ 로컬 개발 테스트, 가벼운 챗봇 프로젝트, 빠른 프로토타이핑 pgvector RDB 확장
플러그인HNSW, IVFFlat PostgreSQL ○ ○ 이미 Postgres 기반 서비스를 운영 중이며, 관계형 데이터와의 강력한 결합이 필요할 때
- Apache 2.0 라이센스이더라도 클라우드 서비스를 이용할 경우, Free Tier 외에는 유료
- 비용걱정 없이 자유롭게 사용하려면 직접 로컬 시스템을 구축해야 함