벡터 데이터베이스는 텍스트·이미지 같은 데이터를 임베딩 벡터로 저장하고, 의미가 가장 비슷한 항목을 빠르게 찾아주는 데이터베이스입니다. 값이 정확히 일치해야 검색되는 일반 데이터베이스와 달리, 표현이 달라도 의미가 가까운 데이터를 찾아냅니다. RAG(검색 증강 생성)에서 문서 검색 단계를 담당하는 핵심 인프라입니다.
벡터 데이터베이스란 무엇인가?
벡터 데이터베이스는 텍스트·이미지 같은 데이터를 임베딩 벡터 형태로 저장하고, "의미가 가장 비슷한 항목"을 빠르게 찾아주는 데이터베이스입니다. 일반 데이터베이스가 정확히 일치하는 값을 찾는 데 최적화되어 있다면, 벡터 데이터베이스는 값이 정확히 같지 않아도 의미상 가까운 데이터를 찾아내는 데 특화되어 있습니다. RAG(검색 증강 생성)를 구현할 때 문서 검색 단계를 담당하는 핵심 인프라이기도 합니다.
한마디로 요약하면, 벡터 데이터베이스는 "숫자로 변환된 의미"를 저장해두고 비슷한 의미를 가진 데이터를 순위대로 꺼내주는 저장소입니다. 용어 자체의 짧은 정의는 벡터 데이터베이스 용어 페이지에도 정리되어 있습니다.
일반 데이터베이스와 무엇이 다른가?
관계형 데이터베이스는 조건과 정확히 일치하는 행을 찾습니다. 값이 조금만 달라도 검색되지 않습니다. 반면 벡터 데이터베이스는 각 데이터를 고차원 벡터로 표현해두고, 검색어도 같은 방식으로 벡터화한 뒤 두 벡터 사이의 거리를 계산해 가장 가까운 항목 순으로 결과를 반환합니다.
| 구분 | 관계형 DB | 벡터 DB |
|---|---|---|
| 검색 방식 | 정확히 일치 | 의미 유사도 |
| 판단 기준 | 값 동일 여부 | 벡터 거리 |
| 예시 | "홍길동" 완전 일치 | "환불 정책" ≈ "반품 규정" |
거리 계산에는 코사인 유사도, 유클리드 거리 등이 쓰입니다. 그래서 "환불 정책"이라는 검색어로 "반품 규정 안내"라는 제목의 문서도 찾아낼 수 있습니다. 표현은 다르지만 의미가 비슷하기 때문입니다.
벡터 데이터베이스는 어떻게 동작하나?
동작 과정은 대략 세 단계로 나눌 수 있습니다.
- 임베딩 생성: 문서를 문단이나 문장 단위로 나눈 뒤, 임베딩 모델을 이용해 각 조각을 벡터로 변환합니다.
- 인덱싱: 변환된 벡터를 빠르게 검색할 수 있도록 인덱스 구조로 저장합니다. 데이터가 많아질수록 모든 벡터를 하나씩 비교하는 대신, 근사 최근접 이웃(ANN) 알고리즘으로 검색 속도를 높입니다.
- 유사도 검색: 사용자 질문을 같은 방식으로 벡터화한 뒤, 인덱스에서 가장 가까운 벡터들을 찾아 원본 텍스트와 함께 반환합니다.
이렇게 찾아낸 문단은 RAG 흐름에서 언어 모델에 함께 전달되어, 모델이 근거를 참고해 답변을 생성하는 데 쓰입니다.
벡터 검색과 벡터 데이터베이스는 무엇이 다른가?
벡터 검색과 벡터 데이터베이스는 자주 같은 말처럼 쓰이지만, 하나는 "동작"이고 다른 하나는 "저장소"입니다.
- **벡터 검색(vector search)**은 벡터 사이의 거리로 의미가 가까운 항목을 찾아내는 동작이자 기법입니다. 임베딩에서 다루는 "의미 검색(시맨틱 검색)"이 바로 이 벡터 검색을 가리킵니다.
- 벡터 데이터베이스는 그 벡터 검색을 대규모로 빠르게 수행하도록 벡터를 저장하고 인덱싱하는 저장소이자 인프라입니다.
| 구분 | 벡터 검색 | 벡터 데이터베이스 |
|---|---|---|
| 성격 | 동작·기법 | 저장소·인프라 |
| 하는 일 | 의미 가까운 항목 찾기 | 벡터 저장·인덱싱 |
| 다른 이름 | 시맨틱 검색 | 벡터 스토어 |
벡터 검색이 반드시 전용 데이터베이스를 필요로 하는 것은 아닙니다. 문서가 적을 때는 벡터를 메모리에 올려 직접 비교할 수 있고, FAISS 같은 라이브러리나 pgvector처럼 기존 데이터베이스에 벡터 기능을 더한 확장으로도 수행할 수 있습니다. 데이터가 커져 검색 속도와 정확도를 함께 유지하기 어려워지면, 그때 전용 벡터 데이터베이스로 옮겨 갑니다.
벡터 데이터베이스는 언제 필요할까?
문서 수가 적을 때는 모든 벡터를 메모리에 두고 직접 비교해도 충분할 수 있습니다. 하지만 문서가 수만~수백만 건으로 늘어나면 검색 속도와 정확도를 함께 유지하기 위해 전용 벡터 데이터베이스나 벡터 검색 기능이 필요해집니다.
사내 지식베이스 검색, 추천 시스템, 중복 문서 탐지, 이미지 유사도 검색처럼 "정확히 같은 값"이 아니라 "의미가 비슷한 값"을 찾아야 하는 작업이라면 벡터 데이터베이스 도입을 고려할 만합니다. 다만 벡터 저장·인덱싱·갱신을 관리하는 운영 부담이 늘어난다는 점도 함께 고려해야 합니다.
자주 묻는 질문
- Q. 벡터 데이터베이스가 꼭 있어야 RAG를 만들 수 있나요?
- A. 아닙니다. 문서가 적으면 벡터를 메모리에 두고 직접 비교해도 됩니다. 문서가 수만~수백만 건으로 늘어 검색 속도·정확도 관리가 필요해질 때 전용 벡터 데이터베이스를 도입합니다.
- Q. 일반 데이터베이스로는 의미 검색이 안 되나요?
- A. 관계형 데이터베이스는 값이 정확히 일치하는 행을 찾도록 최적화돼 있어, 표현이 다르지만 의미가 비슷한 데이터를 찾는 데는 한계가 있습니다. 벡터 데이터베이스는 벡터 거리로 의미가 가까운 항목을 찾습니다.
- Q. 데이터가 많아지면 검색이 느려지지 않나요?
- A. 모든 벡터를 하나씩 비교하는 대신 근사 최근접 이웃(ANN) 알고리즘으로 인덱싱해 검색 속도를 높입니다. 이것이 벡터 데이터베이스가 대량 데이터에서 빠른 검색을 유지하는 방식입니다.
- Q. 벡터 검색과 벡터 데이터베이스는 같은 말인가요?
- A. 아닙니다. 벡터 검색은 벡터 거리로 의미가 가까운 항목을 찾는 동작(시맨틱 검색)이고, 벡터 데이터베이스는 그 검색을 빠르게 하도록 벡터를 저장·인덱싱하는 저장소입니다. 벡터 검색은 라이브러리나 기존 DB의 벡터 확장으로도 할 수 있고, 규모가 커지면 전용 벡터 데이터베이스를 씁니다.
정리
벡터 데이터베이스는 임베딩으로 표현된 의미를 저장하고, 의미가 가까운 데이터를 빠르게 찾아주는 저장소입니다. RAG의 검색 품질은 결국 이 벡터 검색이 얼마나 정확한 문단을 찾아내는지에 달려 있습니다. LLM과 벡터 검색이 결합되는 전체 그림이 궁금하다면 LLM이란 무엇인가 글을 먼저 읽어보는 것을 추천합니다.