벡터 데이터베이스는 고차원 벡터를 다루기 위해 설계된 특화된 저장 시스템입니다. 고차원 벡터란 일반적으로 수백에서 수천 개의 부동소수점 숫자로 구성된 숫자 배열로, 머신러닝 모델이 의미를 표현하는 데 사용합니다. 단어, 문장, 이미지, 오디오 클립, 사용자 행동은 모두 벡터로 인코딩될 수 있으며, 벡터 데이터베이스는 이러한 임베딩을 수십억 개 저장하고 새로운 쿼리와 가장 가까운 매치를 밀리초 단위로 찾는 것을 가능하게 합니다.
벡터 데이터베이스의 작동 원리
대형 언어 모델이나 비전 인코더 같은 ML 모델이 임베딩을 생성하면, 해당 벡터는 원본 항목(텍스트, 이미지 파일, 제품 레코드 등)에 대한 참조와 함께 데이터베이스로 전송됩니다. 데이터베이스는 HNSW(Hierarchical Navigable Small World)나 IVF(Inverted File Index)와 같은 근사 최근접 이웃(ANN) 알고리즘을 사용해 인덱스를 구축합니다. 이러한 구조는 약간의 정확도를 희생하는 대신 대규모 데이터셋에서 훨씬 빠른 쿼리를 제공합니다. 검색 시점에는 애플리케이션이 새로운 임베딩을 쿼리로 전송하고, 인덱스는 일반적으로 코사인 유사도, 내적, 유클리드 거리와 같은 유사도 지표로 순위가 매겨진 상위 k개의 벡터를 반환합니다.
왜 중요한가
전통적인 키워드 검색은 "feline companion"와 "house cat"이 거의 같은 의미라는 것을 알 수 없지만, 이들의 임베딩은 벡터 공간에서 서로 가까이 위치하기 때문에 벡터 데이터베이스는 어쨌든 이 둘을 매치로 찾아냅니다. 이러한 기능이 바로 현대적인 시맨틱 검색, 추천 엔진, 이미지 및 오디오 검색, 이상 탐지, 그리고 검색 증강 생성(RAG)의 검색 단계를 뒷받침합니다. RAG에서는 LLM이 벡터 스토어에서 가져온 문서를 기반으로 응답을 생성합니다. 전용 인덱싱 없이는 수백만 개의 벡터를 하나씩 비교하는 것이 프로덕션 트래픽에는 너무 느릴 것입니다.
주요 유형과 예시
- 전용 벡터 데이터베이스: 처음부터 ANN 인덱스를 중심으로 설계된 Milvus, Qdrant, Weaviate, Pinecone 같은 목적에 맞춰 구축된 엔진입니다.
- 벡터 검색 라이브러리: 독립형 서비스가 아닌 애플리케이션 내부에서 실행되는 FAISS, Annoy 같은 경량 엔진입니다.
- 하이브리드 데이터베이스: PostgreSQL(pgvector 사용), Elasticsearch, MongoDB처럼 기존 문서 또는 관계형 기능에 벡터 인덱싱을 추가한 전통적인 저장소입니다.
- 관리형 클라우드 서비스: 더 광범위한 데이터 플랫폼과 벡터 검색을 통합하는 주요 클라우드 제공업체의 호스팅 서비스입니다.
이들 사이의 선택은 보통 규모, 지연 시간 요구사항, 구조화된 레코드와 함께 데이터가 존재하는지 여부, 그리고 팀이 감당할 수 있는 운영 부담의 정도에 따라 결정됩니다. 이 분야에서 가장 강력한 시스템들은 ANN-Benchmarks 리더보드와 같은 벤치마크로 평가되며, 이 리더보드는 대표적인 데이터셋에서 초당 쿼리 수 대비 재현율을 비교합니다.