
VectorDB는 텍스트, 이미지, 오디오 등 비정형 데이터를 벡터(수치 형태)로 변환해 저장하고,
벡터 간의 유사도 검색(예: 코사인 거리, 유클리디안 거리 등)을 통해
가장 관련 있는 데이터를 빠르게 찾아주는 데이터베이스입니다.
🔍 일반 SQL DB는 '정확히 같은 값'을 찾지만,
VectorDB는 '가장 비슷한 것'을 찾습니다.
| 사용 사례 | 설명 |
|---|---|
| 🗣️ 챗봇 (LLM + RAG) | 사용자의 질문 벡터와 문서 벡터 간 유사도 비교 후 답 생성 |
| 🔍 유사 이미지 검색 | 이미지 임베딩 벡터를 기준으로 시각적으로 비슷한 이미지 검색 |
| 🎧 음성 추천 시스템 | 오디오 특성 벡터로 유사한 음성/노래 추천 |
| 📚 문서 분류 및 클러스터링 | 문서 벡터 기반 군집화 및 분류 모델 지원 |
| 💼 지식 베이스 검색 | 자연어 기반 질의로 가장 관련 있는 문서 검색 |
FLOAT[], vector) 형태로 저장Top-K 결과 반환pgvectorPostgreSQL은 pgvector 확장 기능을 통해 벡터 검색 기능을 제공합니다.
-- 확장 설치
CREATE EXTENSION IF NOT EXISTS vector;
-- 벡터 타입 필드 포함 테이블 생성
CREATE TABLE items (
id SERIAL PRIMARY KEY,
embedding vector(1536), -- OpenAI 기준 차원 수
content TEXT
);
-- 벡터 유사도 검색
SELECT id, content
FROM items
ORDER BY embedding <#> '[0.123, 0.456, ...]' -- L2 거리 연산자
LIMIT 5;
<->), 코사인 거리(<#>), 내적(<=>) 지원| DB | 특징 | 장점 |
|---|---|---|
| Pinecone | 클라우드 기반, 완전관리형 | 빠른 설정, 스케일링 편리 |
| Weaviate | 그래프 + 벡터 통합 | 관계 기반 검색 지원 |
| FAISS (Meta) | 라이브러리 형태, 로컬 기반 | 매우 빠른 검색 속도 |
| Milvus | 분산형 벡터DB | 고성능, 확장성 우수 |
| Qdrant | Rust 기반 오픈소스 | Web UI, 성능+편의성 균형 |
| 고려 요소 | 질문 예시 |
|---|---|
| 💾 벡터 차원 수 | OpenAI, Cohere, 자체 임베딩 모델 등 |
| 🧪 유사도 방식 | 코사인, L2, inner product 중 선택 |
| 🧱 스토리지 | 단일 노드 or 분산형 필요 여부 |
| ⚡ 성능 | Approximate vs 정확한 검색 |
| 🔗 통합성 | 기존 DB/RAG 시스템과 얼마나 잘 연동되는가 |