Databricks Vector Search

이 문서에서는 Databricks의 벡터 데이터베이스 솔루션인 Databricks Vector Search에 대한 개요를 제공합니다.

Databricks Vector Search는 Databricks Data Intelligence 플랫폼에 기본 제공되고 거버넌스 및 생산성 도구와 통합된 벡터 데이터베이스입니다. 벡터 데이터베이스는 포함을 저장하고 검색하도록 최적화된 데이터베이스입니다. 포함은 데이터의 의미 체계 콘텐츠(일반적으로 텍스트 또는 이미지 데이터)의 수학적 표현입니다. 포함은 큰 언어 모델에 의해 생성되며 서로 유사한 문서 또는 이미지를 찾는 데 의존하는 많은 GenAI 애플리케이션의 핵심 구성 요소입니다. 예를 들어 RAG 시스템, 추천 시스템, 이미지 및 비디오 인식이 있습니다.

Vector Search를 사용하면 델타 테이블에서 벡터 검색 인덱스 만들기 인덱스 메타데이터가 포함된 데이터가 포함됩니다. 그런 다음 REST API를 사용하여 인덱스를 쿼리하여 가장 유사한 벡터를 식별하고 연결된 문서를 반환할 수 있습니다. 기본 델타 테이블이 업데이트되면 자동으로 동기화되도록 인덱스 구조를 지정할 수 있습니다.

Databricks Vector Search는 근사한 인접 검색에 HNSW(계층적 탐색 가능 Small World) 알고리즘을 사용하고 L2 거리 거리 메트릭을 사용하여 포함 벡터 유사성을 측정합니다. 코사인 유사성을 사용하려면 데이터 요소 포함을 벡터 검색에 공급하기 전에 정규화해야 합니다. 데이터 요소가 정규화되면 L2 거리로 생성된 순위는 코사인 유사성에 의해 생성되는 순위와 동일합니다.

벡터 검색은 어떻게 작동하나요?

Databricks에서 벡터 데이터베이스를 만들려면 먼저 벡터 포함을 제공하는 방법을 결정해야 합니다. Databricks는 다음 세 가지 옵션을 지원합니다.

  • 옵션 1 텍스트 형식의 데이터를 포함하는 원본 델타 테이블을 제공합니다. Databricks는 사용자가 지정한 모델을 사용하여 포함을 계산하고 선택적으로 Unity 카탈로그의 테이블에 포함을 저장합니다. 델타 테이블이 업데이트되면 인덱스는 델타 테이블과 동기화된 상태로 유지됩니다.

    아래 다이어그램은 이 프로세스를 보여 줍니다.

    1. 쿼리 포함을 계산합니다. 쿼리에는 메타데이터 필터가 포함될 수 있습니다.
    2. 유사성 검색을 수행하여 가장 관련성이 큰 문서를 식별합니다.
    3. 가장 관련성이 큰 문서를 반환하고 쿼리에 추가합니다.

    벡터 데이터베이스, Databricks는 포함을 계산합니다.

  • 옵션 2 미리 계산된 포함이 포함된 원본 델타 테이블을 제공합니다. 델타 테이블이 업데이트되면 인덱스는 델타 테이블과 동기화된 상태로 유지됩니다.

    아래 다이어그램은 이 프로세스를 보여 줍니다.

    1. 쿼리는 포함으로 구성되며 메타데이터 필터를 포함할 수 있습니다.
    2. 유사성 검색을 수행하여 가장 관련성이 큰 문서를 식별합니다. 가장 관련성이 큰 문서를 반환하고 쿼리에 추가합니다.

    벡터 데이터베이스, 미리 계산된 포함

  • 옵션 3 미리 계산된 포함이 포함된 원본 델타 테이블을 제공합니다. 델타 테이블이 업데이트되면 자동 동기화가 없습니다. 포함 테이블이 변경될 때 REST API를 사용하여 인덱스를 수동으로 업데이트해야 합니다.

    다음 다이어그램에서는 델타 테이블이 변경되면 벡터 인덱스가 자동으로 업데이트되지 않는다는 점을 제외하고 옵션 2와 동일한 프로세스를 보여 줍니다.

    벡터 데이터베이스, 자동 동기화 없이 미리 계산된 포함

Databricks Vector Search를 사용하려면 다음을 만들어야 합니다.

  • 벡터 검색 엔드포인트입니다. 이 엔드포인트는 벡터 검색 인덱스 역할을 합니다. REST API 또는 SDK를 사용하여 엔드포인트를 쿼리하고 업데이트할 수 있습니다. 엔드포인트는 인덱스의 크기 또는 동시 요청 수를 지원하도록 자동으로 확장됩니다. 지침은 벡터 검색 엔드포인트 만들기를 참조하세요.
  • 벡터 검색 인덱스입니다. 벡터 검색 인덱스는 델타 테이블에서 생성되며 가장 가까운 근사치 검색을 실시간으로 제공하도록 최적화되어 있습니다. 검색의 목표는 쿼리와 유사한 문서를 식별하는 것입니다. 벡터 검색 인덱스가 나타나고 Unity 카탈로그가 제어합니다. 지침은 벡터 검색 인덱스 만들기를 참조하세요.

또한 Databricks가 embeddings를 컴퓨팅하도록 선택하는 경우 포함 모델에 대한 엔드포인트를 제공하는 모델을 만들어야 합니다. 지침은 엔드포인트를 제공하는 기본 모델 만들기를 참조하세요.

엔드포인트를 제공하는 모델을 쿼리하려면 REST API 또는 Python SDK를 사용합니다. 쿼리는 델타 테이블의 모든 열을 기반으로 필터를 정의할 수 있습니다. 자세한 내용은 쿼리, API 참조 또는 Python SDK 참조필터 사용을 참조하세요.

요구 사항

  • Unity 카탈로그 사용 작업 영역.
  • 서버리스 컴퓨팅을 사용하도록 설정했습니다.
  • 원본 테이블에 변경 데이터 피드를 사용하도록 설정해야 합니다.
  • 카탈로그 스키마에 대한 CREATE TABLE 권한으로 인덱스를 만듭니다.
  • 개인용 액세스 토큰을 사용하도록 설정했습니다.

데이터 보호 및 인증

Databricks는 데이터를 보호하기 위해 다음 보안 제어를 구현합니다.

  • Vector Search에 대한 모든 고객 요청은 논리적으로 격리, 인증 및 권한이 부여됩니다.
  • Databricks 벡터 검색은 미사용 데이터(AES-256) 및 전송 중인 모든 데이터(TLS 1.2 이상)를 암호화합니다.

Databricks Vector Search는 두 가지 인증 모드를 지원합니다.

  • 개인용 액세스 토큰 - 개인 액세스 토큰을 사용하여 벡터 검색을 사용하여 인증할 수 있습니다. 개인 액세스 인증 토큰을 참조하세요. Notebook 환경에서 SDK를 사용하는 경우 인증을 위한 PAT 토큰이 자동으로 생성됩니다.
  • 서비스 주체 토큰 - 관리자는 서비스 주체 토큰을 생성하여 SDK 또는 API에 전달할 수 있습니다. 서비스 주체 사용을 참조 하세요. 프로덕션 사용 사례의 경우 Databricks는 서비스 주체 토큰을 사용하는 것이 좋습니다.

벡터 검색 사용량 및 비용 모니터링

청구 가능한 사용량 시스템 테이블을 사용하면 벡터 검색 인덱스 및 엔드포인트와 관련된 사용량 및 비용을 모니터링할 수 있습니다. 다음은 예제 쿼리입니다.

SELECT *
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
  AND usage_metadata.endpoint_name IS NOT NULL

청구 사용량 테이블의 내용에 대한 자세한 내용은 청구 가능 사용량 시스템 테이블 참조를 참조하세요. 추가 쿼리는 다음 예제 Notebook에 있습니다.

벡터 검색 시스템 테이블 쿼리 Notebook

전자 필기장 가져오기

리소스 및 데이터 크기 제한

다음 표에는 벡터 검색 엔드포인트 및 인덱스에 대한 리소스 및 데이터 크기 제한이 요약되어 있습니다.

리소스 세분성 제한
벡터 검색 엔드포인트 작업 영역당 100
포함 엔드포인트당 100,000,000
포함 차원 인덱스당 4096
인덱스 엔드포인트당 20
인덱스당 20
지원되는 형식: 바이트, 짧음, 정수, long, float, double, boolean, string, timestamp, date
메타데이터 필드 인덱스당 20
인덱스 이름 인덱스당 128자

다음 제한은 벡터 검색 인덱스의 생성 및 업데이트에 적용됩니다.

리소스 세분성 제한
델타 동기화 인덱스 행 크기 인덱스당 100KB
델타 동기화 인덱스 원본 열 크기 포함 인덱스당 32764바이트
Direct Vector 인덱스에 대한 대량 upsert 요청 크기 제한 인덱스당 10MB
직접 벡터 인덱스 대량 삭제 요청 크기 제한 인덱스당 10MB

다음 제한은 벡터 검색을 위한 쿼리 API에 적용됩니다.

리소스 세분성 제한
쿼리 텍스트 길이 쿼리당 32764
반환된 최대 결과 수 쿼리당 10,000

제한 사항

  • PrivateLink 는 현재 선택한 고객 집합으로 제한됩니다. PrivateLink에서 이 기능을 사용하려면 Databricks 계정 담당자에게 문의하세요.
  • 규제된 작업 영역은 지원되지 않으므로 이 기능은 HIPAA 규격이 아닙니다.
  • 행 및 열 수준 권한은 지원되지 않습니다. 그러나 필터 API를 사용하여 고유한 애플리케이션 수준 ACL을 구현할 수 있습니다.

추가 리소스