복잡한뇌구조마냥

[DB] 벡터 데이터베이스(Vector DB) 본문

BE/DB

[DB] 벡터 데이터베이스(Vector DB)

지금해냥 2025. 9. 22. 09:50

요즘 RAG(Relevance-Augmented Generation)나 개인화 추천, 대화형 챗봇을 만들다 보면 꼭 등장하는 기술이 벡터 데이터베이스(Vector DB) 이다.
나 역시 프로젝트에서 GPT 기반 여행 추천 챗봇을 구현하면서 관련 내용을 정리해보면 좋을 것 같아 이렇게 글을 남긴다.


1. 🔍 벡터 DB가 등장한 이유

일반적인 관계형 DB는 정확한(Exact) 검색에는 강하지만, 아래와 같은 **의미 기반 검색(Semantic Search)**에는 약하다.

예를 들어:

  • “강원도 힐링 여행지 추천 좀 해줘”
  • “한적하고 조용한 여행지가 좋아”
  • “아이랑 가기 좋은 카페 근처 여행지 있어?”

이런 검색을 문자열 매칭으로 처리하기는 사실상 불가능하다.
GPT나 임베딩 모델은 이런 문장을 수백~수천 개의 숫자 벡터로 바꾸고,
이 벡터 간 유사도를 비교해서 의미가 비슷한 데이터를 찾는다.

즉, 벡터 DB는 텍스트의 의미를 숫자로 저장하고 빠르게 유사도를 계산해주는 DB이다.


2. 🧠 벡터 DB가 하는 일

 

기능 설명
Embedding 저장 텍스트 → 벡터(예: 1536차원) 를 저장
유사도 검색 Cosine similarity, L2 distance 기반으로 가장 비슷한 벡터들을 빠르게 조회
메타데이터 저장 벡터 + 원본 텍스트 + 태그, 카테고리, 작성일 등 함께 저장 가능
RAG용 필터링 "강원도 여행지 중에서", "카페 포함 데이터만" 같은 조건식 검색 가능
밀리초 단위 가까운 응답 속도 PostgreSQL LIKE 검색보다 훨씬 빠름

3. 🧱 벡터 DB 구성 요소

일반적인 벡터 DB는 아래 구조로 되어 있다:

[문서(TEXT)] → [Embedding 모델] → [Vector(벡터)]  
→ [벡터 DB 저장] → [유사도 검색] → [GPT로 응답 생성]

RAG 구현 시에는 거의 이렇게 동작한다.


4. 📊 벡터 DB 비교

DB 종류 벡터 지원 방식 인덱싱 방식 장점 단점 운영난이도 추천 사용 사례
MariaDB 벡터 타입 없음 → FLOAT 배열 기반 직접 구현 없음 → L2/Cosine 직접 계산 기존 인프라 그대로 사용 가능, 비용 없음 대규모 검색에서 속도 한계, ANN(근사 최근접) 지원 없음 매우 쉬움 소규모 RAG,
챗봇,
학습 프로젝트
Qdrant Native Vector DB HNSW 빠른 유사도 검색,
필터링 강함,
Rust 기반 고성능
스키마 설계 필요, 서버 운영 필요 중간 RAG,
추천 시스템,
대규모 검색
Chroma Python 중심 임베딩 스토어 HNSW 로컬 개발 최강,
매우 직관적
서버 운영 비권장, 대규모 비적합 쉬움 연구/개발용,
빠른 프로토타이핑
pgvector PostgreSQL 확장 모듈 IVF/
HNSW /
L2
SQL 기반 친숙함,
Supabase 완전 호환,
운영 쉬움
고성능 벡터 DB보단 속도 떨어짐 쉬움 웹서비스 RAG, 중형 검색 서비스
Milvus Native Vector DB IVF_FLAT,
HNSW,
DiskANN 등
초대규모 데이터 처리 최강, 확장성 탁월 Kubernetes 기반 운영 난이도 높음 어려움 대규모 AI 검색 엔진, 엔터프라이즈
Weaviate Native Vector DB HNSW GraphQL 스타일 쿼리 편함, 플러그인 다양 운영 난이도 높음, 메모리 사용 높음 어려움 복잡한 RAG, 멀티 데이터 타입 검색

✔ 핵심 요약

  • 간단한 벡터 검색 + 운영 난이도 최소화 → MariaDB or pgvector
  • 중규모~대규모 벡터 검색 + 필터링 → Qdrant
  • 초대규모 검색 + 고성능 + 엔터프라이즈 → Milvus
  • 개발용/로컬 테스트 → Chroma

5. 🌏 벡터 DB를 도입하면 달라지는 점

👍 장점

  • 의미 기반 검색이 가능해져서 자연스러운 챗봇 구현 가능
  • 기존 키워드 기반 검색보다 정확도 향상
  • 추천 시스템 구현이 쉽다
  • LLM 프로젝트에서 필수로 사용됨 (RAG)

👎 단점

  • Embedding 저장 공간이 많이 필요할 수 있음
  • Embedding 업데이트 비용 발생
  • 완전한 정답이 아닌 확률적 검색

6. 📝 프로젝트에 어떻게 활용할 수 있을까?

예를 들어 네 TripHub 프로젝트처럼 여행 정보를 벡터 DB에 넣으면:

  • "2박 3일 힐링 여행 추천"
  • "카페 많은 여행 코스 알려줘"
  • "겨울에 가기 좋은 여행지"

이런 질문에 대해 의미로 이해하고 검색해주는 챗봇을 만들 수 있다.

이런 글을 블로그에 올리면 Search 트래픽 + 기술 트렌드에 잘 맞아서 조회수도 잘 나오는 편임.


7. 📌 글 마무리 – 벡터 DB는 요즘 LLM 프로젝트의 핵심

GPT 기반 서비스를 만들 때
“이걸 DB로 어떻게 저장하지?”
라는 고민이 들기 시작하면 벡터 DB가 거의 정답에 가까운 선택이다.

특히 Supabase에서 제공하는 PGVector는:

  • 설정 간단
  • RAG 구현 최적화
  • 비용 저렴

이라 처음 벡터 DB를 접하는 개발자에게 가장 추천할 만하다.

LIST