벡터 데이터베이스란?

벡터 데이터베이스는 정보를 벡터로 저장합니다. 벡터 데이터베이스는 관련 항목을 한데 묶어주므로 유사도 검색과 강력한 AI 모델 구축이 가능합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 벡터와 벡터 데이터베이스 설명
  • 임베딩 이해하기
  • 벡터 데이터베이스의 용도 목록

글 링크 복사

벡터 데이터베이스란?

벡터 데이터베이스는 수학적 표현으로 저장된 데이터의 모음입니다. 벡터 데이터베이스를 사용하면 머신 러닝 모델이 이전 입력을 더 쉽게 기억할 수 있으므로 강력한 검색, 추천, 텍스트 생성 사용 사례에 머신 러닝을 사용할 수 있습니다. 정확한 일치 대신 유사성 메트릭을 기반으로 데이터를 식별할 수 있으므로 컴퓨터 모델이 맥락에 맞게 데이터를 이해할 수 있습니다.

신발 매장을 방문하면 판매원이 고객이 선호하는 신발과 비슷한 신발을 추천할 수 있습니다. 마찬가지로 전자 상거래 매장에서 쇼핑할 때 매장에서는 "고객들은 이런 것도 구매하셨어요..."와 같은 말로 시작하면서 유사한 품목을 제안할 수 있습니다. 판매원이 유사한 신발을 찾고 전자 상거래 매장에서 관련 상품을 제안할 수 있는 것처럼, 벡터 데이터베이스를 사용하면 머신 러닝 모델이 유사한 품목을 식별할 수 있습니다. (실제로 전자 상거래 매장에서 이러한 머신 러닝 모델을 사용할 수 있습니다.)

요약하면, 벡터 데이터베이스를 사용하면 컴퓨터 프로그램이 비교를 도출하고, 관계를 식별하며, 컨텍스트를 이해할 수 있습니다. 이를 통해 대규모 언어 모델(LLM)과 같은 고급 인공 지능(AI) 프로그램을 만들 수 있습니다.

임베딩 - 벡터 공간의 문서가 함께 클러스터링됩니다

이 간단한 벡터 데이터베이스에서 오른쪽 상단의 문서들은 서로 비슷할 가능성이 높습니다.

벡터란?

벡터는 여러 차원을 따라 부동 소수점의 위치를 표현하는 숫자 값의 배열입니다.

좀 더 일상적인 언어로 설명하면 벡터는 다음과 같은 숫자의 목록입니다. {12, 13, 19, 8, 9}. 이들 숫자는 스프레드시트에서 행과 열 번호가 특정 셀을 나타내는 것처럼 공간 내의 위치를 나타냅니다(예: "B7").

벡터 데이터베이스는 어떻게 작동할까요?

벡터 데이터베이스의 각 벡터는 단어, 이미지, 비디오, 동영상, 문서, 기타 데이터 등 개체 또는 항목에 해당합니다. 이러한 벡터는 각 개체의 위치를 수십 또는 수백 개의 규모로 표현하므로 길고 복잡할 수 있습니다.

예를 들어, 영화의 벡터 데이터베이스는 러닝타임, 장르, 개봉 연도, 청소년 관람불가 등급, 공통 출연 배우 수, 공통 시청자 수 등의 기준에 따라 영화를 찾을 수 있습니다. 이러한 벡터가 정확하게 생성되면 유사한 영화가 벡터 데이터베이스에 함께 클러스터링될 가능성이 높습니다.

벡터 데이터베이스는 어떻게 사용될까요?

  • 유사성 및 시맨틱 검색: 벡터 데이터베이스를 통해 애플리케이션에서 관련성 있는 항목을 서로 연결할 수 있습니다. 함께 클러스터링된 벡터는 유사하며 서로 관련성이 있을 가능성이 높습니다.이는 사용자가 관련 정보(예: 이미지 검색)를 검색하는 데 도움이 될 뿐만 아니라 애플리케이션에도 도움이 됩니다:
    • 유사 제품 추천
    • 노래, 영화, 프로그램 추천
    • 이미지 또는 동영상 추천
  • 머신 러닝과 딥러닝: 관련 정보 항목을 연결하는 기능을 통해 복잡한 인지 작업을 수행할 수 있는 머신 러닝(및 딥러닝) 모델을 구축할 수 있습니다.
  • 대규모 언어 모델(LLM) 및 생성형 AI: ChatGPT와 Bard 구축의 토대가 된 것과 같은 LLM은 벡터 데이터베이스를 통해 가능해진 텍스트의 문맥 분석에 의존합니다. LLM은 단어, 문장, 아이디어를 서로 연결하여 자연스러운 인간 언어를 이해하고 텍스트를 생성할 수도 있습니다.

임베딩이란?

임베딩신경망에 의해 생성된 벡터입니다. 딥러닝 모델을 위한 일반적인 벡터 데이터베이스는 임베딩으로 구성됩니다. 신경망을 적절히 미세 조정하면 임베딩을 자체적으로 생성할 수 있으므로 수동으로 생성할 필요가 없습니다. 이러한 임베딩은 앞서 설명한 대로 유사성 검색, 문맥 분석, 생성형 AI 등에 사용할 수 있습니다.

벡터 데이터베이스를 사용하면 어떤 이점이 있을까요?

벡터 데이터베이스 없이 머신 러닝 모델을 자체적으로 쿼리하는 것은 빠르지도 않고 비용 효율적이지도 않습니다. 머신 러닝 모델은 학습한 것 외에는 아무것도 기억하지 못합니다. 매번 컨텍스트가 있어야 합니다(대부분의 단순 챗봇이 그렇듯이).

쿼리의 컨텍스트를 매번 모델에 전달하면 데이터가 많을 가능성이 높기 때문에 매우 느리고, 데이터가 이동해야 하고 모델이 동일한 데이터를 구문 분석하는 데 반복해서 컴퓨팅 성능을 소비해야 하므로 비용이 많이 듭니다. 그리고 실제로 대부분의 머신 러닝 API는 한 번에 받아들일 수 있는 데이터의 양에 제한이 있을 가능성이 높습니다.

이때 벡터 데이터베이스가 유용합니다. 데이터 세트가 모델을 한 번만(또는 주기적으로 변경될 때마다) 통과하고 해당 데이터의 모델 임베딩이 벡터 데이터베이스에 저장됩니다.

이렇게 하면 처리 시간이 엄청나게 절약됩니다. 모델이 전체 데이터 세트를 분석할 때까지 기다릴 필요 없이 수십 밀리초 내에 결과가 나오므로 시맨틱 검색, 분류, 이상 징후 감지를 중심으로 사용자 대면 애플리케이션을 구축할 수 있습니다.

쿼리의 경우 개발자는 머신 러닝 모델에 해당 쿼리만 표현(임베딩)해 달라고 요청합니다. 그런 다음 임베딩을 벡터 데이터베이스로 전달하면 이미 모델을 통해 실행된 유사한 임베딩을 벡터 데이터베이스에서 반환할 수 있습니다. 그런 다음 이러한 임베딩을 페이지의 URL, 이미지 링크, 제품 SKU 등 원래 콘텐츠에 다시 매핑할 수 있습니다.

요약: 벡터 데이터베이스는 대규모로 작동하고, 빠르게 작동하며, 벡터 데이터베이스 없이 머신 러닝 모델을 쿼리하는 것보다 더 비용 효율적입니다.

Cloudflare에서는 벡터 데이터베이스 사용 기능을 제공할까요?

Vectorize는 Cloudflare에서 제공하는 전 세계적으로 분산된 벡터 데이터베이스입니다. Cloudflare Workers를 기반으로 구축된 애플리케이션은 Vectorize를 사용하여 Workers KV에 저장된 문서, R2에 저장된 이미지 또는 D1에 저장된 사용자 프로필을 쿼리할 수 있습니다. Workers를 통해 개발자가 백엔드 인프라를 가동하지 않고도 애플리케이션을 구축할 수 있는 것처럼, Vectorize를 통해 개발자는 자체 벡터 데이터베이스 인프라를 구축하지 않고도 애플리케이션에 AI 기능을 구축할 수 있습니다. 또한 임베딩을 생성하기 위해 Cloudflare에서는 Workers AI를 제공합니다.

Cloudflare에서 AI 기반 애플리케이션을 구축하는 방법에 대해 알아보세요.