485. 벡터 데이터베이스 (Vector DB)와 임베딩
⚠️ 이 문서는 "나이키 신발"이라는 정확한 키워드가 아니라, **"빨간색 런닝화 비슷한 거 찾아줘"라는 모호하고 의미론적인(Semantic) 질문에 대답하기 위해, 모든 데이터를 숫자의 배열(벡터)로 변환하여 저장하는 '벡터 데이터베이스'**를 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 텍스트, 이미지, 오디오 같은 비정형 데이터를 AI 모델을 통해 **'수백 개의 숫자로 이루어진 좌표(임베딩 벡터)'**로 변환하여 저장하는 특수 목적 데이터베이스다.
- 가치: 기존 RDBMS가 글자가 100% 똑같아야(
=) 찾을 수 있었다면, 벡터 DB는 데이터들이 수학적 공간에서 **얼마나 가까이 있는지(유사도)**를 계산하여 "비슷한 의미"를 가진 데이터를 0.01초 만에 찾아낸다.- 기술 체계: ChatGPT 같은 거대 언어 모델(LLM)에 장기 기억력을 부여하는 RAG(488번 문서) 아키텍처의 필수 엔진이며, Milvus, Pinecone, Qdrant 등이 대표적이다.
Ⅰ. 개요: 단어를 숫자로 바꾸는 마법 (Context & Necessity)
"사과"와 "바나나"는 과일이다. "강아지"는 동물이다. 인간은 이 단어들의 '의미'를 안다. 하지만 컴퓨터는 모른다. 컴퓨터에게 "사과랑 비슷한 거 찾아줘"라고 하면 RDBMS는 아무 대답도 하지 못한다.
그래서 천재들은 **임베딩(Embedding)**이라는 마법을 발명했다.
- AI 모델에게 세상의 모든 단어를 읽게 한 뒤, 단어마다 **좌표(벡터)**를 찍어주게 했다.
사과:[0.9, 0.1, 0.8](과일 축 0.9, 동물 축 0.1, 달콤함 축 0.8)바나나:[0.8, 0.1, 0.9]강아지:[0.1, 0.9, 0.2]
이제 컴퓨터도 의미를 안다. "사과랑 바나나의 좌표 거리가 엄청 가깝네? 둘이 비슷한 거구나! 강아지는 멀리 떨어져 있네!" 이 엄청난 양의 숫자 덩어리(좌표)들을 저장하고 관리하며, 내 질문과 가장 가까운 좌표를 빛의 속도로 찾아주는 창고가 바로 벡터 데이터베이스다.
📢 섹션 요약 비유: 일반 DB가 책장에 꽂힌 책의 **'제목표'**를 보고 정확히 그 책만 꺼내오는 사서라면, 벡터 DB는 책의 내용을 모두 읽고 **'비슷한 주제의 책들끼리 모아둔 거대한 우주 공간'**과 같습니다. "우주선 나오는 책 찾아줘"라고 하면 우주 공간의 특정 좌표(위치)로 날아가 그 주변에 둥둥 떠 있는 책들을 한 움큼 집어오는 마법의 사서입니다.
Ⅱ. 벡터 DB의 3대 핵심 기능 ★
1. 임베딩(Embedding) 저장
- RDBMS의
VARCHAR나INT대신, 데이터베이스 컬럼 자체가 거대한 배열(Array) 구조를 갖는다. 보통 768개나 1536개의 실수(Float)로 이루어진 벡터를 통째로 저장한다.
2. 유사도 검색 (Similarity Search)
SELECT * FROM Table WHERE name = '사과'가 아니다.SELECT * FROM Table ORDER BY distance(내질문벡터, 저장된벡터) ASC LIMIT 5- 즉, 내 질문의 좌표와 가장 가까운(거리가 짧은) 데이터 5개를 랭킹 매겨서 가져온다. (이 거리를 재는 방식이 486번 문서의 코사인 유사도다.)
3. ANN (근사 최근접 이웃) 인덱싱
- 1억 개의 데이터와 내 질문의 거리를 일일이 다 계산하면 10분이 걸린다.
- 그래서 벡터 DB는 '정확히 제일 가까운 놈'을 찾는 걸 포기하고, **'대충 제일 가까워 보이는 놈(근사치)'**을 0.01초 만에 찾는 HNSW(487번 문서) 같은 특수 인덱스를 쓴다.
Ⅲ. 실무 활용: AI의 기억 저장소
벡터 DB는 2023년 챗GPT 열풍과 함께 IT 인프라의 중심으로 떠올랐다.
- 추천 시스템: 내가 산 옷의 이미지 벡터와 가장 거리가 가까운 옷들을 쇼핑몰에서 추천해 준다.
- 시맨틱 검색 (Semantic Search): "에어컨 바람막이"라고 검색해도, "무풍 에어컨 가림막"이라는 단어가 들어간 상품을 찰떡같이 찾아준다. (의미가 같으니까 벡터 거리가 가깝다)
- RAG (검색 증강 생성): 챗GPT에게 회사의 비밀 문서를 외우게 할 수 없으니, 비밀 문서를 벡터 DB에 넣어두고 챗GPT가 대답할 때마다 벡터 DB에서 비슷한 문장을 찾아서 컨닝 페이퍼로 건네준다.
┌──────────────────────────────────────────────────────────────┐
│ 일반 DB (Keyword) vs 벡터 DB (Semantic) 검색 시각화 │
├──────────────────────────────────────────────────────────────┤
│ │
│ [ 👨💻 사용자 검색어 ] : "따뜻한 겨울옷" │
│ │
│ 1️⃣ [ 🗄️ 일반 RDBMS (Like 검색) ] │
│ WHERE 상품명 LIKE '%따뜻한 겨울옷%' │
│ 결과: 0건 💥 (상품명이 '발열 패딩'이라서 글자가 안 똑같음!) │
│ │
│ 2️⃣ [ 🌌 벡터 DB (유사도 검색) ] │
│ "따뜻한 겨울옷" ──(AI 모델 변환)──▶ 좌표 [0.5, 0.9, 0.1] 생성 │
│ │
│ (벡터 DB의 우주 공간) │
│ [0.1, 0.1, 0.9] 수영복 (거리가 멂 - 버림) │
│ [0.6, 0.8, 0.2] 발열 패딩 🎯 (거리가 엄청 가깝다! 이걸 리턴하자!) │
│ │
│ ★ 특징: 글자 모양이 달라도, '의미(좌표)'가 비슷하면 무조건 찾아낸다! │
└──────────────────────────────────────────────────────────────┘
Ⅳ. 결론
"데이터베이스가 단어의 형태를 넘어 '의미'를 이해하기 시작했다."
벡터 DB는 데이터베이스 역사의 새로운 패러다임이다. 과거의 데이터 엔지니어들이 정형 데이터(숫자, 문자)를 예쁘게 깎아서 RDBMS에 넣는 데 목숨을 걸었다면, 이제는 비정형 데이터(사진, 음성, 긴 글)를 AI 모델에 던져서 벡터로 구워낸 뒤 거대한 우주 공간에 흩뿌리는 시대가 되었다. 벡터 DB는 독립적인 NoSQL(Pinecone 등)로 존재하기도 하지만, 최근에는 PostgreSQL(pgvector 확장)이나 Redis 같은 기존 강자들이 벡터 저장 기능을 흡수하며 하이브리드 형태로 진화하고 있다.
📌 관련 개념 맵
- 관련 계산법: Cosine Similarity (코사인 유사도 - 486번 문서)
- 인덱스 기술: ANN (Approximate Nearest Neighbor), HNSW (487번 문서)
- 활용 아키텍처: RAG (Retrieval-Augmented Generation - 488번 문서)
- 대표 DB 솔루션: Milvus, Pinecone, Chroma, Qdrant, FAISS
👶 어린이를 위한 3줄 비유 설명
- 일반 DB는 '사과'라는 단어를 찾을 때, 책장 바깥에 적힌 'ㅅ' 코너에 가서 정확히 '사과'라고 적힌 책만 꺼내오는 로봇이에요.
- 벡터 DB는 단어들을 커다란 방 안에 띄워놓는 마법의 방이에요. 달콤한 과일들은 방 왼쪽 구석에 옹기종기 모여있고, 맹수들은 오른쪽 구석에 모여있죠.
- 그래서 "바나나랑 비슷한 거 찾아줘!"라고 하면, 바나나가 둥둥 떠 있는 왼쪽 구석으로 날아가서 그 근처에 모여있는 '사과', '딸기'를 한 움큼 집어오는 아주 똑똑한 로봇이랍니다!