qdrant

벡터 데이터베이스는 추상적인 데이터 표현과 상호작용하는 비교적 새로운 방식으로, 이러한 표현은 일반적으로 벡터 또는 임베딩 벡터로 불리며, 감정 분석, 음성 인식 및 물체 탐지와 같은 작업을 수행하는 데 사용되는 기계 학습 모델로부터 나온 압축된 데이터의 형태입니다.

이러한 새로운 데이터베이스는 시맨틱 검색 및 추천 시스템과 같이 많은 응용 분야에서 우수한 성과를 보여주고 있습니다.

Qdrant란 무엇인가요?

Qdrant는 차세대 AI 응용을 위해 설계된 오픈 소스 벡터 데이터베이스입니다. 클라우드 기반으로 제공되며, 임베딩을 관리하기 위한 RESTful 및 gRPC API를 제공합니다. Qdrant는 이미지, 음성 및 비디오 검색을 지원할 뿐만 아니라 AI 엔진과의 통합도 지원합니다.

벡터 데이터베이스란 무엇인가요?

dbs

벡터 데이터베이스는 고차원 벡터의 효율적인 저장 및 질의를 위해 특별히 설계된 데이터베이스 유형입니다. 전통적인 OLTP 및 OLAP 데이터베이스에서는 데이터가 행과 열(테이블이라고 함)로 구성되며, 질의는 이러한 열의 값에 기반합니다. 그러나 이미지 인식, 자연어 처리 및 추천 시스템과 같은 특정 응용 분야에서는 데이터가 종종 고차원 공간의 벡터 형태로 표현됩니다. 이러한 벡터는 ID와 페이로드와 함께 Qdrant와 같은 벡터 데이터베이스에 저장되는 요소를 구성합니다.

이 경우 벡터는 개체 또는 데이터 지점의 수학적 표현으로, 벡터의 각 요소는 개체의 특징 또는 속성에 해당합니다. 예를 들어, 이미지 인식 시스템에서 벡터는 이미지를 나타내며, 벡터의 각 요소는 픽셀 값 또는 픽셀의 특징/기술에 해당합니다. 음악 추천 시스템에서 각 벡터는 노래를 나타내며, 벡터의 각 요소는 리듬, 장르, 가사 등과 같은 노래의 특징을 나타냅니다.

벡터 데이터베이스는 고차원 벡터의 효율적인 저장 및 질의를 위해 최적화되어 있으며, 근사 최근접 이웃 검색을 위한 Hierarchical Navigable Small World (HNSW)와 같은 전문화된 데이터 구조 및 색인 기술을 활용합니다. 이러한 데이터베이스는 특정 거리 측정에 따라 주어진 쿼리 벡터에 가장 가까운 벡터를 찾는 사용자에게 허용함으로써 빠른 유사성 및 시맨틱 검색을 가능케 합니다. 가장 흔하게 사용되는 거리 측정 방법으로는 유클리드 거리, 코사인 유사도, 점곱 등이 있으며, 이러한 모든 거리 측정 방법은 Qdrant에서 완벽하게 지원됩니다.

다음은 이 세 가지 벡터 유사성 알고리즘의 간단한 소개입니다:

  • 코사인 유사도 - 코사인 유사도는 두 항목 간의 유사성을 측정하는 지표입니다. 두 지점 간의 거리를 측정하는 자 같지만 거리를 측정하는 대신 두 항목 간의 유사성을 측정합니다. 이는 일반적으로 텍스트의 두 문서 또는 문장 간의 유사성을 비교하는 데 사용됩니다. 코사인 유사도의 출력 범위는 0부터 1까지이며, 0은 완전한 비유사성을, 1은 완전한 유사성을 나타냅니다. 이는 두 항목을 비교하는 간단하고 효과적인 방법입니다!
  • 점곱 - 점곱 유사도는 코사인 유사도와 유사한 두 항목 간의 유사성 지표입니다. 숫자를 처리하는 경우, 이는 종종 기계 학습 및 데이터 과학에서 사용됩니다. 점곱 유사도는 두 세트의 숫자 값의 곱을 계산한 다음 이러한 곱을 더하는 방식으로 계산됩니다. 더 높은 합은 두 세트의 숫자 간의 더 높은 유사성을 나타냅니다. 이는 두 세트의 숫자 간의 일치 정도를 측정하는 척도와 같습니다.
  • 유클리드 거리 - 유클리드 거리는 공간상 두 지점 간의 거리를 측정하는 방법으로, 지도상 두 장소 간의 거리를 측정하는 방식과 유사합니다. 두 지점의 좌표의 차의 제곱의 합의 제곱근을 찾아서 계산됩니다. 이 거리 측정 방법은 주로 두 데이터 지점의 유사성 또는 비유사성을 평가하는 데 사용되며, 다시 말해 두 지점이 얼마나 떨어져 있는지 이해하는 데 사용됩니다.

이제 벡터 데이터베이스의 의미를 이해했으니, 구조적으로 다른 데이터베이스와 어떻게 다른지 이해해볼까요?

벡터 데이터베이스의 필요성

벡터 데이터베이스는 추천 시스템, 콘텐츠 기반 이미지 검색, 그리고 개인화된 검색과 같은 유사성 검색을 필요로 하는 다양한 응용 프로그램에서 중요한 역할을 합니다. 효율적인 색인화 및 검색 기술을 활용하여 벡터 데이터베이스는 벡터로 표현된 비구조적 데이터를 더 빠르고 정확하게 검색하여 사용자의 쿼리에 가장 관련성 높은 결과를 제시할 수 있습니다.

또한, 벡터 데이터베이스를 사용하는 다른 이점은 다음과 같습니다:

  1. 고차원 데이터의 효율적인 저장 및 색인화
  2. 수십억 개의 데이터 포인트를 처리할 수 있는 대규모 데이터셋 처리 능력
  3. 실시간 분석 및 쿼리 지원
  4. 이미지, 비디오, 자연어 텍스트와 같은 복잡한 데이터 유형에서 파생된 벡터 처리 능력
  5. 머신 러닝 및 인공지능 응용 프로그램의 성능 향상과 대기 시간 감소
  6. 사용자 정의 솔루션을 구축하는 것에 비해 개발 및 배포 시간 및 비용 절감

구체적으로 벡터 데이터베이스를 사용하는 경우의 이점은 조직의 사용 사례 및 선택한 데이터베이스 기능에 따라 상이할 수 있으니 참고하시기 바랍니다.

이제, Qdrant 아키텍처의 고수준 평가를 수행해 보겠습니다.

Qdrant 아키텍처의 고수준 개요

위 다이어그램은 Qdrant의 주요 구성 요소를 고수준으로 보여줍니다. 다음은 Qdrant와 관련된 주요 용어입니다:

  • Collections(컬렉션): 컬렉션은 명명된 포인트들의 그룹(페이로드를 가진 벡터들로 이루어진)입니다. 간단히 말해, 컬렉션은 MySQL의 테이블과 유사하며 포인트는 해당 테이블 내의 데이터 행과 유사합니다. 이러한 포인트들 사이에서 검색이 수행될 수 있습니다. 동일한 컬렉션 내의 각 벡터는 동일한 차원을 가져야 하며 동일한 메트릭을 사용하여 비교되어야 합니다. 명명된 벡터는 하나의 포인트에 여러 벡터를 가질 수 있으며, 각각의 벡터는 자체 차원과 메트릭 요구사항을 가질 수 있습니다.
  • Metric(메트릭): 벡터들 간의 유사성을 측정하는 데 사용되는 측정 항목으로, 컬렉션 생성 시 선택해야 합니다. 메트릭의 선택은 주로 새로운 쿼리를 인코딩하는 데 사용되는 신경망의 벡터 획득 방식에 따라 달라집니다(메트릭은 선택한 유사성 알고리즘입니다).
  • Points(포인트): Qdrant가 조작하는 핵심 개체로, 벡터, 선택적 ID 및 페이로드로 구성되어 있습니다(MySQL 테이블의 데이터 행과 유사).
    • ID: 벡터의 고유 식별자
    • Vector: 이미지, 오디오, 문서, 비디오 등과 같은 고차원 데이터의 표현
    • Payload: 벡터에 추가 데이터로 추가할 수 있는 JSON 객체(주로 벡터와 관련된 비즈니스 속성 저장에 사용됨)
  • Storage(저장소): Qdrant는 메모리 내 저장소(모든 벡터가 메모리에 저장되어 지속성을 위해 디스크 액세스만 사용하는 가장 빠른 속도 제공)와 Memmap 저장소(디스크에 연관된 파일과 가상 주소 공간을 생성하는 것) 두 가지 저장 옵션을 활용할 수 있습니다.
  • Clients(클라이언트): 프로그래밍 언어 SDK를 사용하여 Qdrant에 연결하거나 REST API를 사용하여 Qdrant와 직접 상호작용할 수 있습니다.