명령줄을 사용하여 스트리밍 동영상 창고 데이터 검색

Vision Warehouse를 만들고 앱에 추가하고 앱을 배포한 후에는 스트리밍 동영상 웨어하우스에 저장된 데이터를 검색할 수 있습니다.

스트리밍 동영상 메타데이터 검색

웨어하우스 (corpus)에서 데이터 (assets)를 검색하려면 찾으려는 콘텐츠로 SearchAssetsRequest을 채우세요. 이 콘텐츠는 몇 가지 다른 형식으로 제공됩니다.

  1. criteria: 사용자가 제공한 텍스트, 숫자 또는 날짜 콘텐츠입니다.
  2. facet_selections - 서버에서 반환되고 사용자가 선택한 텍스트 콘텐츠입니다.
  3. content_time_ranges - 반환된 모든 콘텐츠가 속해야 하는 날짜 범위입니다.

다음 예에서는 전국에 있는 다양한 유형의 매장의 보안 카메라 영상을 포함하는 창고를 고려해 보겠습니다. 주석 "state": "California" 또는 주석 "state":"Pennsylvania"로 태그된 2018년 또는 2020년의 모든 애셋을 가져오려면 다음 요청을 전송합니다.

REST

애셋을 검색하려면 projects.locations.corpora.searchAssets 메서드를 사용하여 POST 요청을 전송하세요.

이 샘플 본문에서 criteria 필드는 textArray 값을 사용하여 txt_values 'California'와 'Pennsylvania'를 제공합니다. 다른 데이터 유형의 검색 기준을 제공할 수도 있습니다. 각 요청에는 하나의 검색 기준 유형만 지정할 수 있습니다.

추가 검색 기준 옵션

정수 범위 (경계 포함)

    "int_range_array" : {
      "int_ranges": { "start": "5", "end": "10" }
      "int_ranges": { "start": "20", "end": "30" }
    }
    

부동 소수점 범위 (경계 포함)

    "float_range_array" : {
      "float_ranges": { "start": "2.6", "end": "14.3" }
      "float_ranges": { "start": "205.3", "end": "205.8" }
    }
    

위치정보 (좌표 및 반경)

    "geo_location_array": {
      "circle_areas": {
        "latitude": "37.4221",
        "longitude": "122.0841",
        "radius_meter": "500"
      },
      "circle_areas": {
        "latitude": "12.46523",
        "longitude": "-95.2146",
        "radius_meter": "100"
      }
    }
    

불리언

    "bool_value" : {
      "value": "true"
    }
    

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

JSON 요청 본문:

{
  "page_size": "2",
  "content_time_ranges": {
    "date_time_ranges": {
      "start": {
        "year":"2018",
        "month":"1",
        "day":"1",
      },
      "end": {
        "year":"2019",
        "month":"1",
        "day":"1",
      }
    },
    "date_time_ranges": {
      "start": {
        "year":"2020",
        "month":"1",
        "day":"1",
      },
      "end": {
        "year":"2021",
        "month":"1",
        "day":"1",
      }
    }
  },
  "criteria": {
    "field": "state",
    "text_array": {
      "txt_values": "California",
      "txt_values": "Pennsylvania"
    }
  }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

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

결과의 다음 페이지를 검색하려면 반환된 next_page_token가 추가된 원래 요청 매개변수를 전달합니다.

facet_results 배열에는 원래 쿼리와 일치하는 콘텐츠가 표시됩니다. 위의 대답은 보안 카메라 중 하나가 스포츠 용품점에 배치되어 있고 다른 하나는 식료품점에 배치되어 있음을 나타냅니다.

이 쿼리를 식료품점 영상만 표시하도록 제한하려면 패싯 선택과 함께 동일한 요청을 다시 전달합니다.

패싯 선택이 포함된 JSON 요청 본문:

{
  "page_size": "2",
  "content_time_ranges": {
    "date_time_ranges": {
      "start": {
        "year":"2018",
        "month":"1",
        "day":"1",
      },
      "end": {
        "year":"2018",
        "month":"12",
        "day":"31",
      }
    },
    "date_time_ranges": {
      "start": {
        "year":"2020",
        "month":"1",
        "day":"1",
      },
      "end": {
        "year":"2020",
        "month":"12",
        "day":"31",
      }
    }
  },
  "criteria": {
    "field": "state",
    "text_array": {
      "txt_values": "California",
      "txt_values": "Pennsylvania"
    }
  },
  "facet_selections": {
    "facetId": "state",
    "displayName": "State",
    "buckets": {
        "value": {
         "stringValue": "California"
        }
    },
    "buckets": {
      "value": {
        "stringValue": "Pennsylvania"
      }
    },
    "bucketType": "FACET_BUCKET_TYPE_VALUE"
  },
  "facet_selections": {
    "facetId": "store-type",
    "displayName": "StoreType",
    "buckets": {
      "value": {
        "stringValue": "Sporting Goods"
      }
    },
    "buckets": {
      "value": {
        "stringValue": "Grocery"
      },
      "selected": "true"
    },
    "bucketType": "FACET_BUCKET_TYPE_VALUE"
  }
}

식료품 패싯이 선택되었으므로 모든 대답에는 "store-type":"Grocery" 주석이 포함됩니다.

검색 시 클립 애셋 메타데이터 반환

또한 Vertex AI Vision API를 사용하면 사용자가 result_annotation_keys를 사용하여 검색 결과와 함께 반환할 추가 클립 메타데이터를 지정할 수 있습니다.

REST

이 예에서는 사용자 제공 주석 키 "camera-location"가 요청 본문에 지정되고 키의 값 ("Sunnyvale")이 응답에 제공됩니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

JSON 요청 본문:

{
   "page_size": "2",
   "criteria": {
     "field": "state",
     "text_array": {
       "txt_values": "California",
       "txt_values": "Pennsylvania"
     }
   },
   "result_annotation_keys": "camera-location"
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

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

기준을 사용하여 검색에서 애셋 메타데이터 반환

각 검색 결과 항목에 대해 일치하는 주석을 반환할지 여부를 검색 기준에 지정할 수 있습니다. 이 기능은 INTEGER, FLOAT, BOOLEAN, STRING(EXACT_SEARCH만 해당)의 제한된 데이터 스키마 유형에 지원되며 주석은 파티션 수준에 있어야 합니다.

웨어하우스 코퍼스에 다음 데이터 스키마를 만든다고 가정해 보겠습니다.

{
  "key": "image-classification",
  "schema_details": {
    "type":"STRING",
    "granularity":"GRANULARITY_PARTITION_LEVEL",
    "search_strategy": {
      "search_strategy_type":"EXACT_SEARCH"
    }
  }
}

"image-classification"의 일부 주석은 스트리밍 동영상 수집 또는 CreateAnnotation 요청을 사용하여 코퍼스에 수집됩니다.

주석이 인그레션된 후 "image-classification"를 검색하여 동영상 결과와 해당 주석을 가져올 수 있습니다.

REST

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

JSON 요청 본문:

{
  "page_size": "5",
  "facet_selections": {
    "facet_id": "image-classification",
    "fetch_matched_annotations": "true",
    "bucket_type": "FACET_BUCKET_TYPE_VALUE",
      "buckets": {
        "value": {
          "string_value": "cat"
        },
        "selected" : "true"
      },
  }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

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

전역 검색은 사용자가 개별 기준을 지정하는 대신 검색어를 입력할 수 있는 공간을 제공합니다. 데이터 스키마에서 검색 가능하도록 설정된 문자열 유형 기준에 대해 검색할 수 있습니다. 일치하는 결과가 검색되어 사용자에게 반환됩니다.

이 기능을 사용하려면 SearchAssetsRequest에서 search_query 필드를 설정하세요.

REST

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

JSON 요청 본문:

{
    "page_size": "2",
    "search_query': "Pennsylvania"
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

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

검색에서 반환된 애셋 메타데이터에 정렬 사양 적용

정렬 기능을 사용하여 사용자가 제공한 annotation에 따라 검색 결과를 정렬할 수 있습니다. 이는 문자열 및 숫자 유형과 같이 순서를 지정할 수 있는 데이터 스키마 유형으로 결과를 정렬하는 데 유용합니다.

이 기능을 사용하려면 데이터 스키마 키와 오름차순/내림차순이 최소한으로 필요한 schema_key_sorting_strategy를 지정하세요.

REST

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

JSON 요청 본문:

{
    "page_size": "2",
    "schemaKeySortingStrategy":
    { "options": 
      { 
        "data_schema_key": "stream-display-name", 
        "sort_decreasing": true
      } 
    }

}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.

검색 구성 만들기

Vision Warehouse를 사용하면 사용자가 검색 구성을 통해 검색 환경을 맞춤설정할 수 있습니다. 검색 구성은 사용자 제공 주석, Google Cloud 동영상 이해 모델에서 생성된 유용한 정보와 같은 동영상 데이터를 사용하여 사용자에게 추가 검색 옵션을 제공합니다. 예를 들어 창고에 있는 자동차 동영상 데이터에서 특정 색상의 차량이 포함된 클립을 타겟팅하려면 쿼리에 특정 검색 구성을 사용하면 됩니다.

SearchConfig을 사용하여 더 세부적인 구성 옵션을 설정할 수 있습니다.

다음 예에서는 SearchConfig 리소스를 만드는 방법을 보여줍니다.

일반 가이드라인

모든 사용 사례에서 요청이 성공적으로 실행되려면 다음 조건을 충족해야 합니다.

  1. Request.search_configuration.name이(가) 이미 존재하면 안 됩니다.
  2. mapped_fields 배열은 비어 있으면 안 되며 기존 사용자 제공 주석 키에 매핑되어야 합니다.
  3. 모든 mapped_fields은 동일한 유형이어야 합니다.
  4. 모든 mapped_fields는 정확한/스마트 일치 구성을 공유해야 합니다.
  5. 모든 mapped_fields는 동일한 세부사항을 공유해야 합니다.

SearchConfig를 만드는 데는 여러 사용 사례가 있으며 각 사용 사례에는 따라야 하는 고유한 가이드라인이 있습니다.

맞춤 검색 기준으로 검색 구성 만들기

이 섹션에서는 맞춤 연산자를 사용자가 제공한 하나 이상의 주석 키에 매핑하는 방법을 설명합니다. 이 경우 요청을 빌드할 때 일반 가이드라인을 충족해야 합니다.

REST

요청 URL 끝에 새 SearchConfig ID를 지정해야 합니다. 요청의 필드로 지정하면 안 됩니다.

이 예시에서 사용자가 제공한 주석 키는 "player", "coach", "cheerleader"입니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.
  • SEARCHCONFIG: 타겟 SearchConfig의 이름입니다.
    • 이 예시의 SearchConfigperson입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person

JSON 요청 본문:

{
   "search_criteria_property": {
     "mapped_fields": "player",
     "mapped_fields": "coach",
     "mapped_fields": "cheerleader",
  }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/person",
  "searchCriteriaProperty":
    {
      "mappedFields": [
        "player",
        "coach",
        "cheerleader"
      ]
    }
}

1:1 패싯 매핑으로 검색 구성 만들기

단일 사용자 제공 주석 키의 패싯을 만들려면 Request.search_configuration.facet_property.mapped_fields에 단일 요소가 포함되어야 합니다. 이 요소의 값은 사용자가 지정한 주석 키 이름이어야 합니다.

다음 예에서는 사용자 제공 주석 키 "Location"의 패싯 매핑을 만드는 방법을 보여줍니다.

REST

요청 URL 끝에 새 SearchConfig ID를 지정해야 합니다. 요청의 필드로 지정하면 안 됩니다.

이 예에서는 요청 URL의 search_config_id(Location)가 기존 사용자 제공 주석 키를 참조하고 mapped_fields에 값이 search_config_id (Location)인 요소가 정확히 하나 포함되어 있으므로 요청이 성공합니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.
  • SEARCHCONFIG: 타겟 SearchConfig의 이름입니다.
    • 이 예시의 SearchConfigLocation입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location

JSON 요청 본문:

{
   "facet_property": {
     "mapped_fields": "Location",
     "display_name": "Location",
     "result_size": "5",
     "bucket_type":"FACET_BUCKET_TYPE_VALUE"
  }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location" | Select-Object -Expand Content
 

다음 요청은 필요한 요구사항을 충족하지 않아 실패합니다.

실패한 요청

실패한 요청 1:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \
      -d "{
         "facet_property": {
           "mapped_fields": "City", /* City is not equal to search_config_id. */
           "display_name": "City",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

실패한 요청 2:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=City \
      -d "{
         "facet_property": {
           "mapped_fields": "City", /* City doesn't map to an existing user-given annotation key. */
           "display_name": "City",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

실패한 요청 3:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \
      -d "{
         "facet_property": {
           "mapped_fields": "Location",
           "mapped_fields": "City", /* mapped_fields contains more than 1 element. */
           "display_name": "Location",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

맞춤 1:1 또는 그 이상의 패싯 매핑으로 검색 구성 만들기

맞춤 패싯 값과 하나 이상의 사용자 제공 주석 키 간의 매핑을 만들려는 클라이언트는 다음을 충족해야 합니다.

  1. Request.search_configuration에는 Request.search_configuration.search_criteria_property.mapped_fieldsRequest.search_configuration.facet_property.mapped_fields와 동일한 요소가 포함되도록 SearchCriteriaProperty가 포함되어야 합니다.

REST

요청 URL 끝에 새 SearchConfig ID를 지정해야 합니다. 요청의 필드로 지정하면 안 됩니다.

다음 예시에서는 사용자 제공 주석 키 "City""State"의 패싯 매핑을 만드는 방법을 보여줍니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.
  • SEARCHCONFIG: 타겟 SearchConfig의 이름입니다.
    • 이 예시의 SearchConfigLocation입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location

JSON 요청 본문:

{
  "search_criteria_property": {
     "mapped_fields": "City",
     "mapped_fields": "State",
     "mapped_fields": "Province",
  }
  "facet_property": {
     "mapped_fields": "City",
     "mapped_fields": "State",
     "display_name": "Province",
     "result_size": "5",
     "bucket_type":"FACET_BUCKET_TYPE_VALUE"
  }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location" | Select-Object -Expand Content
 

다음 요청은 필요한 요구사항을 충족하지 않아 실패합니다.

실패한 요청

실패한 요청 1:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \
      -d "{
        "facet_property": { /* Request is missing a SearchCriteriaProperty object.*/
           "mapped_fields": "City",
           "mapped_fields": "State",
           "display_name": "Location",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

실패한 요청 2:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \
      -d "{
        "search_criteria_property": {
           "mapped_fields": "City",
           "mapped_fields": "State",
        }
        "facet_property": {
           "mapped_fields": "City",
           "mapped_fields": "State",
           "mapped_fields": "Province", /* Province is missing from search_criteria_property. */
           "display_name": "Location",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

범위 기반 패싯으로 검색 구성 만들기

범위 패싯은 일반 패싯과 비슷하지만 각 패싯 버킷은 연속된 범위를 포함합니다. 추가 구성(range_facet_config)은 이러한 패싯 버킷 범위에 관한 시스템 정보를 제공합니다.

범위 패싯은 다음에서 사용할 수 있습니다.

  1. 정수
  2. 날짜

범위 패싯에는 세 가지 유형이 있습니다.

  1. 고정 범위 - 각 버킷의 크기가 동일합니다.
  2. 맞춤 범위 - 프로그래밍 가능한 버킷 크기입니다. 예를 들어 로그입니다.
  3. 기간 - DAY, MONTH, YEAR의 고정 버킷 세분성 이는 기간 패싯에만 적용됩니다.

범위 지정에 관한 몇 가지 추가 유효성 검사와 함께 동일한 조건이 단수 패싯으로 적용됩니다.

고정 범위 버킷 사양

다음 예시에서는 inventory-count 필드의 고정 범위 패싯 사양을 만들고 [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf] 버킷이 생성됩니다.

REST

요청 URL 끝에 새 SearchConfig ID를 지정해야 합니다. 요청의 필드로 지정하면 안 됩니다.

이 요청은 FixedRangeBucketSpec를 사용하여 세부사항이 동일한 여러 버킷을 만듭니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.
  • SEARCHCONFIG: 타겟 SearchConfig의 이름입니다.
    • 이 예시의 SearchConfiginventory-count입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count

JSON 요청 본문:

{
  "facet_property": {
    "mapped_fields": "inventory-count",
    "display_name": "Inventory Count",
    "result_size": "5",
    "bucket_type":"FACET_BUCKET_TYPE_FIXED_RANGE",
    "fixed_range_bucket_spec": {
       "bucket_start": {
         "integer_value": 0
       },
       "bucket_granularity": {
         "integer_value": 10
       },
       "bucket_count": 5
    }
  }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count" | Select-Object -Expand Content
 

맞춤 범위 버킷 사양

다음 예시에서는 video-views 필드의 고정 범위 패싯 사양을 만들고 [inf, 0), [0, 10), [10, 100), [100, 1000), [1000, 10000), [10000, inf) 버킷이 생성됩니다.

REST

요청 URL 끝에 새 SearchConfig ID를 지정해야 합니다. 요청의 필드로 지정하면 안 됩니다.

이 요청은 CustomRangeBucketSpec을 사용하여 값이 버킷화되는 방식을 지정합니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.
  • SEARCHCONFIG: 타겟 SearchConfig의 이름입니다.
    • 이 예시의 SearchConfigvideo-views입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views

JSON 요청 본문:

{
  "facet_property": {
    "mapped_fields": "video-views",
    "display_name": "Video Views",
    "result_size": "6",
    "bucket_type":"FACET_BUCKET_TYPE_CUSTOM_RANGE",
    "custom_range_bucket_spec": {
       "endpoints": {
         "integer_value": 0
       },
       "endpoints": {
         "integer_value": 10
       },
       "endpoints": {
         "integer_value": 100
       },
       "endpoints": {
         "integer_value": 1000
       },
       "endpoints": {
         "integer_value": 10000
       }
    }
  }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views" | Select-Object -Expand Content
 

날짜 / 시간 범위 버킷 사양

다음 예시에서는 DAY 세부사항으로 film-date 필드의 기간 사양을 만듭니다.

REST

요청 URL 끝에 새 SearchConfig ID를 지정해야 합니다. 요청의 필드로 지정하면 안 됩니다.

이 요청은 DateTimeBucketSpec을 사용하여 날짜 값을 버킷화하는 방법을 지정합니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.
  • SEARCHCONFIG: 타겟 SearchConfig의 이름입니다.
    • 이 예시의 SearchConfigfilm-date입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date

JSON 요청 본문:

{
  "facet_property": {
    "mapped_fields": "film-date",
    "display_name": "Film Date",
    "result_size": "5",
    "bucket_type": "FACET_BUCKET_TYPE_DATETIME",
    "datetime_bucket_spec": {
       "granularity": "DAY"
    }
 }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date" | Select-Object -Expand Content
 

이러한 패싯 버킷을 만든 후 이를 사용하여 창고를 검색할 수 있습니다.

REST

이 요청은 facetSelections 객체를 사용하여 패싯 버킷 그룹을 지정합니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.

HTTP 메서드 및 URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

JSON 요청 본문:

{
   "page_size": "10",
   "facet_selections": {
     "facet_id": "inventory-count",
     "buckets": {
       "range": {
         "end" : {
           "integer_value": 0
         }
       }
     },
     "buckets": {
       "range": {
         "start" : {
           "integer_value": 20
         },
         "end" : {
           "integer_value": 30
         }
       }
     }
   },
   "facet_selections": {
     "facet_id": "video-views",
     "buckets": {
       "range": {
         "start" : {
           "integer_value": 100
         },
         "end" : {
           "integer_value": 1000
         }
       }
     }
   },
   "facet_selections": {
     "facet_id": "film-date",
     "buckets": {
       "range": {
         "start" : {
           "datetime_value": {
             "year": 2022,
             "month": 9,
             "day": 10
           }
         },
         "end" : {
           "datetime_value": {
             "year": 2022,
             "month": 9,
             "day": 11
           }
         }
       }
     }
   }
}

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

curl

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

요청 본문을 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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
 

검색 구성 업데이트

현재 SearchConfig를 업데이트하려면 요청이 다음 요구사항을 충족해야 합니다.

  1. Request.searchConfig.name이 이미 있어야 합니다.
  2. 요청에는 비어 있지 않은 searchCriteriaProperty 또는 facetProperty이 하나 이상 포함되어야 합니다.
  3. mappedFields 배열은 비어 있으면 안 되며 기존 사용자 제공 주석 키에 매핑되어야 합니다.
  4. 모든 mappedFields은 동일한 유형이어야 합니다.
  5. 모든 mappedFields는 동일한 세부사항을 공유해야 합니다.
  6. 모든 mappedFields는 동일한 의미 SearchConfig 일치 옵션을 공유해야 합니다.

REST 및 명령줄

다음 코드 샘플은 projects.locations.corpora.searchConfigs.patch 메서드를 사용하여 창고 검색 구성 리소스를 업데이트합니다.

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

  • REGIONALIZED_ENDPOINT: 엔드포인트에 LOCATION_ID와 일치하는 접두사가 포함될 수 있습니다(예: europe-west4-). 리전화된 엔드포인트에 대해 자세히 알아보세요.
  • PROJECT: Google Cloud 프로젝트 ID 또는 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • CORPUS_ID: 타겟 코퍼스의 ID입니다.
  • SEARCHCONFIG_ID: 타겟 SearchConfig의 ID입니다.
  • "mappedFields": 하나 이상의 기존 사용자 제공 주석 키입니다.

HTTP 메서드 및 URL:

PATCH https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID

JSON 요청 본문:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1",
  "searchCriteriaProperty": {
    "mappedFields": "dataschema2"
  }
}

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

curl

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

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID"

PowerShell

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

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

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1",
  "searchCriteriaProperty": {
    "mappedFields": [
      "dataschema2"
    ]
  }
}