[TIL] 내일배움캠프 95일차_[DB] Vector DB vs SQL DB
👀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 기반 검색, 추천 시스템 등에 활용
- 두 가지를 연동하는 방식
- 벡터 데이터를 SQL DB에 저장하고, 벡터 검색 시 외부 Vector DB 활용 (예: PostgreSQL + Pinecone)
- PostgreSQL의 pgvector 확장을 이용하여 SQL DB에서 직접 벡터 검색 수행
- 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 개발을 시작할 수 있겠지? 생각보다 내가 모르는게 많아서 팀원들한테 민폐가 되는 것 같다. 공부도 좀 꼼꼼히 하고, 팀원들 더 잘 이끌어야지..엉엉..
댓글남기기