벡터 데이터베이스는 생성형 인공 지능(AI) 사용 사례 및 애플리케이션을 구동하는 데 필요한 속도와 성능을 제공하기 때문에 인기가 높아지고 있습니다. Gartner에 따르면, 기업의 30% 이상이 2026년까지 관련 비즈니스 데이터로 파운데이션 모델을 구축하기 위해 벡터 데이터베이스를 채택할 것이라고 합니다.1
행과 열이 있는 기존 관계형 데이터베이스와 달리 벡터 데이터베이스의 데이터 포인트는 고정된 개수의 차원을 가진 벡터로 표현됩니다. 벡터 데이터베이스는 고차원 벡터 임베딩을 사용하기 때문에 비정형 데이터 세트를 더 잘 처리할 수 있습니다.
데이터의 특성이 크게 바뀌고 있습니다. 데이터는 더 이상 기존 데이터베이스에 쉽게 저장할 수 있는 정형화된 정보에만 국한되지 않습니다. 소셜 미디어 게시물, 이미지, 비디오, 오디오 클립 등을 포함한 비정형 데이터는 매년 30%에서 60%까지 증가하고 있습니다.2
관계형 데이터베이스는 특정 형식의 정형 및 반정형 데이터 세트를 관리하는 데 탁월합니다. 인공 지능(AI)에 사용할 데이터를 저장, 관리 및 준비하기 위해 비정형 데이터 소스를 기존 관계형 데이터베이스에 로드하는 것은 노동 집약적인 프로세스이며, 특히 유사성 검색과 같은 새로운 생성 사용 사례의 경우 더욱 그렇습니다.
기존 검색은 일반적으로 키워드, 태그 또는 메타데이터와 같은 개별 토큰이나 기능을 사용하여 데이터를 나타냅니다. 기존 검색에서는 정확히 일치하는 항목을 기반으로 관련 결과를 검색합니다. 예를 들어 '스마트폰'을 검색하면 '스마트폰'이라는 단어가 포함된 결과가 반환됩니다.
이와 반대로, 벡터 검색은 데이터를 고밀도 벡터로 표현하며, 이는 대부분의 요소 또는 모든 요소가 0이 아닌 벡터입니다. 벡터는 데이터가 벡터로 표현되는 수학적 공간인 연속 벡터 공간으로 표현됩니다.
벡터 표현을 사용하면 유사성 검색이 가능합니다. 예를 들어, '스마트폰'을 벡터로 검색하면 '휴대전화' 및 '모바일 디바이스'에 대한 결과도 반환될 수 있습니다.
고밀도 벡터의 각 차원은 데이터의 잠재적 특징 또는 측면에 해당합니다. 잠재적 특징이란 직접적으로 관찰되지 않으나 수학적 모델이나 알고리즘을 통해 데이터에서 추론되는 기본적인 특성이나 속성을 말합니다.
잠재적 특징은 데이터의 숨겨진 패턴과 관계를 포착하여 항목을 고차원 공간에서 벡터로 보다 의미 있고 정확하게 표현할 수 있게 해줍니다.
벡터는 텐서의 하위 집합으로, 머신 러닝(ML)에서 n차원 공간에 있는 숫자 그룹 또는 숫자 그룹을 가리키는 일반적인 용어입니다. 텐서는 데이터에 대한 수학적 부기 장치 역할을 합니다. 다음과 같이 가장 작은 요소부터 작업합니다.
벡터 숫자는 ML 모델에서 생성된 단어, 이미지, 동영상, 오디오와 같은 복잡한 객체를 나타낼 수 있습니다. 여러 특징을 포함하는 이 고차원 벡터 데이터는 머신 러닝, 자연어 처리(NLP) 및 기타 AI 작업에 필수적입니다. 벡터 데이터의 몇 가지 예는 다음과 같습니다.
벡터 임베딩은 단어, 오디오 또는 이미지와 같은 비수학적 데이터를 비롯한 다양한 유형의 데이터를 ML 모델이 처리할 수 있는 숫자 배열로 변환하는 데이터 포인트를 수치로 표현한 것입니다.
간단한 선형 회귀 알고리즘부터 딥 러닝에 사용되는 복잡한 신경망에 이르기까지 인공 지능(AI) 모델은 수학적 논리를 통해 작동합니다.
비정형 데이터를 포함하여 AI 모델이 사용하는 모든 데이터는 숫자로 기록되어야 합니다. 벡터 임베딩은 비정형 데이터 포인트를 해당 데이터의 원래 의미를 표현하는 숫자 배열로 변환하는 방법입니다.
다음은 각 단어가 3차원 벡터로 표현되는 아주 작은 말뭉치(2단어)에 대한 단어 임베딩의 간단한 예시입니다.
이 예제에서 각 단어('고양이')는 고유한 벡터([0. 2, -0. 4,0. 7])와 연결됩니다. 벡터의 값은 연속된 3차원 벡터 공간에서 단어의 위치를 나타냅니다.
유사한 의미나 컨텍스트를 가진 단어는 유사한 벡터 표현을 가질 것으로 예상됩니다. 예를 들어 "고양이" 및 "개"의 벡터는 의미 관계를 반영하여 서로 가깝게 배치되어 있습니다.
임베딩 모델은 데이터 포인트를 벡터로 변환하도록 학습됩니다. 벡터 데이터베이스는 이러한 임베딩 모델의 아웃풋을 저장하고 인덱싱합니다. 데이터베이스 내에서 벡터는 사실상 모든 데이터 유형에서 의미론적 의미 또는 특징을 기반으로 함께 그룹화되거나 반대되는 것으로 식별될 수 있습니다.
벡터 임베딩은 추천, 챗봇 및 ChatGPT와 같은 생성형 앱의 근간을 이룹니다.
예를 들어 '자동차'와 '차량'이라는 단어를 생각해 보세요. 이 두 단어는 의미는 비슷하지만 철자가 다릅니다. AI 애플리케이션에서 효과적인 시맨틱 검색을 가능하게 하려면 '자동차'와 '차량'의 벡터 표현이 의미론적 유사성을 포착해야 합니다. 머신 러닝에서 임베딩은 이 시맨틱 정보를 인코딩하는 고차원 벡터를 나타냅니다.
벡터 데이터베이스는 AI 및 ML 애플리케이션에서 다음과 같은 세 가지 주요 기능을 제공합니다.
작동 시 벡터 데이터베이스는 여러 알고리즘을 사용하여 근사 최인접 이웃(ANN) 검색을 수행합니다. 그런 다음 알고리즘이 파이프라인에 수집되어 쿼리된 벡터에 인접한 데이터를 빠르고 정확하게 검색하고 전달합니다.
예를 들어, ANN 검색은 전자 상거래 카탈로그에서 시각적으로 유사한 제품을 찾을 수 있습니다. 추가 용도로는 이상 탐지, 분류 및 시맨틱 검색이 있습니다. 데이터 세트는 모델을 한 번만 실행하기 때문에 결과가 밀리초 이내에 반환됩니다.
벡터 데이터베이스는 임베딩 모델 알고리즘의 아웃풋인 벡터 임베딩을 저장합니다. 또한 제목, 설명 및 데이터 유형을 포함한 각 벡터의 메타데이터를 저장하며, 메타데이터 필터를 사용하여 쿼리할 수 있습니다.
데이터베이스는 이러한 임베딩을 수집하고 저장함으로써 유사성 검색을 빠르게 조회하여 사용자의 프롬프트와 유사한 벡터 임베딩을 일치시킬 수 있습니다.
고차원 데이터 공간 내에서 검색 속도를 높이려면 벡터를 인덱싱해야 합니다. 벡터 데이터베이스는 검색 기능을 위해 벡터 임베딩에 인덱스를 생성합니다.
벡터 데이터베이스는 ML 알고리즘을 사용하여 벡터를 인덱싱합니다. 인덱싱은 벡터를 새로운 데이터 구조에 매핑하여 벡터 간의 최근접 이웃 검색과 같은 유사성이나 거리 검색을 더 빠르게 수행할 수 있도록 합니다.
벡터는 계층적 탐색 가능한 작은 세계(HNSW), 지역 민감 해싱(LSH) 또는 제품 양자화(PQ) 등의 알고리즘을 사용하여 인덱싱할 수 있습니다.
쿼리 벡터는 검색 쿼리를 벡터로 표현한 것입니다. 사용자가 AI 모델을 쿼리하거나 프롬프트할 때 모델은 쿼리 또는 프롬프트의 임베딩을 계산합니다. 그런 다음 데이터베이스는 쿼리 벡터와 인덱스에 저장된 벡터 사이의 거리를 계산하여 유사한 결과를 반환합니다.
데이터베이스는 최근접 이웃 검색과 같은 다양한 알고리즘을 사용하여 벡터 사이의 거리를 측정할 수 있습니다. 측정은 코사인 유사성과 같은 다양한 유사성 메트릭을 기반으로 이루어질 수도 있습니다.
데이터베이스는 유사성 순위에 따라 쿼리 벡터와 가장 유사한 벡터 또는 최근접 이웃을 반환합니다. 이러한 계산은 추천 시스템, 시맨틱 검색, 이미지 인식 및 기타 자연어 처리 작업과 같은 다양한 머신 러닝 작업을 지원합니다.
벡터 데이터베이스는 다음과 같은 많은 이점을 제공할 수 있기 때문에 엔터프라이즈 AI 기반 애플리케이션을 구동하는 데 널리 사용되는 방법입니다.
벡터 데이터베이스는 다양한 인덱싱 기술을 사용하여 더 빠른 검색을 가능하게 합니다. 벡터 인덱싱 및 최근접 이웃 검색과 같은 거리 계산 알고리즘은 수십억 개는 아니더라도 수백만 개의 데이터 포인트가 있는 대규모 데이터 세트에서 관련 결과를 검색할 때 성능을 최적화하는 데 도움이 될 수 있습니다.
한 가지 고려 사항은 벡터 데이터베이스가 대략적인 결과를 제공한다는 점입니다. 더 높은 정확도가 필요한 애플리케이션은 처리 속도가 느려지더라도 다른 종류의 데이터베이스를 사용해야 할 수도 있습니다.
벡터 데이터베이스는 추가 노드에 따라 수평적으로 확장하여 방대한 양의 비정형 데이터를 저장하고 관리할 수 있으며, 쿼리 수요와 데이터 볼륨이 증가하더라도 성능을 유지할 수 있습니다.
벡터 데이터베이스는 더 빠른 데이터 검색을 가능하게 하기 때문에 파운데이션 모델의 학습 속도를 높입니다.
벡터 데이터베이스는 일반적으로 새로운 비정형 데이터를 쉽게 업데이트하고 삽입할 수 있는 기능을 기본으로 제공합니다.
벡터 데이터베이스는 이미지, 동영상 또는 기타 다차원 데이터를 사용할 때 추가되는 복잡성을 처리하도록 구축되었습니다.
시맨틱 검색에서 대화형 AI 애플리케이션에 이르기까지 다양한 사용 사례가 있다는 점을 고려할 때, 벡터 데이터베이스는 비즈니스 및 AI 요구 사항에 맞게 맞춤화하여 사용할 수 있습니다. 조직은 IBM Granite 시리즈 모델, Meta의 Llama-2 또는 Google의 Flan과 같은 범용 모델로 시작한 다음 벡터 데이터베이스에 자체 데이터를 제공하여 모델 및 AI 애플리케이션의 아웃풋을 향상시킬 수 있습니다.
조직은 벡터 데이터베이스 기능을 선택할 때 다양한 옵션을 선택할 수 있습니다. 많은 조직이 데이터 및 AI 요구 사항을 충족하는 솔루션을 찾기 위해 다음을 고려합니다.
몇 가지 대안 중에서 선택할 수 있습니다.
벡터 데이터베이스는 독립 실형형 기능이 아니라 광범위한 데이터 및 AI 에코시스템의 일부로 생각해야 합니다.
대부분은 API, 기본 확장 기능을 제공하거나 데이터베이스와 통합할 수 있습니다. 벡터 데이터베이스는 엔터프라이즈 데이터를 사용하여 모델을 개선하도록 구축되었기 때문에 조직은 대규모 언어 모델(LLM)을 훈련하는 데 사용되는 데이터를 신뢰할 수 있도록 적절한 데이터 거버넌스 및 보안을 갖추고 있어야 합니다.
API 외에도 많은 벡터 데이터베이스는 API를 포괄할 수 있는 프로그래밍 언어별 소프트웨어 개발 키트(SDK)를 사용합니다. 개발자는 SDK를 사용하여 앱에서 데이터로 더 쉽게 작업할 수 있습니다.
벡터 저장소와 인덱스를 사용하는 것은 복잡한 문서에서 특정 정보를 추출하는 것과 같이 팩트 또는 팩트 기반 쿼리를 기반으로 하는 애플리케이션에 적합합니다.
그러나 주제에 대한 요약을 얻고자 하는 경우는 벡터 인덱스에 적합하지 않습니다. 이 경우 LLM은 데이터 내에서 해당 주제에 대해 가능한 모든 컨텍스트를 검토합니다.
더 빠른 옵션은 벡터 인덱스가 아닌 목록 인덱스와 같은 다른 종류의 인덱스를 사용하는 것인데, 목록 인덱스는 각 목록의 첫 번째 요소를 즉시 가져옵니다.
벡터 데이터베이스 개발을 최적화하는 데 사용하는 LangChain은 LLM을 사용하는 애플리케이션을 개발하기 위한 오픈 소스 오케스트레이션 프레임워크입니다.
Python 기반 라이브러리와 JavaScript 기반 라이브러리 모두에서 사용할 수 있는 LangChain의 툴과 API는 챗봇 및 가상 에이전트와 같은 LLM 기반 앱을 구축하는 프로세스를 단순화합니다. LangChain은 25개 이상의 다양한 임베딩 방법과 50개 이상의 다양한 벡터 저장소(클라우드 호스팅 및 로컬 모두)에 대한 통합을 제공합니다.
엔터프라이즈급 AI를 구동하기 위해 데이터 레이크하우스를 통합 벡터 데이터베이스와 페어링할 수 있습니다. 조직은 신뢰할 수 있고 관리되는 데이터에서 생성형 AI 애플리케이션을 위한 벡터화된 임베딩을 대규모로 통합, 선별 및 준비할 수 있습니다. 이를 통해 챗봇, 개인화된 추천 시스템 및 이미지 유사성 검색 애플리케이션을 포함한 AI 워크로드의 관련성과 정밀도를 향상시킬 수 있습니다.
벡터 데이터베이스의 응용 분야는 방대하고 계속 성장하고 있습니다. 몇 가지 주요 사용 사례는 다음과 같습니다.
검색 증강 생성(RAG)은 대규모 언어 모델(LLM)이 외부 지식 기반에서 팩트를 검색할 수 있도록 하는 AI 프레임워크입니다. 벡터 데이터베이스는 RAG 구현을 지원하는 데 핵심적인 역할을 합니다.
기업들은 더 빠른 시장 출시, 효율적인 추론 및 신뢰할 수 있는 결과를 위해 생성형 AI 워크플로에서 RAG를 점점 더 선호하고 있습니다. 이 프레임워크는 고객 관리, 인사 및 인재 관리와 같은 사용 사례에 특히 유용합니다.
RAG는 모델이 신뢰할 수 있는 최신 팩트에 연결되고 사용자가 모델의 소스에 액세스하여 주장을 확인할 수 있도록 지원합니다. LLM을 신뢰할 수 있는 데이터에 고정하면 모델 할루시네이션을 줄이는 데 도움이 될 수 있습니다.
RAG는 고차원 벡터 데이터를 사용하여 파운데이션 모델에 의한 컨텍스트 내 학습을 위해 의미적으로 관련성이 높은 정보로 프롬프트를 강화합니다. 많은 양의 데이터를 처리하는 추론 단계에서 저장 및 검색을 효과적으로 처리할 수 있어야 합니다.
벡터 데이터베이스는 이러한 고차원 벡터를 효율적으로 인덱싱, 저장 및 검색하는 데 탁월한 성능을 발휘하여 추천 엔진 및 챗봇과 같은 애플리케이션에 필요한 속도, 정밀도 및 확장성을 제공합니다.
벡터 데이터베이스는 특히 RAG 프레임워크를 구현하는 데 사용될 때 관련 지식 기반을 효율적이고 정확하게 구문 분석하는 에이전트의 능력을 향상시켜 가상 에이전트 상호 작용을 개선하는 데 도움이 될 수 있습니다. 에이전트는 참조용 소스 문서 및 페이지 번호와 함께 사용자 쿼리에 대한 실시간 상황에 맞는 답변을 제공할 수 있습니다.
예를 들어, 전자 상거래 사이트는 벡터를 사용하여 고객 선호도와 제품 속성을 나타낼 수 있습니다. 이를 통해 벡터 유사성을 기반으로 고객이 과거에 구매한 것과 유사한 상품을 제안하여 사용자 경험을 개선하고 유지율을 높일 수 있습니다.
이 검색 기술은 대규모 컬렉션에서 일반적으로 벡터로 표현되는 유사한 항목이나 데이터 포인트를 검색하는 데 사용됩니다. 벡터 검색은 요소 간의 의미적 관계를 포착하여 머신 러닝 모델과 인공 지능 애플리케이션의 효과적인 처리를 가능하게 합니다.
이러한 검색은 여러 가지 형태를 취할 수 있습니다.
1 Gartner Innovation Insight: Vector Databases, Gartner, 2023년 9월 4일.
2 2024 Strategic Roadmap for Storage, Gartner, 2024년 5월 27일.