다음을 통해 공유


모자이크 AI 벡터 검색

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

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

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

모자이크 AI 벡터 검색은 어떻게 작동하나요?

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

Mosaic AI Vector Search는 벡터 기반 포함 검색과 기존 키워드 기반 검색 기술을 결합하는 하이브리드 키워드 유사성 검색도 지원합니다. 이 방법은 벡터 기반 유사성 검색을 사용하여 쿼리의 의미 체계 관계 및 컨텍스트를 캡처하는 동시에 쿼리의 정확한 단어와 일치합니다.

이러한 두 가지 기술을 통합하여 하이브리드 키워드 유사성 검색은 정확한 키워드뿐만 아니라 개념적으로 유사한 키워드가 포함된 문서를 검색하여 보다 포괄적이고 관련 있는 검색 결과를 제공합니다. 이 메서드는 원본 데이터에 순수 유사성 검색에 적합하지 않은 SKU 또는 식별자와 같은 고유한 키워드가 있는 RAG 애플리케이션에서 특히 유용합니다.

하이브리드 검색은 공개 미리 보기로 제공됩니다. API에 대한 자세한 내용은 Python SDK 참조벡터 검색 엔드포인트 쿼리를 참조하세요.

유사성 검색 계산

유사성 검색 계산에서는 다음 수식을 사용합니다.

1의 역수와 제곱 거리

여기서 dist 쿼리 q 와 인덱스 항목 x사이의 유클리드 거리는 다음과 같습니다.

유시드 거리, 제곱 차이의 합의 제곱근

키워드 검색 알고리즘

관련성 점수는 Okapi BM25를 사용하여 계산됩니다. 텍스트 또는 문자열 형식의 원본 텍스트 포함 및 메타데이터 열을 포함하여 모든 텍스트 또는 문자열 열이 검색됩니다. 토큰화 함수는 단어 경계에서 분할되고 문장 부호를 제거하며 모든 텍스트를 소문자로 변환합니다.

유사성 검색 및 키워드 검색을 결합하는 방법

유사성 검색 및 키워드 검색 결과는 상호 순위 Fusion(RRF) 함수를 사용하여 결합됩니다.

RRF는 점수를 사용하여 각 메서드에서 각 문서를 다시 점수 매기기합니다.

RRF 수식

위의 수식에서 순위는 0부터 시작하여 각 문서의 점수를 합산하고 가장 높은 점수 매기기 문서를 반환합니다.

rrf_param 는 상위 순위 및 하위 순위 문서의 상대적 중요도를 제어합니다. 문헌 rrf_param 에 따라 60으로 설정됩니다.

점수는 다음 수식을 사용하여 가장 높은 점수가 1이고 가장 낮은 점수가 0이 되도록 정규화됩니다.

정규화

벡터 포함 제공 옵션

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

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

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

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

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

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

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

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

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

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

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

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

Mosaic AI 벡터 검색을 사용하려면 다음을 만들어야 합니다.

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

또한 Databricks가 포함을 계산하도록 선택한 경우 미리 구성된 Foundation Model API 엔드포인트를 사용하거나 엔드포인트를 제공하는 모델을 만들어 원하는 포함 모델을 제공할 수 있습니다. 지침은 토큰당 종량제 파운데이션 모델 API 또는 엔드포인트를 제공하는 생성 AI 모델 만들기를 참조하세요.

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

요구 사항

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

데이터 보호 및 인증

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

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

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

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

CMK(고객 관리형 키) 는 2024년 5월 8일 이후에 만든 엔드포인트에서 지원됩니다.

사용량 및 비용 모니터링

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

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
인덱스 엔드포인트당 50
인덱스당 50
지원되는 형식: 바이트, 짧음, 정수, long, float, double, boolean, string, timestamp, date
메타데이터 필드 인덱스당 20
인덱스 이름 인덱스당 128자

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

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

다음 제한은 쿼리 API에 적용됩니다.

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

제한 사항

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

추가 리소스