스토리지 최적화 벡터 검색

스토리지에 최적화된 벡터 검색 성능 등급은 대규모 데이터 세트를 색인 생성하고 검색하도록 설계되었습니다. 이 등급은 RAM을 사용하는 대신 디스크 기반 아키텍처를 구현하여 운영 비용을 크게 절감합니다. 가능한 가장 낮은 쿼리 지연 시간보다는 대규모 비용 효율성이 우선인 경우 스토리지 최적화 등급이 가장 적합합니다.

스토리지 최적화 색인을 사용해야 하는 경우

다음 중 하나가 있는 경우 스토리지 최적화 색인을 고려하세요.

  • 매우 큰 데이터 세트: 매우 많은 수의 벡터를 색싱해야 하며 성능에 최적화된 샤드를 대량으로 호스팅하는 비용이 너무 높습니다.

  • QPS가 낮은 워크로드: 쿼리 볼륨이 낮은 애플리케이션에서는 샤드를 적게 사용하여 비용을 크게 절감할 수 있습니다.

  • 유연한 지연 시간 요구사항: 애플리케이션이 검색 결과를 가져오는 데 걸리는 시간인 쿼리 지연 시간의 약간의 증가를 허용할 수 있습니다.

성능 절충

기본 성능 최적화 색인과 비교할 때 스토리지 최적화 색인에는 다음과 같은 특징이 있습니다.

  • 쿼리 지연 시간 증가: 지정된 재현율 수준에서 쿼리의 지연 시간이 약간 더 깁니다.

스토리지 최적화 색인을 구성하는 방법

스토리지에 최적화된 색인을 만들려면 색인 구성에서 shardSize 매개변수를 SHARD_SIZE_SO_DYNAMIC로 설정합니다.

예: 스토리지 최적화 색인 만들기

다음 예에서는 새로운 스토리지 최적화 스트리밍 색인을 만드는 데 필요한 JSON을 보여줍니다.

{
  "displayName": "my-storage-optimized-index",
  "description": "An index configured to prioritize storage over performance.",
  "metadata": {
    "contentsDeltaUri": "gs://your-bucket/source-data/",
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "shardSize": "SHARD_SIZE_SO_DYNAMIC"
    }
  },
  "indexUpdateMethod": "STREAM_UPDATE"
}

이 예시에서 shardSizeSHARD_SIZE_SO_DYNAMIC로 설정되어 벡터 검색이 더 밀도 높은 색인을 빌드하도록 지시합니다. 이렇게 하면 각 샤드에서 훨씬 더 많은 데이터 포인트를 보유할 수 있으므로 데이터 세트에 필요한 총 샤드 수가 줄어듭니다. dimensions, distanceMeasureType과 같은 다른 필드는 필요에 따라 구성됩니다.

엔드포인트

스토리지 최적화 배포는 기존 엔드포인트와 함께 사용할 수 있습니다.

색인 배포

다음 예에서는 생성한 엔드포인트에 스토리지 최적화 색인을 배포하는 데 필요한 JSON을 보여줍니다.

{
  "deployedIndex": {
    "id": "PROJECT_UNIQUE_ID_NAME",
    "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID",
    "displayName": "INDEX_DISPLAY_NAME",
    "deploymentTier": "STORAGE"
  }
}

deploymentTierSTORAGE로 설정하면 지정된 displayName이 있는 스토리지 최적화 색인이 엔드포인트에 배포됩니다. 벡터 검색은 최적의 성능을 위해 적절한 머신 유형을 동적으로 선택합니다.

다음 단계