์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ… ์‹œ์ž‘ํ•˜๊ธฐ

์ด ํŽ˜์ด์ง€๋Š” Apigee ๋ฐ Apigee Hybrid์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

Apigee Edge ๋ฌธ์„œ ๋ณด๊ธฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Apigee ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๋งจํ‹ฑ ์œ ์‚ฌ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง€๋Šฅํ˜• ์‘๋‹ต ์žฌ์‚ฌ์šฉ์„ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Apigee API ํ”„๋ก์‹œ์—์„œ ์ด๋Ÿฌํ•œ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต ๋ฐฑ์—”๋“œ API ํ˜ธ์ถœ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๋ฉฐ ์šด์˜ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์ž‘์—…์„ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, AI Platform, and Cloud Storage APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine, AI Platform, and Cloud Storage APIs.

    Enable the APIs

  8. Google Cloud ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ Vertex AI ํ…์ŠคํŠธ ์ž„๋ฒ ๋”ฉ API ๋ฐ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์„ค์ •ํ•˜๊ณ  ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  9. Apigee ์ธ์Šคํ„ด์Šค์—์„œ ์ข…ํ•ฉ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์€ ์ข…ํ•ฉ ํ™˜๊ฒฝ์—๋งŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  10. ํ•„์š”ํ•œ ์—ญํ• 

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด Apigee ํ”„๋ก์‹œ ๋ฐฐํฌ์— ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ AI ํ”Œ๋žซํผ ์‚ฌ์šฉ์ž (roles/aiplatform.user) IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ๊ด€๋ฆฌ์ž์—๊ฒŒ ์š”์ฒญํ•˜์„ธ์š”. ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ

    Apigee ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ Google Cloud ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    export PROJECT_ID=PROJECT_ID
    export REGION=REGION
    export RUNTIME_HOSTNAME=RUNTIME_HOSTNAME

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • PROJECT_ID: Apigee ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜ ID
    • REGION: Apigee ์ธ์Šคํ„ด์Šค์˜ Google Cloud ๋ฆฌ์ „
    • RUNTIME_HOSTNAME: Apigee ๋Ÿฐํƒ€์ž„์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„

    ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ถœ๋ ฅ์„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.

    echo $PROJECT_ID $REGION $RUNTIME_HOSTNAME

    ํ”„๋กœ์ ํŠธ ์„ค์ •

    ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

        gcloud auth login
        gcloud config set project $PROJECT_ID

    ๊ฐœ์š”

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์€ Apigee ์‚ฌ์šฉ์ž๊ฐ€ LLM ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•˜๊ฑฐ๋‚˜ ์‹œ๋งจํ‹ฑ์ด ์œ ์‚ฌํ•œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ ๋ฐฑ์—”๋“œ API ํ˜ธ์ถœ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ์†Œ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    SemanticCacheLookup ๋ฐ SemanticCachePopulate ์ •์ฑ…์€ Apigee API ํ”„๋ก์‹œ์˜ ์š”์ฒญ ๋ฐ ์‘๋‹ต ํ๋ฆ„์— ๊ฐ๊ฐ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๊ฐ€ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋ฉด SemanticCacheLookup ์ •์ฑ…์ด ์š”์ฒญ์—์„œ ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ  Text Embeddings API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ˆซ์ž ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๋งจํ‹ฑ ์œ ์‚ฌ์„ฑ ๊ฒ€์ƒ‰์„ ์‹คํ–‰ํ•˜์—ฌ ์œ ์‚ฌํ•œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์œ ์‚ฌํ•œ ํ”„๋กฌํ”„ํŠธ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์บ์‹œ ์กฐํšŒ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์บ์‹œ๋œ ์‘๋‹ต์ด ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

    ์œ ์‚ฌ์„ฑ ๊ฒ€์ƒ‰์—์„œ ์œ ์‚ฌํ•œ ์ด์ „ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉด LLM ๋ชจ๋ธ์ด ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Apigee ์บ์‹œ๊ฐ€ ์‘๋‹ต์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ํ–ฅํ›„ ์š”์ฒญ์— ๋Œ€๋น„ํ•˜์—ฌ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ ํ•ญ๋ชฉ์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์„ ๋งŒ๋“ค๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹จ๊ณ„๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    1. ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ์˜ ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑํ•˜๊ธฐ
    2. ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ ๋ฐ ๋ฐฐํฌ
    3. ์‹œ๋งจํ‹ฑ ์บ์‹ฑ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” API ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ
    4. ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ… ๊ตฌ์„ฑํ•˜๊ธฐ
    5. ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ… ํ…Œ์ŠคํŠธ

    ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ์˜ ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑํ•˜๊ธฐ

    ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜์„ธ์š”.

    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --description="DESCRIPTION" \
        --display-name="SERVICE_ACCOUNT_DISPLAY_NAME"

      ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

      • SERVICE_ACCOUNT_NAME: ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„
      • DESCRIPTION: ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ์„ค๋ช…
      • SERVICE_ACCOUNT_DISPLAY_NAME: ์„œ๋น„์Šค ๊ณ„์ •์˜ ํ‘œ์‹œ ์ด๋ฆ„

      ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

      gcloud iam service-accounts create ai-client \
        --description="semantic cache client" \
        --display-name="ai-client"
    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ •์— AI Platform User ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/aiplatform.user"

      ์—ฌ๊ธฐ์„œ SERVICE_ACCOUNT_NAME์€ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ •์— IAM Service Account User ์—ญํ• ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountUser"

      ์—ฌ๊ธฐ์„œ SERVICE_ACCOUNT_NAME์€ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ ๋ฐ ๋ฐฐํฌ

    ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ์„ ๋งŒ๋“ค์–ด ๋ฐฐํฌํ•˜๋ ค๋ฉด

    1. ์ŠคํŠธ๋ฆฌ๋ฐ ์—…๋ฐ์ดํŠธ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      ACCESS_TOKEN=$(gcloud auth print-access-token) && curl --location --request POST \
        "https://$REGION-aiplatform.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/indexes" \
          --header "Authorization: Bearer $ACCESS_TOKEN" \
          --header 'Content-Type: application/json' \
          --data-raw \
          '{
            "displayName": "semantic-cache-index",
            "description": "semantic-cache-index",
            "metadata": {
              "config": {
                "dimensions": "768",
                "approximateNeighborsCount": 150,
                "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
                "featureNormType": "NONE",
                "algorithmConfig": {
                  "treeAhConfig": {
                    "leafNodeEmbeddingCount": "10000",
                    "fractionLeafNodesToSearch": 0.05
                    }
                  },
                "shardSize": "SHARD_SIZE_MEDIUM"
                },
              },
            "indexUpdateMethod": "STREAM_UPDATE"
          }'

      $REGION์€ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ์ด ๋ฐฐํฌ๋œ ๋ฆฌ์ „์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Apigee ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๋ฆฌ์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์ด์ „ ๋‹จ๊ณ„์—์„œ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

      ์ด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

      {
        "name": "projects/976063410430/locations/us-west1/indexes/5695338290484346880/operations/9084564741162008576",
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateIndexOperationMetadata",
          "genericMetadata": {
            "createTime": "2025-04-25T18:45:27.996136Z",
            "updateTime": "2025-04-25T18:45:27.996136Z"
          }
        }
      }

      ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ ์ƒ์„ฑ์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IndexEndpoint๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      gcloud ai index-endpoints create \
        --display-name=semantic-cache-index-endpoint \
        --public-endpoint-enabled \
        --region=$REGION \
        --project=$PROJECT_ID

      ์ด ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

      Waiting for operation [8278420407862689792]...done.
        Created Vertex AI index endpoint: projects/976063410430/locations/us-west1/indexEndpoints/7953875911424606208.

      IndexEndpoint๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ IndexEndpoint ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ‰์ธ์„ ์—”๋“œํฌ์ธํŠธ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
      INDEX_ENDPOINT_ID=$(gcloud ai index-endpoints list \
        --project=$PROJECT_ID \
        --region=$REGION \
        --format="json" | jq -c -r \
        '.[] | select(.displayName=="semantic-cache-index-endpoint") | .name | split("/") | .[5]' \
        ) && INDEX_ID=$(gcloud ai indexes list \
        --project=$PROJECT_ID \
        --region=$REGION \
        --format="json" | jq -c -r \
        '.[] | select(.displayName=="semantic-cache-index") | .name | split("/") | .[5]' \
        ) && gcloud ai index-endpoints deploy-index \
        $INDEX_ENDPOINT_ID \
        --deployed-index-id=semantic_cache \
        --display-name=semantic-cache \
        --index=$INDEX_ID \
        --region=$REGION \
        --project=$PROJECT_ID

    ์ƒ‰์ธ์„ ์—”๋“œํฌ์ธํŠธ์— ์ฒ˜์Œ ๋ฐฐํฌํ•˜๋Š” ๋ฐ 20~30๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud ai operations describe OPERATION_ID \
      --project=$PROJECT_ID \
      --region=$REGION

    ์ƒ‰์ธ์ด ๋ฐฐํฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    gcloud ai operations describe OPERATION_ID \
      --index-endpoint=$INDEX_ENDPOINT_ID --region=$REGION --project=$PROJECT_ID

    ์ด ๋ช…๋ น์–ด๋Š” $ done: true๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” API ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ

    ์ด ๋‹จ๊ณ„์—์„œ๋Š” (์•„์ง ๋งŒ๋“ค์ง€ ์•Š์€ ๊ฒฝ์šฐ) ์‹œ๋งจํ‹ฑ ์บ์‹œ๊ฐ€ ์žˆ๋Š” ํ”„๋ก์‹œ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    export PUBLIC_DOMAIN_NAME=$(gcloud ai index-endpoints describe $INDEX_ENDPOINT_ID --region=$REGION --project=$PROJECT_ID | grep "publicEndpointDomainName" | awk '{print $2}')

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ์— ์‚ฌ์šฉํ•  ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. Google Cloud ์ฝ˜์†”์˜ API ํ”„๋ก์‹œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

      API ํ”„๋ก์‹œ๋กœ ์ด๋™

    2. + ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ API ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ ์ฐฝ์„ ์—ฝ๋‹ˆ๋‹ค.
    3. ํ”„๋ก์‹œ ํ…œํ”Œ๋ฆฟ ์ƒ์ž์—์„œ ์‹œ๋งจํ‹ฑ ์บ์‹œ๊ฐ€ ์žˆ๋Š” ํ”„๋ก์‹œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    4. ๋‹ค์Œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
      • ํ”„๋ก์‹œ ์ด๋ฆ„: ํ”„๋ก์‹œ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
      • ์„ค๋ช…: (์„ ํƒ์‚ฌํ•ญ) ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
      • ๋Œ€์ƒ(๊ธฐ์กด API): ํ”„๋ก์‹œ๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ URL์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” LLM ๋ชจ๋ธ ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

        ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ๋Œ€์ƒ(๊ธฐ์กด API)์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/gemini-2.0-flash-001:generateContent
    5. ๋‹ค์Œ ์‹œ๋งจํ‹ฑ ์บ์‹œ URL์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
      • ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ URL: ์ด Vertex AI ์„œ๋น„์Šค๋Š” ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ์‹œ๋งจํ‹ฑ ๋ถ„์„์„ ์œ„ํ•œ ์ˆซ์ž ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

        ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์ด URL์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/text-embedding-004:predict
      • ์ตœ๊ทผ์ ‘ ์ด์›ƒ ์ฟผ๋ฆฌ URL: ์ด Vertex AI ์„œ๋น„์Šค๋Š” ์žฌ์ฒ˜๋ฆฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์ƒ‰์ธ์—์„œ ์ด์ „ ์š”์ฒญ์˜ ์œ ์‚ฌํ•œ ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

        ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์ด URL์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        PUBLIC_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/REGION/indexEndpoints/INDEX_ENDPOINT_ID:findNeighbors

        PUBLIC_DOMAIN_NAME ๋ฐ INDEX_ENDPOINT_ID ๊ฐ’์€ ์ด์ „ ๋‹จ๊ณ„์—์„œ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ’์„ ์–ป์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

          echo $PUBLIC_DOMAIN_NAME
          echo $INDEX_ENDPOINT_ID

      • ์ƒ‰์ธ ์‚ฝ์ž…/์—…๋ฐ์ดํŠธ URL: ์ด Vertex AI ์„œ๋น„์Šค๋Š” ์‹ ๊ทœ ๋˜๋Š” ์ˆ˜์ •๋œ ํ•ญ๋ชฉ์œผ๋กœ ์ƒ‰์ธ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

        ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์ด URL์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/indexes/INDEX_ID:upsertDatapoints
    6. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    7. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    API ํ”„๋ก์‹œ์˜ XML ๊ตฌ์„ฑ์€ ๊ฐœ๋ฐœ ํƒญ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์ด ํฌํ•จ๋œ SemanticCacheLookup ๋ฐ SemanticCachePopulate ์ •์ฑ…์ด ์ด๋ฏธ ํ”„๋ก์‹œ ์š”์ฒญ ๋ฐ ์‘๋‹ต ํ๋ฆ„์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ… ๊ตฌ์„ฑํ•˜๊ธฐ

    API ํ”„๋ก์‹œ์˜ ๊ฐœ๋ฐœ ํƒญ์— ์žˆ๋Š” ์„ธ๋ถ€์ •๋ณด ๋ทฐ์—์„œ ์ •์ฑ… ์ด๋ฆ„์„ ํด๋ฆญํ•˜๋ฉด ๊ฐ ์ •์ฑ…์˜ XML ๊ตฌ์„ฑ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์ฑ… XML์€ ๊ฐœ๋ฐœ ํƒญ์˜ ์ฝ”๋“œ ๋ทฐ์—์„œ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ •์ฑ… ์ˆ˜์ •:

    • SemanticCacheLookup ์ •์ฑ…:
      • ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด <UserPromptSource> ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜์„ธ์š”.
      • semantic_cache ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋„๋ก <DeployedIndexId> ์š”์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
      • ๋‘ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•˜๋„๋ก ์‹œ๋งจํ‹ฑ ์œ ์‚ฌ์„ฑ <Threshold> ๊ฐ’์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 0.9์ด์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฏผ๊ฐ๋„์— ๋”ฐ๋ผ ์ด ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ํด์ˆ˜๋ก ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์บ์‹œ ์ ์ค‘์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ๋” ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์ด ๊ฐ’์„ 0.95๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
      • ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    • SemanticCachePopulate ์ •์ฑ…:
      • <TTLInSeconds> ์š”์†Œ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์บ์‹œ๊ฐ€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„(์ดˆ)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 60์ดˆ์ž…๋‹ˆ๋‹ค. Apigee๋Š” LLM ๋ชจ๋ธ์—์„œ ์ˆ˜์‹ ํ•œ cache-control ํ—ค๋”๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
      • ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    API ํ”„๋ก์‹œ์— Google ์ธ์ฆ ์ถ”๊ฐ€

    ๋Œ€์ƒ์— ๋Œ€ํ•œ ํ”„๋ก์‹œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด API ํ”„๋ก์‹œ์˜ ๋Œ€์ƒ ์—”๋“œํฌ์ธํŠธ์— Google ์ธ์ฆ๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    Google ์•ก์„ธ์Šค ํ† ํฐ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ๊ฐœ๋ฐœ ํƒญ์˜ ๋Œ€์ƒ ์—”๋“œํฌ์ธํŠธ ํด๋”์—์„œ ๊ธฐ๋ณธ๊ฐ’์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ทฐ์— <TargetEndpoint> ์š”์†Œ์˜ XML ๊ตฌ์„ฑ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    2. XML์„ ์ˆ˜์ •ํ•˜์—ฌ <HTTPTargetConnection> ์•„๋ž˜์— ๋‹ค์Œ ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
      <Authentication>
        <GoogleAccessToken>
          <Scopes>
            <Scope>https://www.googleapis.com/auth/cloud-platform</Scope>
          </Scopes>
        </GoogleAccessToken>
      </Authentication>
    3. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    API ํ”„๋ก์‹œ ๋ฐฐํฌ

    API ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ API ํ”„๋ก์‹œ ๋ฐฐํฌ ์ฐฝ์„ ์—ฝ๋‹ˆ๋‹ค.
    2. ๋ฒ„์ „ ํ•„๋“œ๊ฐ€ 1๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ 1์„ ํด๋ฆญํ•˜์—ฌ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    3. ํ™˜๊ฒฝ ๋ชฉ๋ก์—์„œ ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•  ํ™˜๊ฒฝ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์€ ์ข…ํ•ฉ ํ™˜๊ฒฝ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    4. ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ์„œ๋น„์Šค ๊ณ„์ •์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    5. ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ… ํ…Œ์ŠคํŠธ

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ก์‹œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
      curl https://$RUNTIME_HOSTNAME/PROXY_NAME -H 'Content-Type: application/json' --data '{
        "contents": [
            {
                "role": "user",
                "parts": [
                    {
                        "text": "Why is the sky blue?"
                    }
                ]
            }
        ]
      }'

      ์—ฌ๊ธฐ์„œ PROXY_NAME์€ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋ฐฐํฌํ•œ API ํ”„๋ก์‹œ์˜ ๊ธฐ๋ณธ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    2. ํ”„๋กฌํ”„ํŠธ ๋ฌธ์ž์—ด์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜๋ฏธ์ƒ ์œ ์‚ฌํ•œ ํ”„๋กฌํ”„ํŠธ ๋ฌธ์ž์—ด๋กœ ๋Œ€์ฒดํ•˜์—ฌ API ํ˜ธ์ถœ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
      • ํ•˜๋Š˜์€ ์™œ ํŒŒ๋ž€๊ฐ€์š”?
      • ํ•˜๋Š˜์ด ํŒŒ๋ž€ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?
      • ํ•˜๋Š˜์€ ์™œ ํŒŒ๋ž€์ƒ‰์ธ๊ฐ€์š”?
      • ํ•˜๋Š˜์ด ํŒŒ๋ž€ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ด ์ค„ ์ˆ˜ ์žˆ์–ด?
      • ์™œ ํ•˜๋Š˜์€ ํŒŒ๋ž€์ƒ‰์ธ๊ฐ€์š”?
    3. ์œ ์‚ฌํ•œ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์บ์‹œ๋œ ํ›„ ๊ฐ ํ˜ธ์ถœ์˜ ์‘๋‹ต ์‹œ๊ฐ„์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

    ํ˜ธ์ถœ์ด ์บ์‹œ์—์„œ ์ œ๊ณต๋˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์‘๋‹ต ํ—ค๋”๋ฅผ ํ™•์ธํ•˜์„ธ์š”. Cached-Content: true ํ—ค๋”๊ฐ€ ์ฒจ๋ถ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๊ถŒ์žฅ์‚ฌํ•ญ

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋‹ค์Œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ API ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

    • Model Armor๋กœ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ์˜ ์บ์‹ฑ์„ ๋ฐฉ์ง€ํ•˜์„ธ์š”.

      ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ์บ์‹œ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง์— Model Armor๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Model Armor๋Š” ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด ์‘๋‹ต์— ์บ์‹œ ๋ถˆ๊ฐ€๋Šฅ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Model Armor ๊ฐœ์š”๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    • Vertex AI ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฌดํšจํ™” ๋ฐ TTL(์ˆ˜๋ช…)๋กœ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

      ์บ์‹œ๋œ ์‘๋‹ต์ด ์ตœ์‹  ์ƒํƒœ์ด๊ณ  ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์˜ ์ตœ์‹  ์ •๋ณด๋ฅผ ๋ฐ˜์˜ํ•˜๋„๋ก ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๋ฌดํšจํ™” ์ „๋žต์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ™œ์„ฑ ์ƒ‰์ธ ์—…๋ฐ์ดํŠธ ๋ฐ ์žฌ๋นŒ๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

      ๋ฐ์ดํ„ฐ์˜ ๋ณ€๋™์„ฑ๊ณผ ์—…๋ฐ์ดํŠธ ๋นˆ๋„์— ๋”ฐ๋ผ ์บ์‹œ๋œ ์‘๋‹ต์˜ TTL์„ ์กฐ์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. SemanticCachePopulate ์ •์ฑ…์—์„œ TTL์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ <TTLInSeconds>๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    • ์‚ฌ์ „ ์ •์˜๋œ ์บ์‹ฑ ์ „๋žต์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์žฅ ์ •ํ™•ํ•œ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

      ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์‚ฌ์ „ ์ •์˜๋œ ์บ์‹ฑ ์ „๋žต์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

      • ์ผ๋ฐ˜ AI ์‘๋‹ต: ์‚ฌ์šฉ์ž๋ณ„์ด ์•„๋‹Œ ์‘๋‹ต์—๋Š” ๊ธด TTL(์˜ˆ: 1์‹œ๊ฐ„)์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
      • ์‚ฌ์šฉ์ž๋ณ„ ์‘๋‹ต: ์‚ฌ์šฉ์ž๋ณ„ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์‘๋‹ต์—๋Š” ์บ์‹ฑ์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์งง์€ TTL(์˜ˆ: 5๋ถ„)์„ ์„ค์ •ํ•˜์ง€ ๋งˆ์„ธ์š”.
      • ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•œ ์‘๋‹ต: ์‹ค์‹œ๊ฐ„ ๋˜๋Š” ๋นˆ๋ฒˆํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ์‘๋‹ต์—๋Š” ์งง์€ TTL(์˜ˆ: 5๋ถ„)์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ์ œํ•œ์‚ฌํ•ญ

    ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

    • ์บ์‹œ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ํ…์ŠคํŠธ ํฌ๊ธฐ๋Š” 256KB์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Apigee ํ•œ๋„ ํŽ˜์ด์ง€์˜ ์บ์‹œ ๊ฐ’ ํฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
    • Apigee๋Š” LLM ๋ชจ๋ธ์—์„œ ์ˆ˜์‹ ํ•œ ๋ชจ๋“  cache-control ํ—ค๋”๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
    • ์บ์‹œ๊ฐ€ ์ œ๋Œ€๋กœ ๋ฌดํšจํ™”๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์‹œ๋งจํ‹ฑ ์œ ์‚ฌ์„ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์˜๋ฏธ๊ฐ€ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ž…๋ ฅ์„ ๊ตฌ๋ถ„ํ•  ๋งŒํผ ์ •ํ™•ํ•˜์ง€ ์•Š์œผ๋ฉด ๋Œ€๋‹ต์— ์˜ค๋ž˜๋˜์—ˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ๋ฐ˜ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์€ ์ผ๋ถ€ ์ง€์—ญ์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ฆฌ์ „ ๋ชฉ๋ก์€ Vertex AI ์œ„์น˜ ํŽ˜์ด์ง€์˜ ๊ธฐ๋Šฅ ๊ฐ€์šฉ์„ฑ ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. Apigee ์กฐ์ง์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ฆฌ์ „์— ์žˆ๋Š” ๊ฒฝ์šฐ Apigee ์กฐ์ง๊ณผ ๋‹ค๋ฅธ ๋ฆฌ์ „์—์„œ ์ƒ‰์ธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋ฒ„ ์ „์†ก ์ด๋ฒคํŠธ(SSE)์˜ ์—ฐ์† ์‘๋‹ต ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•ด EventFlow๋ฅผ ์‚ฌ์šฉํ•˜๋Š” API ํ”„๋ก์‹œ์—๋Š” ์‹œ๋งจํ‹ฑ ์บ์‹ฑ ์ •์ฑ…์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • <UserPromptSource> ๋‚ด์˜ JsonPath ํ•จ์ˆ˜๋Š” ignoreUnresolvedVariables ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ null ๋˜๋Š” ๋นˆ ๊ฐ’์€ ๋ฉ”์‹œ์ง€ ํ…œํ”Œ๋ฆฟ ์ ์šฉ ์ค‘์— ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.