Mosaic AI Vector Search
이 문서에서는 Databricks의 벡터 데이터베이스 솔루션인 Mosaic AI Vector Search란 무엇이고 어떻게 이용하는지에 대한 개요를 제공합니다.
Mosaic AI Vector Search란?
Mosaic AI Vector Search는 Databricks Data Intelligence 플랫폼에 기본 제공되고 거버넌스 및 생산성 도구와 통합된 벡터 데이터베이스입니다. 벡터 데이터베이스는 포함을 저장하고 검색하는 데 최적화된 데이터베이스입니다. 포함은 데이터의 의미 체계 콘텐츠(일반적으로 텍스트 또는 이미지 데이터)의 수학적 표현입니다. 포함은 대규모 언어 모델에 의해 생성되며 서로 유사한 문서 또는 이미지를 찾는 데 의존하는 많은 GenAI 애플리케이션의 핵심 구성 요소입니다. 예를 들어 RAG 시스템, 추천 시스템, 이미지 및 비디오 인식이 있습니다.
Mosaic AI Vector Search를 사용하면 Delta table에서 벡터 검색 인덱스를 만듭니다. 인덱스 메타데이터가 포함된 데이터가 포함됩니다. 그런 다음 REST API를 사용하여 인덱스를 쿼리하여 가장 유사한 벡터를 식별하고 연결된 문서를 반환할 수 있습니다. 기본 Delta sync이 업데이트되면, 인덱스를 자동으로 table으로 구조화할 수 있습니다.
Mosaic AI Vector Search는 다음을 지원합니다.
- 하이브리드 키워드 유사성 검색.
- 필터링합니다.
- ACL(액세스 제어 목록)을 사용하여 벡터 검색 엔드포인트를 관리합니다.
- 선택한 Synccolumns만.
- 저장 및 sync 임베딩 생성.
모자이크 AI 벡터 검색은 어떻게 작동하나요?
Mosaic AI Vector Search는 근사한 인접 검색에 HNSW(Hierarchical Navigable Small World) 알고리즘을 사용하고 L2 거리 메트릭을 사용하여 포함 벡터 유사성을 측정합니다. 코사인 유사성을 사용하려면 데이터 요소 포함을 벡터 검색에 공급하기 전에 정규화해야 합니다. 데이터 요소가 정규화되면 L2 거리로 생성된 순위는 코사인 유사성에 의해 생성되는 순위와 동일합니다.
Mosaic AI Vector Search는 벡터 기반 포함 검색과 기존 키워드 기반 검색 기술을 결합하는 하이브리드 키워드 유사성 검색도 지원합니다. 이 방법은 벡터 기반 유사성 검색을 사용하여 쿼리의 의미 체계 관계 및 컨텍스트를 캡처하는 동시에 쿼리의 정확한 단어와 일치합니다.
이러한 두 가지 기술을 통합하여 하이브리드 키워드 유사성 검색은 정확한 키워드뿐만 아니라 개념적으로 유사한 키워드가 포함된 문서를 검색하여 보다 포괄적이고 관련 있는 검색 결과를 제공합니다. 이 방법은 where 원본 데이터에 SKU 또는 식별자와 같은 고유한 키워드가 순수 유사성 검색에 적합하지 않은 경우, 특히 RAG 애플리케이션에서 유용합니다.
API에 대한 자세한 내용은 Python SDK 참조 및 벡터 검색 엔드포인트 쿼리를 참조하세요.
유사성 검색 계산
유사성 검색 계산에서는 다음 수식을 사용합니다.
where
dist
쿼리 q
인덱스 항목 x
사이의 유클리드 거리입니다.
키워드 검색 알고리즘
관련성 점수는 Okapi BM25를 사용하여 계산됩니다. 텍스트 또는 문자열 형식의 모든 텍스트 columns가 검색되며, 여기에는 원본 텍스트에 내장된 내용과 메타데이터 columns이 포함됩니다. 토큰화 함수는 단어 경계에서 분할되고 문장 부호를 제거하며 모든 텍스트를 소문자로 변환합니다.
유사성 검색 및 키워드 검색을 결합하는 방법
유사성 검색 및 키워드 검색 결과는 상호 순위 퓨전(RRF) 함수를 사용하여 결합됩니다.
RRF는 점수를 사용하여 각 메서드에서 각 문서를 다시 점수 매기기합니다.
위의 수식에서 순위는 0부터 시작하여 각 문서의 점수를 합산하고 가장 높은 점수 매기기 문서를 반환합니다.
rrf_param
는 상위 순위 및 하위 순위 문서의 상대적 중요도를 제어합니다. 문헌에 따르면, rrf_param
은/는 set에서 60까지입니다.
점수는 다음 수식을 사용하여 가장 높은 점수가 1이고 가장 낮은 점수가 0이 되도록 정규화됩니다.
벡터 포함 제공 옵션
Databricks에서 벡터 데이터베이스를 만들려면 먼저 벡터 포함을 제공하는 방법을 결정해야 합니다. Databricks는 다음 세 가지 옵션을 지원합니다.
옵션 1: Databricks에서 계산한 임베딩이 있는 델타 Sync 인덱스 텍스트 형식으로 데이터를 포함하는 원본 델타 table를 제공하십시오. Databricks는 사용자가 지정한 모델을 사용하여 임베딩을 계산하고, 필요에 따라 Unity table의 Catalog에 임베딩을 저장합니다. Delta table 업데이트되면 인덱스가 Delta table동기화된 상태로 유지됩니다.
아래 다이어그램은 이 프로세스를 보여 줍니다.
- 쿼리 포함을 계산합니다. 쿼리에는 메타데이터 필터가 포함될 수 있습니다.
- 유사성 검색을 수행하여 가장 관련성이 큰 문서를 식별합니다.
- 가장 관련성이 높은 문서를 반환하고 쿼리에 추가합니다.
옵션 2: 자체 관리형 포함이 있는 델타 Sync 인덱스 미리 계산된 포함이 포함된 원본 Delta table 제공합니다. Delta table 업데이트되면 인덱스가 Delta table동기화된 상태로 유지됩니다.
아래 다이어그램은 이 프로세스를 보여 줍니다.
- 쿼리는 포함으로 구성되며 메타데이터 필터를 포함할 수 있습니다.
- 유사성 검색을 수행하여 가장 관련성이 큰 문서를 식별합니다. 가장 관련성이 높은 문서를 반환하고 쿼리에 추가합니다.
옵션 3: 직접 벡터 액세스 인덱스 사용할 때, 임베딩 update 변경되면 REST API를 사용하여 인덱스를 수동으로 table 합니다.
아래 다이어그램은 이 프로세스를 보여 줍니다.
없이 미리 계산된 임베딩
모자이크 AI 벡터 검색을 설정하는 방법 (set)
Mosaic AI Vector Search를 사용하려면 다음을 만들어야 합니다.
벡터 검색 엔드포인트입니다. 이 엔드포인트는 벡터 검색 인덱스 역할을 합니다. REST API 또는 SDK를 사용하여 엔드포인트를 쿼리하고 update 수 있습니다. 지침은 벡터 검색 엔드포인트 만들기를 참조하세요.
엔드포인트는 인덱스의 크기 또는 동시 요청 수를 지원하도록 자동으로 확장됩니다. 엔드포인트는 자동으로 축소되지 않습니다.
벡터 검색 인덱스입니다. 벡터 검색 인덱스는 Delta table에서 생성되며, 실시간 근사 최근접 이웃 검색을 제공하도록 최적화되어 있습니다. 검색의 목표는 쿼리와 유사한 문서를 식별하는 것입니다. 벡터 검색 인덱스가 표시되고 Unity Catalog에 의해 관리됩니다. 지침은 벡터 검색 인덱스 만들기를 참조하세요.
또한 Databricks가 임베딩을 컴퓨팅하도록 선택한 경우 미리 구성된 Foundation Model API 엔드포인트를 사용하거나 엔드포인트를 제공하는 모델을 만들어 원하는 임베딩 모델을 제공할 수 있습니다. 지침은 토큰당 종량제 모델 API 또는 엔드포인트 제공하는 기본 모델 만들기를 참조하세요.
엔드포인트를 제공하는 모델을 쿼리하려면 REST API 또는 Python SDK를 사용합니다. 사용자의 쿼리는 Delta column의 모든 table을 기반으로 필터를 정의할 수 있습니다. 자세한 내용은 쿼리에서 필터 사용, API 참조 또는 Python SDK 참조를 참조하세요.
요구 사항
- Unity Catalog가 활성화된 작업 공간.
- 서버리스 컴퓨팅 사용. 지침은 서버리스 컴퓨팅에 연결을 참조하세요.
- 원본 table 변경 데이터 피드를 사용하도록 설정해야 합니다. 지침은 Azure Databricks에서 Delta Lake 변경 데이터 피드 사용을 참조하세요.
- 벡터 검색 인덱스를 만들려면 CREATE TABLEcatalogschema에서 인덱스가 생성될 where 권한이 있어야 합니다.
벡터 검색 엔드포인트를 만들고 관리하는 권한은 액세스 제어 목록을 사용하여 구성됩니다. 벡터 검색 엔드포인트 ACL을 참조 하세요.
데이터 보호 및 인증
Databricks는 데이터를 보호하기 위해 다음 보안 제어를 구현합니다.
- Mosaic AI Vector Search에 대한 모든 고객 요청은 논리적으로 격리되고 인증되며 권한이 부여됩니다.
- Mosaic AI Vector Search는 미사용 데이터(AES-256) 및 전송 중인 모든 데이터(TLS 1.2 이상)를 암호화합니다.
Mosaic AI Vector Search는 두 가지 인증 모드를 지원합니다.
서비스 주체 토큰입니다. 관리자는 generate 명령을 통해 서비스 주체 토큰을 생성하고 SDK 또는 API에 전달할 수 있습니다. 서비스 주체 사용을 참고하세요. 프로덕션 사용 사례의 경우 Databricks는 서비스 주체 토큰을 사용하는 것이 좋습니다.
# Pass in a service principal vsc = VectorSearchClient(workspace_url="...", service_principal_client_id="...", service_principal_client_secret="..." )
개인용 액세스 토큰입니다. 개인용 액세스 토큰을 사용하여 Mosaic AI Vector Search로 인증할 수 있습니다. 개인용 액세스 토큰 인증을 참고하세요. Notebook 환경에서 SDK를 사용하는 경우 SDK는 인증을 위해 PAT 토큰을 자동으로 생성합니다.
# Pass in the PAT token client = VectorSearchClient(workspace_url="...", personal_access_token="...")
CMK(고객 관리형 키)는 2024년 5월 8일 이후에 만든 엔드포인트에서 지원됩니다.
사용량 및 비용 모니터링
청구 가능한 사용 시스템 table 벡터 검색 인덱스 및 엔드포인트와 관련된 사용량 및 비용을 모니터링할 수 있습니다. 다음은 예제 쿼리입니다.
WITH all_vector_search_usage (
SELECT *,
CASE WHEN usage_metadata.endpoint_name IS NULL
THEN 'ingest'
ELSE 'serving'
END as workload_type
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
),
daily_dbus AS (
SELECT workspace_id,
cloud,
usage_date,
workload_type,
usage_metadata.endpoint_name as vector_search_endpoint,
SUM(usage_quantity) as dbus
FROM all_vector_search_usage
GROUP BY all
ORDER BY 1,2,3,4,5 DESC
)
SELECT * FROM daily_dbus
청구 사용량
벡터 검색 시스템 tables 쿼리 노트북
리소스 및 데이터 크기 제한
다음 table 벡터 검색 엔드포인트 및 인덱스에 대한 리소스 및 데이터 크기 제한을 요약합니다.
리소스 | 세분성 | Limit |
---|---|---|
벡터 검색 엔드포인트 | 작업 영역당 | 100 |
포함(Embeddings) | 엔드포인트당 | 320,000,000 |
포함 차원 | 인덱스당 | 4096 |
인덱스 | 엔드포인트당 | 50 |
Columns | 인덱스당 | 50 |
Columns | 지원되는 형식: Bytes, short, integer, long, float, double, boolean, string, timestamp, date | |
메타데이터 필드 | 인덱스당 | 50 |
인덱스 이름 | 인덱스당 | 128자 |
다음 제한은 벡터 검색 인덱스의 생성 및 update에 적용됩니다.
리소스 | 세분성 | Limit |
---|---|---|
Delta Sync Index의 행 크기 | 인덱스당 | 100KB |
Delta column 인덱스를 위한 소스 Sync 크기 임베딩하기 | 인덱스당 | 32764바이트 |
Direct Vector 인덱스에 대한 대량 업서트 요청 크기 limit | 인덱스당 | 10MB |
직접 벡터 인덱스를 위한 대량 삭제 요청 크기 limit | 인덱스당 | 10MB |
쿼리 API에 다음과 같은 제한이 적용됩니다.
리소스 | 세분성 | Limit |
---|---|---|
쿼리 텍스트 길이 | 쿼리당 | 32764바이트 |
최대 결과 수 반환 | 쿼리당 | 10,000 |
제한 사항
- 행 및 column 수준 권한은 지원되지 않습니다. 그러나 필터 API를 사용하여 고유한 애플리케이션 수준 ACL을 구현할 수 있습니다.