TIL

👀Today I Learn

Vector DB vs SQL DB

  Vector DB SQL DB
주요 목적 고차원 벡터 검색 및 유사성 기반 검색 정형 데이터 저장 및 관계형 데이터 관리
데이터 구조 벡터(임베딩) 기반 인덱싱 및 검색 테이블(행 & 열) 기반 구조
주요 사용 사례 AI, 추천 시스템, 검색 엔진, 이미지/문서 검색 전통적인 CRUD 애플리케이션, 웹 서비스, 트랜잭션 관리
예제 데이터 “고양이” → [0.23, 0.56, 0.11, ...] (고차원 벡터) “고양이” → ID=1, Name='고양이', Type='동물' (SQL 테이블)

주요 특징 비교

  Vector DB SQL DB
데이터 저장 방식 벡터 임베딩 행 & 열 (관계형)
검색 방식 근사 최근접 이웃(ANN) 정확한 값 검색(Query)
인덱싱 기법 LSH, HNSW, IVF 등 B-Tree, Hash Index, Full-Text Index
주요 DBMS Pinecone, FAISS, Chroma, Weaviate, Milvus PostgreSQL, MySQL, SQLite, MariaDB

장단점 비교

  Vector DB SQL DB
장점 - 빠른 유사성 검색 (ANN 기반) - 고차원 벡터 데이터 처리 가능 - NLP, 이미지 검색 등 AI 관련 사용 용이 - 정형 데이터 관리에 최적화 - ACID 트랜잭션 보장 - 다양한 쿼리 지원(SQL)
단점 - 전통적인 CRUD 작업에 부적합 - 데이터 업데이트가 복잡함 - ACID 보장이 어려움 - 대규모 비정형 데이터 처리 어려움 - AI 기반 검색(유사성 검색) 불가능

러닝 커브

  Vector DB SQL DB
러닝 커브 ⭐⭐⭐⭐ (높음) ⭐⭐ (보통)
이유 - 벡터 임베딩 개념 필요
- 유사성 검색 방식 학습 필요
- 특정 라이브러리 (FAISS, Pinecone 등) 사용법 숙지 필요
- SQL 문법만 익히면 사용 가능
- 널리 사용되는 기술로 자료 많음

비용 분석

  Vector DB SQL DB
비용 여부 유료(Cloud 기반) & 무료(오픈소스) 대부분 무료 (오픈소스)
대표적인 유료 서비스 Pinecone, Weaviate (클라우드) AWS RDS (클라우드)
대표적인 무료 서비스 FAISS, Chroma (로컬 환경) PostgreSQL, MySQL, SQLite
  • Vector DB의 경우, Pinecone 같은 클라우드 서비스는 비용이 발생하지만, FAISS, Chroma 등의 오픈소스 솔루션을 사용하면 무료로 운영할 수 있음
  • SQL DB의 경우, 대부분 무료이며, 클라우드 환경(AWS RDS, Google Cloud SQL)을 사용할 경우 비용이 발생


Vector DB & SQL DB 연동 가능성

  • SQL DB는 정형 데이터 저장에 강점이 있으므로, 사용자 정보 및 일반적인 트랜잭션 데이터를 저장하는 용도로 적합
  • Vector DB는 고차원 벡터 검색을 수행하는 데 최적화되어 있어, AI 기반 검색, 추천 시스템 등에 활용
  • 두 가지를 연동하는 방식
    1. 벡터 데이터를 SQL DB에 저장하고, 벡터 검색 시 외부 Vector DB 활용 (예: PostgreSQL + Pinecone)
    2. PostgreSQL의 pgvector 확장을 이용하여 SQL DB에서 직접 벡터 검색 수행
    3. SQL DB에서 저장된 데이터를 바탕으로 Vector DB에서 임베딩을 생성하여 활용 (예: MySQL + FAISS)


선택시 고려해야할 점

  • Vector DB 사용이 적합한 경우
    • 챗봇에서 RAG (Retrieval-Augmented Generation) 활용 시, 벡터 검색 필요
    • 질문-답변 데이터베이스에서 유사한 질문을 찾는 기능이 필요
    • 대규모 자연어 검색이 필요한 경우
  • SQL DB 사용이 적합한 경우
    • 사용자의 계정 및 기본적인 CRUD 기능이 필요한 경우
    • 정형 데이터(면접 기록, 사용자 설정 등) 저장이 필요한 경우
  • 통합 전략

    • PostgreSQL + pgvector: SQL DB 안에서 벡터 검색 수행 가능 (통합형)
    • MySQL + FAISS: MySQL에서 관리하는 데이터와 FAISS를 통해 유사 검색 수행 (분리형)
    • Neon DB (PostgreSQL 기반) + Pinecone: 클라우드 기반 서비스 활용 가능
  • 정리해보면..
    • 기본 데이터는 SQL DB (PostgreSQL, MySQL 등)에 저장
    • 벡터 검색이 필요하면 PostgreSQL의 pgvector를 활용하거나, Pinecone/FAISS 같은 별도 Vector DB 사용
    • 초기에는 SQL DB만 사용하고, 벡터 검색 필요성이 커지면 Vector DB 도입 고려



💡Today I Thought

오늘의 체크리스트

  • 알고리즘 코드카타 1문제
  • SQL 코드카타 3문제
  • SA문서 작성
    • ERD 작성(ERD 클라우드)
    • API 명세서 작성
  • ML 시스템 고민해보기 ⇒ 조금 더 공부 필요함
  • Vector DB, SQL DB 공부
  • TIL 작성

회고

 오늘은 1시부터 6시가 좀 안되는 시간까지 팀회의를 진행했다. 이렇게 하니까 다음주 초반에는 끝내고 MVP 개발을 시작할 수 있겠지? 생각보다 내가 모르는게 많아서 팀원들한테 민폐가 되는 것 같다. 공부도 좀 꼼꼼히 하고, 팀원들 더 잘 이끌어야지..엉엉..

댓글남기기