특성 뷰 인스턴스 만들기

기존 온라인 스토어 인스턴스 내에서 특성 뷰를 만들 수 있습니다. 특성 뷰를 만들 때는 다음과 같은 방법으로 여기에 특성을 연결할 수 있습니다.

  • 특성 레지스트리에서 특성 그룹 및 특성 추가: 특성 레지스트리의 기존 특성 그룹 및 특성에 연결합니다. 특성 그룹은 BigQuery 데이터 소스의 위치를 지정합니다. 특성 그룹 내의 특성은 데이터 소스 내의 특정 특성 열을 가리킵니다. 특성 뷰를 여러 특성 그룹에 연결할 수 있습니다.

  • BigQuery 소스에서 특성 추가: BigQuery 테이블 또는 뷰와 같은 BigQuery 데이터 소스를 직접 연결하고 엔티티 ID 열을 1개 이상 지정합니다.

특성 뷰를 만든 후 Vertex AI Feature Store는 BigQuery 데이터 소스의 최신 특성 값을 동기화합니다. 쿼리 매개변수 run_sync_immediately=true를 설정하면 사용자가 특성 뷰를 만들 때 Vertex AI Feature Store가 특성 값을 동기화합니다. 그렇지 않으면 Vertex AI Feature Store가 특정 뷰에 지정된 동기화 일정에 따라 특성 값을 동기화합니다.

시작하기 전에

아직 Vertex AI에 인증하지 않았다면 인증을 진행합니다.

Select the tab for how you plan to use the samples on this page:

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

로컬 개발 환경에서 이 페이지의 Python 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

자세한 내용은 다음을 참조하세요: Set up authentication for a local development environment.

로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

    Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참고하세요.

특성 뷰에서 특성 데이터 동기화

Vertex AI Feature Store는 BigQuery 데이터 소스의 특성 값을 특성 뷰로 새로고침하거나 동기화할 수 있습니다. FeatureView.sync_config 매개변수를 사용하여 특성 뷰의 데이터 동기화 유형을 지정할 수 있습니다.

Vertex AI Feature Store는 다음 유형의 데이터 동기화를 지원합니다.

  • 예약된 데이터 동기화: 데이터 동기화 일정 또는 빈도를 지정할 수 있습니다. 온라인 스토어 인스턴스에 지정된 온라인 서빙 유형과 관계없이 특성 뷰에 대해 이 예약된 데이터 동기화를 선택할 수 있습니다.

    특성 뷰가 예약된 데이터 동기화를 사용하도록 구성된 경우 원하는 경우 데이터 동기화를 수동으로 시작하여 다음 예약된 동기화 작업까지의 대기를 건너뛸 수 있습니다. 데이터 동기화를 수동으로 트리거하는 방법에 관한 자세한 내용은 온라인 스토어에 특성 데이터 동기화를 참고하세요.

    온라인 서빙 중에 null 값을 포함한 최신 특성 값만 서빙하려면 다음 설정을 사용해야 합니다.

    1. dense 매개변수를 true로 설정하여 특성 그룹을 만들어 지형지물 데이터 소스를 등록합니다.

    2. 온라인 스토어 인스턴스를 만들 때 Bigtable 온라인 서빙을 선택합니다.

    3. 지형지물 뷰를 만들 때 예약된 데이터 동기화를 선택합니다.

  • 지속적 데이터 동기화: BigQuery 데이터 소스의 특성 데이터가 업데이트될 때마다 특성 데이터가 새로고침됩니다. 다음 조건이 모두 충족되는 경우에만 특성 뷰에 이 유형의 데이터 동기화를 선택할 수 있습니다.

    • 온라인 스토어 인스턴스가 Bigtable 온라인 서빙을 위해 구성됩니다.

    • 특성 뷰는 특성 그룹 및 특성 리소스와 연결됩니다.

    • BigQuery 데이터 소스가 다음 리전 중 한 곳에 있습니다.

      • eu

      • us

      • us-central1

    연속 데이터 동기화에는 다음과 같은 제한사항이 있습니다.

    • 특성 뷰에 연속 데이터 동기화를 선택하면 특성 뷰를 업데이트할 수 없습니다.

    • 새 지형지물 레코드만 BigQuery 데이터 소스에서 동기화됩니다. 지속적인 데이터 동기화는 BigQuery에서 업데이트하거나 삭제하는 지형지물 레코드를 동기화하지 않습니다.

예약된 데이터 동기화 중 비용 최적화

데이터 동기화 작업에는 BigQuery 리소스 사용 비용이 포함될 수 있습니다. 이러한 비용을 최적화하고 데이터 동기화 중 성능을 향상시키려면 다음 안내를 따르세요.

  • 데이터가 BigQuery 소스에서 변경될 것으로 예상되는 빈도보다 자주 실행되도록 동기화 일정을 구성하지 마세요.

  • BigQuery에서 특성 데이터 소스의 크기를 최적화합니다. 특성 뷰를 만드는 동안에는 온라인 제공을 위해 필요한 데이터만 포함합니다.

  • BigQuery에서 복잡한 집계를 실행하지 마세요. 데이터 처리 볼륨 및 기간을 예측하려면 테이블 또는 뷰에서 SELECT * 쿼리를 실행합니다.

  • 온라인 스토어의 확장 옵션을 설정할 때는 max_node_count를 데이터 동기화 중 높은 부하를 지원하기에 충분히 높은 값으로 설정합니다.

  • 동일한 온라인 스토어 내에서 각기 다른 특성 뷰에 대한 동기화를 서로 다른 시간으로 예약합니다.

  • BigQuery 테이블에 광범위한 이전 데이터가 포함된 경우 타임스탬프를 사용해서 테이블 파티션을 나누고 특성 데이터를 검색할 시간 범위를 지정하는 것이 좋습니다. 이렇게 하면 동기화 중 오래된 특성 데이터 검색을 최소화할 수 있습니다.

  • 데이터 동기화 중 Bigtable 활용률이 증가합니다. Bigtable 온라인 서빙을 위해 온라인 스토어 내에 생성된 특성 뷰의 경우 최상의 성능을 위해 사용량이 적은 시간에 동기화 작업을 예약합니다.

특성 뷰의 서비스 계정 구성

각 특성 뷰는 서비스 계정을 사용하여 동기화 중에 BigQuery의 소스 데이터에 액세스합니다. Vertex AI Feature Store는 이 서비스 계정에 BigQuery 데이터 뷰어 Identity and Access Management(IAM) 역할을 할당합니다.

기본적으로 특성 뷰는 프로젝트에 구성된 서비스 계정을 사용합니다. 이 구성을 사용하면 프로젝트에서 특성 뷰를 만들 수 있는 권한이 있는 모든 사용자가 BigQuery의 특성 데이터에 액세스할 수 있습니다.

또는 자체 서비스 계정을 사용하도록 특성 뷰를 구성할 수 있습니다. 그런 다음 Vertex AI Feature Store는 특성 뷰의 전용 서비스 계정을 설정합니다. 이 구성을 사용하면 BigQuery의 특성 데이터에 대한 액세스를 제한하거나 추가 사용자에게 액세스 권한을 부여할 수 있습니다. FeatureView.service_agent_type 매개변수를 사용하여 서비스 계정 구성을 지정할 수 있습니다.

특성 뷰의 벡터 검색 구성

FeatureView.index_config 파라미터를 사용하여 최적화된 온라인 서빙을 위해 생성된 온라인 스토어 내에서 특성 뷰에 대한 벡터 검색을 구성할 수 있습니다. embedding 열을 포함하여 임베딩을 지원하도록 BigQuery 데이터 소스를 준비하거나 업데이트하는 방법에 대한 자세한 내용은 데이터 소스 준비 가이드라인을 참조하세요.

Feature Registry의 특성 그룹과 특성이 아닌 BigQuery 소스 URI를 지정하여 특성 뷰를 만든 경우에만 벡터 검색을 구성하고 임베딩을 관리할 수 있습니다.

Vertex AI Feature Store에서 임베딩을 사용하여 대략적으로 가장 가까운 인접 항목을 검색하는 방법은 임베딩을 사용하여 검색을 참조하세요.

특성 그룹에서 특성 뷰 만들기

특성 그룹 및 특성을 사용해서 등록된 특성 데이터를 기반으로 특성 뷰를 만들 수 있습니다. 여러 BigQuery 데이터 소스를 동일한 특성 뷰에 연결하려면 여러 특성 그룹을 지정할 수 있습니다.

특성 그룹 및 특성을 지정하여 특성 뷰를 만들 경우,

  • 데이터 소스는 feature_timestamp 열을 포함해야 하며 이전 데이터를 포함할 수 있습니다.

  • Vertex AI Feature Store는 특성 타임스탬프를 기준으로 최신 특성 값만 제공합니다.

  • 특성 뷰의 임베딩 관리는 구성할 수 없습니다.

기본 서비스 계정 구성으로 특성 뷰 만들기

다음 샘플을 사용하면 서비스 계정 구성을 지정하지 않고 여러 특성 그룹을 연결하여 특성 뷰를 만들 수 있습니다.

FeatureView 리소스를 만들려면 featureViews.create 메서드를 사용해서 POST 요청을 전송합니다.

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

  • LOCATION_ID: 특성 뷰를 만들려는 리전입니다(예: us-central1).
  • PROJECT_ID: 프로젝트 ID입니다.
  • FEATUREONLINESTORE_NAME: 특성 뷰를 만들려는 온라인 스토어 인스턴스의 이름입니다.
  • FEATUREVIEW_NAME: 만들려는 새로운 특성 뷰 인스턴스의 이름입니다.
  • FEATUREGROUP_NAME_AFEATUREGROUP_NAME_B: 특성 뷰에 특성을 추가하려는 특성 그룹의 이름입니다.
  • FEATURE_ID_A1FEATURE_ID_A2: 특성 뷰에 추가하려는 특성 그룹 FEATUREGROUP_NAME_A의 특성 ID입니다.
  • FEATURE_ID_B1FEATURE_ID_B2: 특성 뷰에 추가하려는 특성 그룹 FEATUREGROUP_NAME_B의 특성 ID입니다.
  • SYNC_CONFIG: 지형지물 뷰에 다음 동기화 구성 중 하나를 입력합니다.
    • 예약된 데이터 동기화를 사용하려면 다음 형식으로 동기화 일정을 제공합니다.
      "cron": "cron_schedule_expression"
      `cron_schedule_expression` 을 특성 뷰에 데이터를 동기화할 빈도를 나타내는 크론 일정 표현식으로 바꿉니다. 자세한 내용은 크론을 참고하세요.
    • 연속 데이터 동기화를 사용하려면 다음을 입력합니다.
      "continuous": true 특성 뷰가 포함된 온라인 스토어 인스턴스가 Bigtable 온라인 서빙을 위해 구성된 경우에만 연속 데이터 동기화를 사용할 수 있습니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

JSON 요청 본문:

{
  "feature_registry_source": {
    "feature_groups": [
      {
        "feature_group_id": "FEATUREGROUP_NAME_A",
        "feature_ids": [ "FEATURE_ID_A1", "FEATURE_ID_A2" ]
      },
      {
        "feature_group_id": "FEATUREGROUP_NAME_B",
        "feature_ids": [ "FEATURE_ID_B1", "FEATURE_ID_B2" ]
      }
    ]
  },
  "sync_config": {
    SYNC_CONFIG
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

서비스 계정 구성을 지정하여 특성 뷰 만들기

다음 샘플을 사용하면 서비스 계정 구성을 지정하여 특성 그룹에서 특성 뷰를 만들 수 있습니다.

FeatureView 리소스를 만들려면 featureViews.create 메서드를 사용해서 POST 요청을 전송합니다.

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

  • LOCATION_ID: 특성 뷰를 만들려는 리전입니다(예: us-central1).
  • PROJECT_ID: 프로젝트 ID입니다.
  • FEATUREONLINESTORE_NAME: 특성 뷰를 만들려는 온라인 스토어 인스턴스의 이름입니다.
  • FEATUREVIEW_NAME: 만들려는 새로운 특성 뷰 인스턴스의 이름입니다.
  • FEATUREGROUP_NAME_AFEATUREGROUP_NAME_B: 특성 뷰에 특성을 추가하려는 특성 그룹의 이름입니다.
  • FEATURE_ID_A1FEATURE_ID_A2: 특성 뷰에 추가하려는 특성 그룹 FEATUREGROUP_NAME_A의 특성 ID입니다.
  • FEATURE_ID_B1FEATURE_ID_B2: 특성 뷰에 추가하려는 특성 그룹 FEATUREGROUP_NAME_B의 특성 ID입니다.
  • SYNC_CONFIG: 지형지물 뷰에 다음 동기화 구성 중 하나를 입력합니다.
    • 예약된 데이터 동기화를 사용하려면 다음 형식으로 동기화 일정을 제공합니다.
      "cron": "cron_schedule_expression"
      `cron_schedule_expression` 을 특성 뷰에 데이터를 동기화할 빈도를 나타내는 크론 일정 표현식으로 바꿉니다. 자세한 내용은 크론을 참고하세요.
    • 연속 데이터 동기화를 사용하려면 다음을 입력합니다.
      "continuous": true 특성 뷰가 포함된 온라인 스토어 인스턴스가 Bigtable 온라인 서빙을 위해 구성된 경우에만 연속 데이터 동기화를 사용할 수 있습니다.
  • SERVICE_AGENT_TYPE: 선택사항: 특성 뷰에 대한 서비스 계정 구성입니다. 지원되는 서비스 에이전트 유형은 다음과 같습니다.
    • SERVICE_AGENT_TYPE_PROJECT: 특성 뷰에 프로젝트 수준 서비스 계정을 사용합니다. 기본 구성입니다.
    • SERVICE_AGENT_TYPE_FEATURE_VIEW: 특성 뷰에 대한 전용 서비스 계정을 설정하고 사용합니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

JSON 요청 본문:

{
  "feature_registry_source": {
    "feature_groups": [
      {
        "feature_group_id": "FEATUREGROUP_NAME_A",
        "feature_ids": [ "FEATURE_ID_A1", "FEATURE_ID_A2" ]
      },
      {
        "feature_group_id": "FEATUREGROUP_NAME_B",
        "feature_ids": [ "FEATURE_ID_B1", "FEATURE_ID_B2" ]
      }
    ]
  },
  "sync_config": {
    SYNC_CONFIG
  },
  "service_agent_type": "SERVICE_AGENT_TYPE"
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

BigQuery 소스에서 특성 뷰 만들기

특성 그룹 및 특성을 사용해서 BigQuery 데이터 소스를 등록하지 않고 특성을 온라인으로 제공하려면 BigQuery 데이터 소스의 URI를 지정하여 특성 뷰를 만들 수 있습니다.

데이터 소스를 지정하여 특성 뷰를 만들 경우:

  • BigQuery 테이블 또는 뷰의 feature_timestamp 열을 포함할 수 없습니다.

  • 데이터 소스의 이전 특성 값을 포함할 수 없습니다. 모든 행은 고유한 엔티티 ID를 포함해야 합니다.

기본 서비스 계정을 사용하고 임베딩을 지원하지 않는 특성 뷰 만들기

다음 샘플을 사용해서 서비스 계정 구성을 지정하지 않고 BigQuery 데이터 소스를 직접 연결하여 임베딩을 지원하지 않는 특성 뷰를 만듭니다.

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


from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
from typing import List


def create_feature_view_from_bq_source(
    project: str,
    location: str,
    existing_feature_online_store_id: str,
    feature_view_id: str,
    bq_table_uri: str,
    entity_id_columns: List[str],
):
    aiplatform.init(project=project, location=location)
    fos = feature_store.FeatureOnlineStore(existing_feature_online_store_id)
    fv = fos.create_feature_view(
        name=feature_view_id,
        source=feature_store.utils.FeatureViewBigQuerySource(
            uri=bq_table_uri, entity_id_columns=entity_id_columns
        ),
    )
    return fv

  • project: 프로젝트 ID입니다.
  • location: 특성 뷰를 만들려는 리전입니다(예: us-central1).
  • existing_feature_online_store_id: 특성 뷰를 만들려는 온라인 스토어 인스턴스의 이름입니다.
  • feature_view_id: 만들려는 새로운 특성 뷰 인스턴스의 이름입니다.
  • bq_table_uri: BigQuery 소스 테이블 또는 뷰의 URI입니다.
  • entity_id_columns: 엔티티 ID가 포함된 열의 이름입니다. 열을 한 개 또는 여러 개 지정할 수 있습니다.
    • 엔티티 ID 열을 하나만 지정하려면 열 이름을 다음 형식으로 지정합니다.
      "entity_id_column_name".
    • 여러 개의 엔티티 ID 열을 지정하려면 열 이름을 다음 형식으로 지정합니다.
      ["entity_id_column_1_name", "entity_id_column_2_name", ...].

FeatureView 리소스를 만들려면 featureViews.create 메서드를 사용해서 POST 요청을 전송합니다.

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

  • LOCATION_ID: 특성 뷰를 만들려는 리전입니다(예: us-central1).
  • PROJECT_ID: 프로젝트 ID입니다.
  • FEATUREONLINESTORE_NAME: 특성 뷰를 만들려는 온라인 스토어 인스턴스의 이름입니다.
  • FEATUREVIEW_NAME: 만들려는 새로운 특성 뷰의 이름입니다.
  • PROJECT_NAME: 프로젝트 이름입니다.
  • DATASET_NAME: BigQuery 데이터 세트 이름입니다.
  • TABLE_NAME: BigQuery 데이터 세트의 테이블 이름입니다.
  • ENTITY_ID_COLUMNS: 엔티티 ID가 포함된 열의 이름입니다. 열을 한 개 또는 여러 개 지정할 수 있습니다.
    • 엔티티 ID 열을 하나만 지정하려면 열 이름을 다음 형식으로 지정합니다.
      "entity_id_column_name"
    • 여러 개의 엔티티 ID 열을 지정하려면 열 이름을 다음 형식으로 지정합니다.
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • CRON: 특성 뷰에 데이터를 동기화할 빈도를 나타내는 크론 일정 표현식입니다. 자세한 내용은 크론을 참조하세요.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

JSON 요청 본문:

{
  "big_query_source": {
    "uri": "bq://PROJECT_NAME.DATASET_NAME.TABLE_NAME",
    "entity_id_columns": "ENTITY_ID_COLUMNS"
  },
  "sync_config": {
    "cron": "CRON"
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

기본 서비스 계정을 사용하고 임베딩을 지원하는 특성 뷰 만들기

다음 샘플을 사용해서 서비스 계정 구성을 지정하지 않고 BigQuery 데이터 소스를 직접 연결하여 임베딩 지원이 포함된 특성 뷰를 만듭니다.

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


from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
from typing import List


def create_feature_view_from_bq_source_with_embedding_management(
    project: str,
    location: str,
    existing_feature_online_store_id: str,
    feature_view_id: str,
    bq_table_uri: str,
    entity_id_columns: List[str],
    embedding_column: str,
    embedding_dimensions: int,
):
    aiplatform.init(project=project, location=location)

    fos = feature_store.FeatureOnlineStore(existing_feature_online_store_id)

    bigquery_source = feature_store.utils.FeatureViewBigQuerySource(
        uri=bq_table_uri,
        entity_id_columns=entity_id_columns,
    )
    index_config = feature_store.utils.IndexConfig(
        embedding_column=embedding_column,
        dimensions=embedding_dimensions,
        algorithm_config=feature_store.utils.TreeAhConfig(),
    )
    fv = fos.create_feature_view(
        name=feature_view_id,
        source=bigquery_source,
        index_config=index_config,
    )
    return fv

  • project: 프로젝트 ID입니다.
  • location: 특성 뷰를 만들려는 리전입니다(예: us-central1).
  • existing_feature_online_store_id: 특성 뷰를 만들려는 온라인 스토어 인스턴스의 이름입니다.
  • feature_view_id: 만들려는 새로운 특성 뷰 인스턴스의 이름입니다.
  • bq_table_uri: BigQuery 소스 테이블 또는 뷰의 URI입니다.
  • entity_id_columns: 엔티티 ID가 포함된 열의 이름입니다. 열을 한 개 또는 여러 개 지정할 수 있습니다.
    • 엔티티 ID 열을 하나만 지정하려면 열 이름을 다음 형식으로 지정합니다.
      "entity_id_column_name".
    • 여러 개의 엔티티 ID 열을 지정하려면 열 이름을 다음 형식으로 지정합니다.
      ["entity_id_column_1_name", "entity_id_column_2_name", ...].
  • embedding_column: 벡터 검색의 인덱스를 만들기 위해 소스 데이터가 포함된 열의 이름입니다. 특성 뷰를 통해 임베딩을 관리하려는 경우에만 필요합니다.
  • embedding_dimensions: 선택사항. 임베딩 열에 있는 임베딩의 크기입니다(차원 수로 표현).

FeatureView 리소스를 만들려면 featureViews.create 메서드를 사용해서 POST 요청을 전송합니다.

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

  • LOCATION_ID: 특성 뷰를 만들려는 리전입니다(예: us-central1).
  • PROJECT_ID: 프로젝트 ID입니다.
  • FEATUREONLINESTORE_NAME: 특성 뷰를 만들려는 온라인 스토어 인스턴스의 이름입니다.
  • FEATUREVIEW_NAME: 만들려는 새로운 특성 뷰의 이름입니다.
  • PROJECT_NAME: 프로젝트 이름입니다.
  • DATASET_NAME: BigQuery 데이터 세트 이름입니다.
  • TABLE_NAME: BigQuery 데이터 세트의 테이블 이름입니다.
  • ENTITY_ID_COLUMNS: 엔티티 ID가 포함된 열의 이름입니다. 열을 한 개 또는 여러 개 지정할 수 있습니다.
    • 엔티티 ID 열을 하나만 지정하려면 열 이름을 다음 형식으로 지정합니다.
      "entity_id_column_name"
    • 여러 개의 엔티티 ID 열을 지정하려면 열 이름을 다음 형식으로 지정합니다.
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • CRON: 특성 뷰에 데이터를 동기화할 빈도를 나타내는 크론 일정 표현식입니다. 자세한 내용은 크론을 참조하세요.
  • EMBEDDING_COLUMN: 벡터 검색의 인덱스를 만들기 위해 소스 데이터가 포함된 열의 이름입니다. 특성 뷰를 통해 임베딩을 관리하려는 경우에만 필요합니다.
  • FILTER_COLUMN_1FILTER_COLUMN_2: 선택사항: 벡터 검색 결과를 필터링하는 데 사용되는 열의 이름입니다.
  • CROWDING_COLUMN: 선택사항: 크라우딩 속성을 포함하는 열의 이름입니다.
  • EMBEDDING_DIMENSION: 선택사항: 임베딩 열에 있는 임베딩의 크기입니다(차원 수로 표현).

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

JSON 요청 본문:

{
  "big_query_source": {
    "uri": "bq://PROJECT_NAME.DATASET_NAME.TABLE_NAME",
    "entity_id_columns": "ENTITY_ID_COLUMNS"
  },
  "sync_config": {
    "cron": "CRON"
  },
  "index_config": {
    "embedding_column": "EMBEDDING_COLUMN",
    "filter_columns": ["FILTER_COLUMN_1", "FILTER_COLUMN_2"],
    "crowding_column": "CROWDING_COLUMN",
    "embedding_dimension": EMBEDDING_DIMENSION
    "tree_ah_config": {}
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

서비스 계정 구성을 지정하여 임베딩 관리로 특성 뷰 만들기

다음 샘플을 사용해서 BigQuery 데이터 소스를 직접 연결하고 서비스 계정 정보를 지정하여 임베딩 지원이 포함된 특성 뷰를 만듭니다.

임베딩 지원으로 FeatureView 리소스를 만들려면 featureViews.create 메서드를 사용하고 FeatureView.index_config 파라미터를 지정하여 POST 요청을 전송합니다. 온라인 상점이 최적화된 온라인 서빙을 위해 구성된 경우에만 임베딩 관리를 사용할 수 있습니다.

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

  • LOCATION_ID: 특성 뷰를 만들려는 리전입니다(예: us-central1).
  • PROJECT_ID: 프로젝트 ID입니다.
  • FEATUREONLINESTORE_NAME: 특성 뷰를 만들려는 온라인 스토어 인스턴스의 이름입니다.
  • FEATUREVIEW_NAME: 만들려는 새로운 특성 뷰의 이름입니다.
  • PROJECT_NAME: 프로젝트 이름입니다.
  • DATASET_NAME: BigQuery 데이터 세트 이름입니다.
  • TABLE_NAME: BigQuery 데이터 세트의 테이블 이름입니다.
  • ENTITY_ID_COLUMNS: 엔티티 ID가 포함된 열의 이름입니다. 열을 한 개 또는 여러 개 지정할 수 있습니다.
    • 엔티티 ID 열을 하나만 지정하려면 열 이름을 다음 형식으로 지정합니다.
      "entity_id_column_name"
    • 여러 개의 엔티티 ID 열을 지정하려면 열 이름을 다음 형식으로 지정합니다.
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • CRON: 특성 뷰에 데이터를 동기화할 빈도를 나타내는 크론 일정 표현식입니다. 자세한 내용은 크론을 참조하세요.
  • SERVICE_AGENT_TYPE: 특성 뷰에 대한 서비스 계정 구성입니다. 지원되는 서비스 에이전트 유형은 다음과 같습니다.
    • SERVICE_AGENT_TYPE_PROJECT: 특성 뷰에 프로젝트 수준 서비스 계정을 사용합니다. 기본 구성입니다.
    • SERVICE_AGENT_TYPE_FEATURE_VIEW: 특성 뷰에 대한 전용 서비스 계정을 설정하고 사용합니다.
  • EMBEDDING_COLUMN: 벡터 검색의 인덱스를 만들기 위해 소스 데이터가 포함된 열의 이름입니다. 특성 뷰를 통해 임베딩을 관리하려는 경우에만 필요합니다.
  • FILTER_COLUMN_1FILTER_COLUMN_2: 선택사항: 벡터 검색 결과를 필터링하는 데 사용되는 열의 이름입니다.
  • CROWDING_COLUMN: 선택사항: 크라우딩 속성을 포함하는 열의 이름입니다.
  • EMBEDDING_DIMENSION: 선택사항: 임베딩 열에 있는 임베딩의 크기입니다(차원 수로 표현).

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

JSON 요청 본문:

{
  "big_query_source": {
    "uri": "bq://PROJECT_NAME.DATASET_NAME.TABLE_NAME",
    "entity_id_columns": "ENTITY_ID_COLUMNS"
  },
  "sync_config": {
    "cron": "CRON"
  },
  "service_agent_type": "SERVICE_AGENT_TYPE",
  "index_config": {
    "embedding_column": "EMBEDDING_COLUMN",
    "filter_columns": ["FILTER_COLUMN_1", "FILTER_COLUMN_2"],
    "crowding_column": "CROWDING_COLUMN",
    "embedding_dimension": EMBEDDING_DIMENSION
    "tree_ah_config": {}
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

다음 단계