벡터 데이터베이스는 문서를 그 임베딩과 함께 저장하고, 벡터 공간에서 최근접 이웃 검색을 수행해 질의에 응답합니다. 대규모 환경에서는 정확한 최근접 이웃 검색의 비용이 크기 때문에, 이러한 시스템은 Malkov & Yashunin(2018)의 HNSW 그래프 인덱스 같은 근사 기법과 FAISS(Johnson et al., 2017) 같은 GPU 가속 검색 라이브러리를 활용합니다.
그 결과 수백만 개의 문단을 대상으로 1초 이내에 의미 기반 검색이 가능해지며, 이것이 검색 증강 생성(RAG)을 실용화하는 저장 계층입니다.
벡터 데이터베이스는 어디에 쓰이나요?
기존 데이터베이스는 값이 정확히 일치하는 행을 찾지만, 벡터 데이터베이스는 의미가 가까운 항목을 찾습니다. “비밀번호를 재설정하려면 어떻게 하나요”라고 검색하면, 겹치는 단어가 거의 없더라도 “계정 접근 복구”라는 제목의 도움말 문서를 찾아 줄 수 있습니다. 그래서 벡터 데이터베이스는 다음과 같은 기능의 핵심 기반이 됩니다.
- 헬프 센터, 위키, 문서 보관소를 대상으로 한 시맨틱 검색
- 비공개 문서를 바탕으로 답변하는 RAG 챗봇
- 추천 — 상품, 기사, 음악의 “비슷한 항목 더 보기”
- 중복 및 유사 중복 탐지
- 이미지·오디오 유사도 검색
벡터 데이터베이스의 작동 원리
- 1임베딩 및 저장. 각 항목은 임베딩 모델을 통해 임베딩으로 변환되고, 원본 콘텐츠 및 메타데이터와 함께 저장됩니다.
- 2인덱싱. 벡터는 HNSW 같은 근사 인덱스로 구성되는데, 정확도를 약간 희생하는 대신 속도를 크게 높여 줍니다.
- 3질의. 질의도 같은 모델로 임베딩되며, 데이터베이스는 코사인 유사도 같은 유사도 척도를 기준으로 가장 가까운 벡터를 찾습니다.
- 4필터링 및 반환. 대부분의 시스템은 유사도 검색에 메타데이터 필터(날짜, 작성자, 권한)를 결합해 상위 결과를 반환하며, 이 결과는 흔히 리랭커로 전달됩니다.
벡터 데이터베이스와 기존 데이터베이스 비교
| 기존 데이터베이스 | 벡터 데이터베이스 | |
|---|---|---|
| 일치 기준 | 정확한 값과 키워드 | 의미상의 근접성 |
| 질의 | SQL 또는 키 조회 | 질문의 임베딩 |
| 인덱스 | B-트리 또는 역색인 | 근사 최근접 이웃 인덱스(예: HNSW) |
| 결과 | 조건에 일치하는 모든 행 | 가장 유사한 상위 k개 항목(순위순) |
선택지는 Pinecone, Weaviate, Milvus, Qdrant, Chroma 같은 전용 벡터 데이터베이스부터 PostgreSQL용 pgvector처럼 기존 데이터베이스에 벡터 검색 기능을 더하는 확장까지 다양합니다. 많은 팀에게는 별도의 시스템을 운영하기보다 이미 사용 중인 데이터베이스에 벡터 검색을 추가하는 편이 더 간단합니다.