색인 관리

다음 섹션에서는 색인을 구성하고, 만들고, 나열하고, 삭제하는 방법을 설명합니다.

색인 개요

색인은 임베딩 벡터로 구성된 파일입니다. 이러한 벡터는 벡터 검색으로 배포하고 쿼리하려는 대량의 데이터로 만들어집니다. 벡터 검색을 사용하면 데이터로 업데이트할 방법에 따라 두 가지 유형의 색인을 만들 수 있습니다. 일괄 업데이트용으로 설계된 색인이나 업데이트 스트리밍을 위해 설계된 색인을 만들 수 있습니다.

일괄 색인은 매주 또는 매월 처리되는 시스템과 같이 일정 기간 동안 저장된 데이터를 사용하여 색인을 대량으로 업데이트하려는 경우에 사용됩니다 스트리밍 색인은 새 데이터가 데이터 스토어에 추가될 때 색인 데이터를 업데이트하려는 경우에 사용됩니다. 예를 들어 서점을 운영하고 새로운 재고를 가능한 한 빨리 온라인에 표시하려는 경우가 해당됩니다. 설정과 요구사항이 다르기 때문에 선택하는 유형이 중요합니다.

색인 매개변수 구성

색인을 만들기 전에 색인의 매개변수를 구성합니다.

예를 들어 index_metadata.json이라는 파일을 만듭니다.

{
  "contentsDeltaUri": "gs://BUCKET_NAME/path",
  "config": {
    "dimensions": 100,
    "approximateNeighborsCount": 150,
    "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
    "shardSize": "SHARD_SIZE_MEDIUM",
    "algorithm_config": {
      "treeAhConfig": {
        "leafNodeEmbeddingCount": 5000,
        "leafNodesToSearchPercent": 3
      }
    }
  }
}

이러한 각 필드의 정의는 색인 구성 매개변수에서 찾을 수 있습니다.

색인 만들기

색인 크기

색인 데이터는 처리를 위해 샤드라고 하는 동일한 부분으로 분할됩니다. 색인을 만들 때 사용할 샤드 크기를 지정해야 합니다. 지원되는 크기는 다음과 같습니다.

  • SHARD_SIZE_SMALL: 샤드당 2GiB
  • SHARD_SIZE_MEDIUM: 샤드당 20GiB
  • SHARD_SIZE_LARGE: 샤드당 50GiB

색인 배포(공개 엔드포인트 사용 또는 VPC 엔드포인트 사용)에 사용할 수 있는 머신 유형은 색인의 샤드 크기에 따라 달라집니다. 다음 표에서는 각 머신 유형이 지원하는 샤드 크기를 확인할 수 있습니다.

머신 유형 SHARD_SIZE_SMALL SHARD_SIZE_MEDIUM SHARD_SIZE_LARGE
n1-standard-16
n1-standard-32
e2-standard-2 (기본값)
e2-standard-16 (기본값)
e2-highmem-16 (기본값)
n2d-standard-32

샤드 크기 및 머신 유형이 가격에 미치는 영향을 알아보려면 Vertex AI 가격 책정 페이지를 참조하세요.

일괄 업데이트 색인 만들기

다음 안내에 따라 색인을 만들고 배포합니다. 임베딩이 아직 준비되지 않았으면 빈 일괄 색인 만들기로 건너뛸 수 있습니다. 이 옵션을 사용하면 색인을 만들 때 임베딩 데이터가 필요하지 않습니다.

색인을 만들려면 다음 안내를 따르세요.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCAL_PATH_TO_METADATA_FILE: 메타데이터 파일의 로컬 경로
  • INDEX_NAME: 색인의 표시 이름
  • LOCATION: Vertex AI를 사용하는 리전
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud ai indexes create \
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE \
    --display-name=INDEX_NAME \
    --region=LOCATION \
    --project=PROJECT_ID

Windows(PowerShell)

gcloud ai indexes create `
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE `
    --display-name=INDEX_NAME `
    --region=LOCATION `
    --project=PROJECT_ID

Windows(cmd.exe)

gcloud ai indexes create ^
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^
    --display-name=INDEX_NAME ^
    --region=LOCATION ^
    --project=PROJECT_ID

다음과 비슷한 응답이 표시됩니다.

You can poll for the status of the operation for the response
to include "done": true. Use the following example to poll the status.

  $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1

describe 명령어에 대한 자세한 내용은 gcloud AI 작업을 참조하세요.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • INPUT_DIR: 색인 콘텐츠의 Cloud Storage 디렉터리 경로
  • INDEX_NAME: 색인의 표시 이름
  • LOCATION: Vertex AI를 사용하는 리전
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호

HTTP 메서드 및 URL:

POST http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes

JSON 요청 본문:

{
  "display_name": "INDEX_NAME",
  "metadata": {
    "contentsDeltaUri": "INPUT_DIR",
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "algorithm_config": {
        "treeAhConfig": {
          "leafNodeEmbeddingCount": 500,
          "leafNodesToSearchPercent": 7
        }
      }
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-08T01:21:10.147035Z",
      "updateTime": "2022-01-08T01:21:10.147035Z"
    }
  }
}

Terraform

다음 샘플에서는 google_vertex_ai_index Terraform 리소스를 사용하여 일괄 업데이트용 색인을 만듭니다.

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

# Cloud Storage bucket name must be unique
resource "random_id" "bucket_name_suffix" {
  byte_length = 8
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "bucket" {
  name                        = "vertex-ai-index-bucket-${random_id.bucket_name_suffix.hex}"
  location                    = "us-central1"
  uniform_bucket_level_access = true
}

# Create index content
resource "google_storage_bucket_object" "data" {
  name    = "contents/data.json"
  bucket  = google_storage_bucket.bucket.name
  content = <<EOF
{"id": "42", "embedding": [0.5, 1.0], "restricts": [{"namespace": "class", "allow": ["cat", "pet"]},{"namespace": "category", "allow": ["feline"]}]}
{"id": "43", "embedding": [0.6, 1.0], "restricts": [{"namespace": "class", "allow": ["dog", "pet"]},{"namespace": "category", "allow": ["canine"]}]}
EOF
}

resource "google_vertex_ai_index" "default" {
  region       = "us-central1"
  display_name = "sample-index-batch-update"
  description  = "A sample index for batch update"
  labels = {
    foo = "bar"
  }

  metadata {
    contents_delta_uri = "gs://${google_storage_bucket.bucket.name}/contents"
    config {
      dimensions                  = 2
      approximate_neighbors_count = 150
      distance_measure_type       = "DOT_PRODUCT_DISTANCE"
      algorithm_config {
        tree_ah_config {
          leaf_node_embedding_count    = 500
          leaf_nodes_to_search_percent = 7
        }
      }
    }
  }
  index_update_method = "BATCH_UPDATE"

  timeouts {
    create = "2h"
    update = "1h"
  }
}

Python

Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.

def vector_search_create_index(
    project: str, location: str, display_name: str, gcs_uri: Optional[str] = None
) -> None:
    """Create a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        display_name (str): Required. The index display name
        gcs_uri (str): Optional. The Google Cloud Storage uri for index content
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location, staging_bucket=gcs_uri)

    # Create Index
    index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
        display_name=display_name,
        description="Matching Engine Index",
        dimensions=100,
        approximate_neighbors_count=150,
        leaf_node_embedding_count=500,
        leaf_nodes_to_search_percent=7,
        index_update_method="batch_update",  # Options: stream_update, batch_update
        distance_measure_type=aiplatform.matching_engine.matching_engine_index_config.DistanceMeasureType.DOT_PRODUCT_DISTANCE,
    )

    print(index.name)

콘솔

일괄 업데이트를 위한 색인을 만들려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 배포 및 사용 섹션으로 이동합니다. 벡터 검색을 선택합니다.

    벡터 검색으로 이동

  2. 새 색인 만들기를 클릭하여 색인 창을 엽니다. 새 색인 만들기 창이 나타납니다.
  3. 표시 이름 필드에 색인을 고유하게 식별할 수 있는 이름을 입력합니다.
  4. 설명 필드에 색인의 용도에 대한 설명을 입력합니다.
  5. 리전 필드의 드롭다운에서 리전을 선택합니다.
  6. Cloud Storage 필드에서 벡터 데이터가 저장된 Cloud Storage 폴더를 검색하고 선택합니다.
  7. 알고리즘 유형 드롭다운에서 벡터 검색이 효율적인 검색을 위해 사용하는 알고리즘 유형을 선택합니다. treeAH 알고리즘을 선택하는 경우 대략적인 이웃 수를 입력합니다.
  8. 측정기준 필드에 입력 벡터의 측정기준 수를 입력합니다.
  9. 업데이트 방법 필드에서 일괄을 선택합니다.
  10. 샤드 크기 필드의 드롭다운에서 원하는 샤드 크기를 선택합니다.
  11. 만들기를 클릭합니다. 새 색인이 준비되면 색인 목록에 새 색인이 표시됩니다. 참고: 빌드 시간은 완료까지 최대 1시간이 걸릴 수 있습니다.

빈 배치 색인 만들기

색인을 즉시 만들고 배포하려면 빈 배치 색인을 만들면 됩니다. 이 옵션을 사용하면 색인을 만들 때 임베딩 데이터가 필요하지 않습니다.

빈 색인을 만드는 경우 요청은 일괄 업데이트용 색인을 만드는 경우와 거의 동일합니다. 차이점은 데이터 위치를 연결하지 않으므로 contentsDeltaUri 필드를 삭제한다는 것입니다. 다음은 빈 일괄 색인의 예시입니다.

빈 색인 요청 예시

{
  "display_name": INDEX_NAME,
  "indexUpdateMethod": "BATCH_UPDATE",
  "metadata": {
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "algorithm_config": {
        "treeAhConfig": {
          "leafNodeEmbeddingCount": 500,
          "leafNodesToSearchPercent": 7
        }
      }
    }
  }
}
  

스트리밍 업데이트 색인 만들기

다음 안내에 따라 스트리밍 색인을 만들고 배포합니다. 임베딩이 아직 준비되지 않았으면 스트리밍 업데이트를 위한 빈 색인 만들기로 건너뜁니다. 이 옵션을 사용하면 색인을 만들 때 임베딩 데이터가 필요하지 않습니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • INDEX_NAME: 색인의 표시 이름
  • DESCRIPTION: 색인에 대한 설명
  • INPUT_DIR: 색인 콘텐츠의 Cloud Storage 디렉터리 경로
  • DIMENSIONS: 임베딩 벡터의 차원 수
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호
  • LOCATION: Vertex AI를 사용하는 리전

HTTP 메서드 및 URL:

POST http://ENDPOINT-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes

JSON 요청 본문:

{
  displayName: "INDEX_NAME",
  description: "DESCRIPTION",
  metadata: {
     contentsDeltaUri: "INPUT_DIR",
     config: {
        dimensions: "DIMENSIONS",
        approximateNeighborsCount: 150,
        distanceMeasureType: "DOT_PRODUCT_DISTANCE",
        algorithmConfig: {treeAhConfig: {leafNodeEmbeddingCount: 10000, leafNodesToSearchPercent: 2}}
     },
  },
  indexUpdateMethod: "STREAM_UPDATE"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-12-05T23:17:45.416117Z",
      "updateTime": "2023-12-05T23:17:45.416117Z",
      "state": "RUNNING",
      "worksOn": [
        "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID"
      ]
    }
  }
}

콘솔

다음 안내에 따라 Google Cloud 콘솔에서 스트리밍 업데이트의 색인을 만드세요.

스트리밍 업데이트에 사용할 수 있는 색인을 만들려면 indexUpdateMethodSTREAM_UPDATE로 설정해야 한다는 점을 제외하고는 일괄 업데이트 색인을 설정하는 것과 비슷한 단계가 필요합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 배포 및 사용 섹션으로 이동합니다. 벡터 검색을 선택합니다.

    벡터 검색으로 이동

  2. 새 색인 만들기를 클릭하여 색인 창을 엽니다. 새 색인 만들기 창이 나타납니다.
  3. 표시 이름 필드에 색인을 고유하게 식별하기 위한 이름을 입력합니다.
  4. 설명 필드에 색인의 설명을 입력합니다.
  5. 리전 필드의 드롭다운에서 리전을 선택합니다.
  6. Cloud Storage 필드에서 벡터 데이터가 저장된 Cloud Storage 폴더를 검색하고 선택합니다.
  7. 알고리즘 유형 드롭다운에서 벡터 검색이 검색을 수행하는 데 사용할 알고리즘 유형을 선택합니다. treeAH 알고리즘을 선택하는 경우 대략적인 이웃 수를 입력합니다.
  8. 차원 필드에 입력 벡터의 차원 수를 입력합니다.
  9. 업데이트 방법 필드에서 스트림을 선택합니다.
  10. 샤드 크기 필드의 드롭다운에서 원하는 샤드 크기의 선택합니다.
  11. 만들기를 클릭합니다. 새 색인이 준비되면 색인 목록에 새 색인이 표시됩니다. 참고: 빌드 시간은 완료까지 최대 1시간이 걸릴 수 있습니다.

Python

Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.

def vector_search_create_index(
    project: str, location: str, display_name: str, gcs_uri: Optional[str] = None
) -> None:
    """Create a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        display_name (str): Required. The index display name
        gcs_uri (str): Optional. The Google Cloud Storage uri for index content
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location, staging_bucket=gcs_uri)

    # Create Index
    index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
        display_name=display_name,
        description="Matching Engine Index",
        dimensions=100,
        approximate_neighbors_count=150,
        leaf_node_embedding_count=500,
        leaf_nodes_to_search_percent=7,
        index_update_method="batch_update",  # Options: stream_update, batch_update
        distance_measure_type=aiplatform.matching_engine.matching_engine_index_config.DistanceMeasureType.DOT_PRODUCT_DISTANCE,
    )

    print(index.name)

스트리밍 업데이트용 빈 색인 만들기

색인을 즉시 만들고 배포하려면 스트리밍용 빈 색인을 만들면 됩니다. 이 옵션을 사용하면 색인을 만들 때 임베딩 데이터가 필요하지 않습니다.

빈 색인을 만드는 경우 요청은 스트리밍용 색인을 만드는 경우와 거의 동일합니다. 차이점은 데이터 위치를 연결하지 않으므로 contentsDeltaUri 필드를 삭제한다는 것입니다. 다음은 빈 스트리밍 색인 예시입니다.

빈 색인 요청 예시

{
  "display_name": INDEX_NAME,
  "indexUpdateMethod": "STREAM_UPDATE",
  "metadata": {
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "algorithm_config": {
        "treeAhConfig": {
          "leafNodeEmbeddingCount": 500,
          "leafNodesToSearchPercent": 7
        }
      }
    }
  }
}
  

색인 나열

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • INDEX_NAME: 색인의 표시 이름
  • LOCATION: Vertex AI를 사용하는 리전
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud ai indexes list \
    --region=LOCATION \
    --project=PROJECT_ID

Windows(PowerShell)

gcloud ai indexes list `
    --region=LOCATION `
    --project=PROJECT_ID

Windows(cmd.exe)

gcloud ai indexes list ^
    --region=LOCATION ^
    --project=PROJECT_ID

다음과 비슷한 응답이 표시됩니다.

You can poll for the status of the operation for the response
to include "done": true. Use the following example to poll the status.

  $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1

describe 명령어에 대한 자세한 내용은 gcloud AI 작업을 참조하세요.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • INDEX_NAME: 색인의 표시 이름
  • LOCATION: Vertex AI를 사용하는 리전
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호

HTTP 메서드 및 URL:

GET http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
 "indexes": [
   {
     "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID",
     "displayName": "INDEX_NAME",
     "metadataSchemaUri": "gs://google-cloud-aiplatform/schema/matchingengine/metadata/nearest_neighbor_search_1.0.0.yaml",
     "metadata": {
       "config": {
         "dimensions": 100,
         "approximateNeighborsCount": 150,
         "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
         "featureNormType": "NONE",
         "algorithmConfig": {
           "treeAhConfig": {
             "maxLeavesToSearch": 50,
             "leafNodeCount": 10000
           }
         }
       }
     },
     "etag": "AMEw9yNU8YX5IvwuINeBkVv3yNa7VGKk11GBQ8GkfRoVvO7LgRUeOo0qobYWuU9DiEc=",
     "createTime": "2020-11-08T21:56:30.558449Z",
     "updateTime": "2020-11-08T22:39:25.048623Z"
   }
 ]
}

콘솔

다음 안내에 따라 색인 목록을 확인합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 배포 및 사용 섹션으로 이동합니다. 벡터 검색을 선택합니다.

    벡터 검색으로 이동

  2. 활성 색인 목록이 표시됩니다.

색인 조정

색인을 조정하려면 배포된 색인의 성능, 특히 재현율과 지연 시간에 영향을 주는 구성 매개변수를 설정해야 합니다. 이러한 매개변수는 색인을 처음 만들 때 설정됩니다. 무작위 대입 색인을 사용하여 재현율을 측정할 수 있습니다.

성능에 영향을 주는 구성 매개변수

다음 구성 매개변수는 색인 생성 시 설정할 수 있으며 벡터 검색을 사용할 때 재현율, 지연 시간, 가용성, 비용에 영향을 미칠 수 있습니다. 이 가이드는 대부분의 사례에 적용됩니다. 하지만 항상 구성을 실험하여 사용 사례에 적합한지 확인해야 합니다.

매개변수 정의는 색인 구성 매개변수를 참조하세요.

매개변수 정보 성능 영향
shardSize

각 시스템의 데이터 양을 제어합니다.

샤드 크기를 선택할 때는 앞으로 데이터 세트가 얼마나 클지 추정합니다. 데이터 세트의 크기에 상한이 있으면 이를 수용하기에 적절한 샤드 크기를 선택합니다. 상한이 없거나 사용 사례가 지연 시간 변동에 매우 민감한 경우 큰 샤드 크기를 선택하는 것이 좋습니다.

더 작은 샤드를 많이 구성하면 검색 중 더 많은 수의 후보 결과가 처리됩니다. 샤드가 많으면 다음과 같은 방식으로 성능에 영향을 줄 수 있습니다.

  • 재현율: 증가
  • 지연 시간: 잠재적으로 증가됨, 더 많은 변동성
  • 가용성: 샤드 중단이 영향을 미치는 데이터 비율 감소
  • 비용: 동일한 머신을 더 많은 샤드와 함께 사용하면 증가할 수 있습니다.

더 큰 샤드의 수를 적게 구성하면 검색 중 처리되는 후보 결과가 더 적어집니다. 샤드가 적으면 다음과 같은 방식으로 성능에 영향을 줄 수 있습니다.

  • 재현율: 감소
  • 지연 시간: 변동성 감소
  • 가용성: 샤드 중단은 더 많은 비율의 데이터에 영향을 미칩니다.
  • 비용: 더 적은 샤드로 동일한 머신을 사용하는 경우 감소할 수 있음
distanceMeasureType

데이터 포인트와 쿼리 벡터 사이의 거리 계산에 사용되는 알고리즘을 결정합니다.

다음 distanceMeasureType 설정은 쿼리 지연 시간을 줄이는 데 도움이 될 수 있습니다.

  • DOT_PRODUCT_DISTANCE는 지연 시간 단축에 가장 최적화되어 있습니다.
  • FeatureNormTypeUNIT_L2_NORM로 설정하는 것과 결합된 DOT_PRODUCT_DISTANCE는 코사인 유사성에 권장됩니다.
leafNodeEmbeddingCount

각 리프 노드의 임베딩 수입니다. 기본적으로 1000으로 설정됩니다.

일반적으로 leafNodeEmbeddingCount 값을 변경하는 것은 다른 매개변수 값을 변경하는 것보다 영향이 적습니다.

각 리프 노드의 임베딩 수를 늘리면 지연 시간이 줄어들지만 재현율 품질이 저하됩니다. 다음과 같은 방식으로 성능에 영향을 줄 수 있습니다.

  • 재현율: 타겟팅된 검색으로 인해 감소
  • 지연 시간: 대부분의 사용 사례에서 값이 15k를 초과하지 않는 한 감소
  • 가용성: 영향 없음
  • 비용: 동일한 QPS에 필요한 복제본이 더 적으므로 감소할 수 있습니다.

각 리프 노드의 임베딩 수를 줄이면 다음과 같은 방식으로 성능에 영향을 줄 수 있습니다.

  • 재현율: 타겟팅된 리프가 더 많이 수집되므로 증가할 수 있음
  • 지연 시간: 증가
  • 가용성: 영향 없음
  • 비용: 동일한 QPS에 더 많은 복제본이 필요하므로 증가할 수 있습니다.

무작위 대입 색인을 사용하여 재현율 측정

가장 가까운 이웃을 가져오려면 무작위 대입 알고리즘으로 색인을 사용합니다. 무작위 대입 알고리즘은 100% 재현율을 제공하지만 지연 시간이 길어집니다. 무작위 대입 색인을 사용하여 재현율을 측정하는 것은 일반적으로 프로덕션 제공에 적합하지 않지만 오프라인으로 다양한 색인 생성 옵션의 재현율을 평가하는 데 유용할 수 있습니다.

무작위 대입 알고리즘으로 색인을 만들려면 색인 메타데이터에 brute_force_config를 지정합니다.

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
http://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/indexes \
-d '{
    displayName: "'${DISPLAY_NAME}'",
    description: "'${DESCRIPTION}'",
    metadata: {
       contentsDeltaUri: "'${INPUT_DIR}'",
       config: {
          dimensions: 100,
          approximateNeighborsCount: 150,
          distanceMeasureType: "DOT_PRODUCT_DISTANCE",
          featureNormType: "UNIT_L2_NORM",
          algorithmConfig: {
             bruteForceConfig: {}
          }
       },
    },
}'

색인 삭제

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • INDEX_ID: 색인 ID
  • LOCATION: Vertex AI를 사용하는 리전
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud ai indexes delete INDEX_ID \
    --region=LOCATION \
    --project=PROJECT_ID

Windows(PowerShell)

gcloud ai indexes delete INDEX_ID `
    --region=LOCATION `
    --project=PROJECT_ID

Windows(cmd.exe)

gcloud ai indexes delete INDEX_ID ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • INDEX_ID: 색인 ID
  • LOCATION: Vertex AI를 사용하는 리전
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호

HTTP 메서드 및 URL:

DELETE http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-08T02:35:56.364956Z",
      "updateTime": "2022-01-08T02:35:56.364956Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

콘솔

다음 안내에 따라 하나 이상의 색인을 삭제합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 배포 및 사용 섹션으로 이동합니다. 벡터 검색을 선택합니다.

    벡터 검색으로 이동

  2. 활성 색인 목록이 표시됩니다.
  3. 색인을 삭제하려면 색인과 동일한 행에 있는 옵션 메뉴로 이동하여 삭제를 선택합니다.

다음 단계