์ด๋ฏธ์ง€ ์ฐฝ๊ณ  ๋งŒ๋“ค๊ธฐ ๋ฐ ์—…๋ฐ์ดํŠธ

์ด๋ฏธ์ง€ ์ฐฝ๊ณ ๋Š” ์ด๋ฏธ์ง€์™€ ์ด๋ฏธ์ง€ ์ฃผ์„์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ

๋จผ์ € ์ž๋ฃŒ ๋ชจ์Œ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

REST ๋ฐ ๋ช…๋ น์ค„

Corpus ํ‘œ์‹œ ์ด๋ฆ„๊ณผ ์„ค๋ช…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ํ”„๋กœ์ ํŠธ ์•„๋ž˜์— ์ž๋ฃŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • REGIONALIZED_ENDPOINT: ์—”๋“œํฌ์ธํŠธ์— LOCATION_ID์™€ ์ผ์น˜ํ•˜๋Š” ์ ‘๋‘์‚ฌ(์˜ˆ: europe-west4-)๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์—ญํ™”๋œ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
  • PROJECT_NUMBER: ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. Google Cloud
  • LOCATION_ID: Vertex AI Vision์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. us-central1, europe-west4 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • DISPLAY_NAME: ์ฐฝ๊ณ ์˜ ํ‘œ์‹œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • WAREHOUSE_DESCRIPTION: ์ฐฝ๊ณ ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค (corpus).

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

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

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "display_name": "DISPLAY_NAME",
  "description": "WAREHOUSE_DESCRIPTION",
  "type": "IMAGE",
  "search_capability_setting": {
    "search_capabilities": {
      "type": "EMBEDDING_SEARCH"
    }
  }
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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"

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" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/warehouseoperations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.CreateCorpusMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.Corpus",
    "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID",
    "displayName": "DISPLAY_NAME",
    "description": "WAREHOUSE_DESCRIPTION",
    "type": "IMAGE",
    "search_capability_setting": {
      "search_capabilities": {
        "type": "EMBEDDING_SEARCH"
      }
    }
  }
}

๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ๋งŒ๋“ค๊ธฐ

์ฃผ์„์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด Import API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ์ƒ์‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

REST ๋ฐ ๋ช…๋ น์ค„

์ด ์ƒ˜ํ”Œ์—์„œ๋Š” ๊ธฐ์กด ์ž๋ฃŒ์—์„œ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • REGIONALIZED_ENDPOINT: ์—”๋“œํฌ์ธํŠธ์— LOCATION_ID์™€ ์ผ์น˜ํ•˜๋Š” ์ ‘๋‘์‚ฌ(์˜ˆ: europe-west4-)๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์—ญํ™”๋œ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
  • PROJECT_NUMBER: ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. Google Cloud
  • LOCATION_ID: Vertex AI Vision์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. us-central1, europe-west4 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • CORPUS_ID: ํƒ€๊ฒŸ ์ž๋ฃŒ์˜ ID์ž…๋‹ˆ๋‹ค.
  • DATASCHEMA_KEY: ์ด ํ‚ค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ์ฃผ์„์˜ ํ‚ค์™€ ์ผ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ corpus ๋‚ด์—์„œ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด data-key์ž…๋‹ˆ๋‹ค.
  • ANNOTATION_DATA_TYPE: ์ฃผ์„์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • DATA_TYPE_UNSPECIFIED
    • INTEGER
    • FLOAT
    • STRING
    • DATETIME
    • GEO_COORDINATE
    • PROTO_ANY
    • BOOLEAN

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ API ์ฐธ์กฐ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  • ANNOTATION_GRANULARITY: ์ด dataSchema ์•„๋ž˜์˜ ์ฃผ์„ ์„ธ๋ถ„์„ฑ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • GRANULARITY_UNSPECIFIED - ์ง€์ •๋˜์ง€ ์•Š์€ ์„ธ๋ถ€์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
    • GRANULARITY_ASSET_LEVEL - ์ €์ž‘๋ฌผ ์ˆ˜์ค€ ์„ธ๋ถ€์‚ฌํ•ญ (์ฃผ์„์— ๋ฏธ๋””์–ด ์ €์ž‘๋ฌผ์˜ ์‹œ๊ฐ„์  ํŒŒํ‹ฐ์…˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋จ)
    • GRANULARITY_PARTITION_LEVEL - ํŒŒํ‹ฐ์…˜ ์ˆ˜์ค€ ์„ธ๋ถ€์‚ฌํ•ญ (์ฃผ์„์—๋Š” ๋ฏธ๋””์–ด ์ €์ž‘๋ฌผ์˜ ์‹œ๊ฐ„์  ํŒŒํ‹ฐ์…˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•จ)
  • SEARCH_STRATEGY: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ด๊ฑฐํ˜• ๊ฐ’ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ฃผ์„ ํ‚ค์— ์ ์šฉํ•  ๊ฒ€์ƒ‰ ์ „๋žต์˜ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • NO_SEARCH
    • EXACT_SEARCH
    • SMART_SEARCH

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

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

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "key": "DATASCHEMA_KEY",
  "schema_details": {
    "type": "ANNOTATION_DATA_TYPE",
    "granularity": "ANNOTATION_GRANULARITY",
    "search_strategy": {
      "search_strategy_type": "SEARCH_STRATEGY"
    }
  }
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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/dataSchemas"

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/dataSchemas" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas/DATASCHEMA_ID",
  "key": "data-key",
  "schemaDetails": {
    "type": "BOOLEAN",
    "granularity": "GRANULARITY_ASSET_LEVEL",
    "searchStrategy": {
      "search_strategy_type": "EXACT_SEARCH"
    }
  }
}

์ด๋ฏธ์ง€ ์ž๋ฃŒ์— ์• ์…‹ ๊ฐ€์ ธ์˜ค๊ธฐ

์ง€์ •๋œ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์กด ์ž๋ฃŒ์— ์• ์…‹ (๋ฐ ์„ ํƒ์ ์œผ๋กœ ์ฃผ์„)์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

ImportAsset ์š”์ฒญ์˜ Cloud Storage ํŒŒ์ผ์€ JSONL ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์—์„œ ๊ฐ ์ค„์€ ํ•˜๋‚˜์˜ ์• ์…‹์— ํ•ด๋‹นํ•˜๋ฉฐ InputImageAsset ํ”„๋กœํ† ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{"gcsUri":"gs://test/test1.png","assetId":"asset1","annotations":[{"key":"title","value":{"strValue":"cat"}}]}
{"gcsUri":"gs://test/test2.png","assetId":"asset2","annotations":[{"key":"title","value":{"strValue":"dog"}}]}
{"gcsUri":"gs://test/test3.png","assetId":"asset3","annotations":[{"key":"title","value":{"strValue":"rabbit"}}]}

REST ๋ฐ ๋ช…๋ น์ค„

์ด ์ƒ˜ํ”Œ์—์„œ๋Š” ์ง€์ •๋œ ํ”„๋กœ์ ํŠธ์˜ ์ž๋ฃŒ ๋ฆฌ์†Œ์Šค์— ์• ์…‹ (๋ฐ ์„ ํƒ์ ์œผ๋กœ ์ฃผ์„)์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

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

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "parent": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID,
  "assets_gcs_uri": GCS_URI
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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/assets:import"

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/assets:import" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/operations/OPERATION_ID",
}

์ž๋ฃŒ์˜ ์• ์…‹ ๋ถ„์„

์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰์„ ์ค€๋น„ํ•˜๋ ค๋ฉด ์ด๋ฏธ์ง€์—์„œ ์ž„๋ฒ ๋”ฉ ์‹ ํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด AnalyzeCorpus๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

REST ๋ฐ ๋ช…๋ น์ค„

์ด ์ƒ˜ํ”Œ์—์„œ๋Š” ์ž๋ฃŒ ๋ฆฌ์†Œ์Šค์—์„œ AnalyzeCorpus๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

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

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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:analyze"

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:analyze" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/operations/OPERATION_ID",
}

์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ

REST ๋ฐ ๋ช…๋ น์ค„

์ด ์ƒ˜ํ”Œ์—์„œ๋Š” ์ž๋ฃŒ ๋ฆฌ์†Œ์Šค์— ์ƒ‰์ธ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • REGIONALIZED_ENDPOINT: ์—”๋“œํฌ์ธํŠธ์— LOCATION_ID์™€ ์ผ์น˜ํ•˜๋Š” ์ ‘๋‘์‚ฌ(์˜ˆ: europe-west4-)๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์—ญํ™”๋œ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
  • PROJECT_NUMBER: ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. Google Cloud
  • LOCATION_ID: Vertex AI Vision์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. us-central1, europe-west4 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • CORPUS_ID: ํƒ€๊ฒŸ ์ž๋ฃŒ์˜ ID์ž…๋‹ˆ๋‹ค.
  • INDEX_ID: (์„ ํƒ์‚ฌํ•ญ) ์ƒ‰์ธ ID์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด ์š”์ฒญ์—์„œ ๊ฐ’์€ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์š”์ฒญ URL์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
    • https://REGIONALIZED_ENDPOINT/v1/[...]/corpora/CORPUS_ID/indexes?index_id=INDEX_ID

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

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

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "display_name": "DISPLAY_NAME",
  "description": "INDEX_DESCRIPTION",
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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/indexes"

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/indexes" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.CreateIndexMetadata"
  }
}

์ƒ‰์ธ ์—”๋“œํฌ์ธํŠธ ๋งŒ๋“ค๊ธฐ

REST ๋ฐ ๋ช…๋ น์ค„

์ด ์ƒ˜ํ”Œ์—์„œ๋Š” ์ƒ‰์ธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • REGIONALIZED_ENDPOINT: ์—”๋“œํฌ์ธํŠธ์— LOCATION_ID์™€ ์ผ์น˜ํ•˜๋Š” ์ ‘๋‘์‚ฌ(์˜ˆ: europe-west4-)๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์—ญํ™”๋œ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
  • PROJECT_NUMBER: ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. Google Cloud
  • LOCATION_ID: Vertex AI Vision์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. us-central1, europe-west4 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • INDEX_ENDPOINT_ID: (์„ ํƒ์‚ฌํ•ญ) ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ƒ‰์ธ ์—”๋“œํฌ์ธํŠธ ID ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด ์š”์ฒญ์—์„œ ๊ฐ’์€ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์š”์ฒญ URL์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
    • https://REGIONALIZED_ENDPOINT/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints?index_endpoint_id=INDEX_ENDPOINT_ID

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "display_name": "DISPLAY_NAME",
  "description": "DESCRIPTION",
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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/indexEndpoints"

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/indexEndpoints" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.CreateIndexEndpointMetadata"
  }
}

์ƒ‰์ธ ์—”๋“œํฌ์ธํŠธ์— ์ƒ‰์ธ ๋ฐฐํฌ

REST ๋ฐ ๋ช…๋ น์ค„

์ด ์ƒ˜ํ”Œ์—์„œ๋Š” ์ƒ‰์ธ์„ ์ƒ‰์ธ ์—”๋“œํฌ์ธํŠธ ๋ฆฌ์†Œ์Šค์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • REGIONALIZED_ENDPOINT: ์—”๋“œํฌ์ธํŠธ์— LOCATION_ID์™€ ์ผ์น˜ํ•˜๋Š” ์ ‘๋‘์‚ฌ(์˜ˆ: europe-west4-)๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์—ญํ™”๋œ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
  • PROJECT_NUMBER: ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. Google Cloud
  • LOCATION_ID: Vertex AI Vision์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. us-central1, europe-west4 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • INDEX_ENDPOINT_ID: ํƒ€๊ฒŸ ์ƒ‰์ธ ์—”๋“œํฌ์ธํŠธ์˜ ID์ž…๋‹ˆ๋‹ค.
  • CORPUS_ID: ํƒ€๊ฒŸ ์ž๋ฃŒ์˜ ID์ž…๋‹ˆ๋‹ค.
  • INDEX_ID: ํƒ€๊ฒŸ ์ƒ‰์ธ์˜ ID์ž…๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "deployedIndex": {
    "index": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes/INDEX_ID"
  }
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex"

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/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.DeployIndexMetadata",
    "deployedIndex": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes/INDEX_ID"
  }
}