스토리지 최적화 벡터 검색

벡터 검색의 스토리지 최적화 성능 등급은 대규모 데이터 세트 색인 생성과 검색을 위해 설계되었습니다. 이 등급은 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으로 설정되어 벡터 검색이 밀도가 더 높은 색인을 빌드하도록 지시합니다. 이렇게 하면 각 샤드에서 훨씬 더 많은 데이터 포인트를 보유할 수 있으므로 데이터 세트에 필요한 샤드 총개수가 줄어듭니다. dimensionsdistanceMeasureType과 같은 다른 필드는 니즈에 따라 구성됩니다.

엔드포인트

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

색인 배포

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

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

deploymentTierSTORAGE로 설정하면 지정된 displayName을 통해 스토리지 최적화 색인이 엔드포인트에 배포됩니다.

최소 복제본 수(minReplicaCount)와 최대 복제본 수(minReplicaCount)를 지정하여 배포할 머신 복제본 수를 제어할 수도 있습니다. 머신 유형(machineType) 설정은 지원되지 않습니다.

다음 단계