VectorDB란 무엇인가요?

VectorDB는 텍스트, 이미지, 오디오 등 비정형 데이터를 벡터(수치 형태)로 변환해 저장하고,

벡터 간의 유사도 검색(예: 코사인 거리, 유클리디안 거리 등)을 통해

가장 관련 있는 데이터를 빠르게 찾아주는 데이터베이스입니다.

🔍 일반 SQL DB는 '정확히 같은 값'을 찾지만,

VectorDB는 '가장 비슷한 것'을 찾습니다.


언제 VectorDB가 필요한가요?

사용 사례설명
🗣️ 챗봇 (LLM + RAG)사용자의 질문 벡터와 문서 벡터 간 유사도 비교 후 답 생성
🔍 유사 이미지 검색이미지 임베딩 벡터를 기준으로 시각적으로 비슷한 이미지 검색
🎧 음성 추천 시스템오디오 특성 벡터로 유사한 음성/노래 추천
📚 문서 분류 및 클러스터링문서 벡터 기반 군집화 및 분류 모델 지원
💼 지식 베이스 검색자연어 기반 질의로 가장 관련 있는 문서 검색

VectorDB의 기본 동작 원리

  1. 🔄 임베딩(Embedding)
    • 텍스트, 이미지 등을 벡터(숫자 배열)로 변환
    • 예: OpenAI, HuggingFace, sentence-transformers 등 활용
  2. 🗄️ 벡터 저장
    • DB 테이블에 벡터 필드(예: FLOAT[], vector) 형태로 저장
  3. 🔍 벡터 유사도 검색
    • 쿼리 벡터와 기존 벡터 간 거리(코사인, L2 등)를 계산해 Top-K 결과 반환

PostgreSQL에서 VectorDB처럼 사용하기 – pgvector

PostgreSQLpgvector 확장 기능을 통해 벡터 검색 기능을 제공합니다.

-- 확장 설치
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;

pgvector 주요 특징

  • Postgres 내장 확장으로 별도 벡터 DB 없이 사용 가능
  • L2 거리(<->), 코사인 거리(<#>), 내적(<=>) 지원
  • GIST, HNSW(approximate search) 인덱스 지원

다른 주요 VectorDB 예시 비교

DB특징장점
Pinecone클라우드 기반, 완전관리형빠른 설정, 스케일링 편리
Weaviate그래프 + 벡터 통합관계 기반 검색 지원
FAISS (Meta)라이브러리 형태, 로컬 기반매우 빠른 검색 속도
Milvus분산형 벡터DB고성능, 확장성 우수
QdrantRust 기반 오픈소스Web UI, 성능+편의성 균형

VectorDB가 중요한 이유

  • RAG 기반 LLM 서비스의 품질은 벡터 검색 정확도에 의존
  • 정형 쿼리보다 더 유연하고 의미 중심의 검색 가능
  • 기존 RDB와 연계해 혼합 워크로드 처리 가능 (e.g. PostgreSQL + pgvector)

VectorDB 도입 시 고려 사항

고려 요소질문 예시
💾 벡터 차원 수OpenAI, Cohere, 자체 임베딩 모델 등
🧪 유사도 방식코사인, L2, inner product 중 선택
🧱 스토리지단일 노드 or 분산형 필요 여부
⚡ 성능Approximate vs 정확한 검색
🔗 통합성기존 DB/RAG 시스템과 얼마나 잘 연동되는가

profile
안녕하세요. 엔텔스 TarzanDB 공식계정입니다.

0개의 댓글