๋ฏธ๋””์–ด ์ถ”์ฒœ ์‹œ์ž‘ํ•˜๊ธฐ

์ตœ์ฒจ๋‹จ ๋ฏธ๋””์–ด ์ถ”์ฒœ ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋””์–ด ์ถ”์ฒœ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์ ํ™” ๋ชฉํ‘œ์— ๋”ฐ๋ผ ๋งž์ถค์„ค์ •๋œ Google ํ’ˆ์งˆ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์ž ์žฌ๊ณ ๊ฐ์ด ๋ณด๊ฑฐ๋‚˜ ์ฝ์„๋งŒํ•œ ์ฝ˜ํ…์ธ  ๋“ฑ ๋ณด๋‹ค ๋งž์ถค์„ค์ •๋œ ์ฝ˜ํ…์ธ ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋””์–ด์šฉ Vertex AI Search์— ๊ด€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด๋Š” ๋ฏธ๋””์–ด ๊ฒ€์ƒ‰ ๋ฐ ์ถ”์ฒœ ์†Œ๊ฐœ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ์‹œ์ž‘ํ•˜๊ธฐ ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” Movielens ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋””์–ด ์ฝ˜ํ…์ธ  ์นดํƒˆ๋กœ๊ทธ ๋ฐ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ๋ฅผ Vertex AI Search์— ์—…๋กœ๋“œํ•˜๊ณ  ๋งž์ถค์„ค์ •๋œ ์˜ํ™” ์ถ”์ฒœ ๋ชจ๋ธ๋ฅผ ํ•™์Šต์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. Movielens ๋ฐ์ดํ„ฐ ์„ธํŠธ์—๋Š” ์˜ํ™” ์นดํƒˆ๋กœ๊ทธ(๋ฌธ์„œ)์™€ ์‚ฌ์šฉ์ž์˜ ์˜ํ™” ํ‰์ (์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ํด๋ฆญ๋ฅ (CTR)์— ์ตœ์ ํ™”๋œ ๋‚ด๊ฐ€ ์ข‹์•„ํ•  ๋งŒํ•œ ๊ธฐํƒ€ ํ•ญ๋ชฉ ์œ ํ˜•์˜ ์ถ”์ฒœ ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ต๋‹ˆ๋‹ค. ํ•™์Šต ํ›„ ๋ชจ๋ธ์—์„œ ์‚ฌ์šฉ์ž ID์™€ ์‹œ๋“œ ์˜ํ™”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ํ™”๋ฅผ ์ถ”์ฒœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ์˜ ์ตœ์†Œ ๋ฐ์ดํ„ฐ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๊ธ์ •์ ์ธ ์˜ํ™” ํ‰์ (4์  ์ด์ƒ)์ด ํ•ญ๋ชฉ ์กฐํšŒ ์ด๋ฒคํŠธ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์˜ˆ์ƒ ์‹œ๊ฐ„:

๋ฏธ๋””์–ด ๊ฒ€์ƒ‰ ์‹œ์ž‘ํ•˜๊ธฐ ํŠœํ† ๋ฆฌ์–ผ์„ ์™„๋ฃŒํ–ˆ๊ณ  ์—ฌ์ „ํžˆ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด(๊ถŒ์žฅ ์ด๋ฆ„ quickstart-media-data-store)๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฏธ๋””์–ด ์ถ”์ฒœ์„ ์œ„ํ•œ ์•ฑ ๋งŒ๋“ค๊ธฐ์—์„œ ํŠœํ† ๋ฆฌ์–ผ์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชฉํ‘œ

  • BigQuery์—์„œ Vertex AI Search๋กœ ๋ฏธ๋””์–ด ๋ฌธ์„œ์™€ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.
  • ์ถ”์ฒœ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ณ  ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


Google Cloud ์ฝ˜์†”์—์„œ ์ด ํƒœ์Šคํฌ์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ณ„ ์•ˆ๋‚ด๋ฅผ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‘˜๋Ÿฌ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋‘˜๋Ÿฌ๋ณด๊ธฐ


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

  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. Verify that billing is enabled for your Google Cloud project.

  4. Enable the AI Applications, Cloud Storage, BigQuery 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. Verify that billing is enabled for your Google Cloud project.

  7. Enable the AI Applications, Cloud Storage, BigQuery APIs.

    Enable the APIs

  8. ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ค€๋น„

    Cloud Shell์„ ์‚ฌ์šฉํ•˜์—ฌ Movielens ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๋ฏธ๋””์–ด์šฉ Vertex AI Search ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    Cloud Shell ์—ด๊ธฐ

    1. Google Cloud ์ฝ˜์†”์„ ์—ฝ๋‹ˆ๋‹ค.
    2. Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    3. ๋Œ€์‹œ๋ณด๋“œ ํŽ˜์ด์ง€์˜ ํ”„๋กœ์ ํŠธ ์ •๋ณด ์นด๋“œ์—์„œ ํ”„๋กœ์ ํŠธ ID๋ฅผ ๊ธฐ๋กํ•ด ๋‘ก๋‹ˆ๋‹ค. ๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ID๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    4. ์ฝ˜์†”์˜ ์ƒ๋‹จ์—์„œ Cloud Shell ํ™œ์„ฑํ™” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.Google Cloud ์ฝ˜์†” ํ•˜๋‹จ์˜ ์ƒˆ ํ”„๋ ˆ์ž„์—์„œ Cloud Shell ์„ธ์…˜์ด ์—ด๋ฆฌ๊ณ  ๋ช…๋ น์ค„ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

      Cloud Shell

    ๋ฐ์ดํ„ฐ ์„ธํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ

    ๊ณต๊ฐœ Cloud Storage ๋ฒ„ํ‚ท์—์„œ Movielens ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๋” ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ํ”„๋กœ์ ํŠธ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ๋ช…๋ น์ค„์˜ ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

      gcloud config set project PROJECT_ID
      
    2. BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

      bq mk movielens
      
    3. movies.csv๋ฅผ ์ƒˆ movies BigQuery ํ…Œ์ด๋ธ”์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

      bq load --skip_leading_rows=1 movielens.movies \
        gs://cloud-samples-data/gen-app-builder/media-recommendations/movies.csv \
        movieId:integer,title,genres
      
    4. ratings.csv๋ฅผ ์ƒˆ ratings BigQuery ํ…Œ์ด๋ธ”์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

      bq load --skip_leading_rows=1 movielens.ratings \
        gs://cloud-samples-data/gen-app-builder/media-recommendations/ratings.csv \
        userId:integer,movieId:integer,rating:float,time:timestamp
      

    BigQuery ๋ทฐ ๋งŒ๋“ค๊ธฐ

    ์ด ๋‹จ๊ณ„์—์„œ๋Š” ๋ฏธ๋””์–ด ์ถ”์ฒœ์˜ ์˜ˆ์ƒ ํ˜•์‹์„ ๋”ฐ๋ฅด๋„๋ก Movielens ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋””์–ด ์ถ”์ฒœ์—๋Š” ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ์ง€๋‚œ 90์ผ ๋™์•ˆ์˜ ๊ธ์ •์ ์ธ ํ‰์ (< 4)์—์„œ ๊ฐ€์งœ view-item ์ด๋ฒคํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    1. ์˜ํ™” ํ…Œ์ด๋ธ”์„ Google์—์„œ ์ •์˜ํ•œ Document ์Šคํ‚ค๋งˆ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ทฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

      bq mk --project_id=PROJECT_ID \
       --use_legacy_sql=false \
       --view '
        WITH t AS (
          SELECT
            CAST(movieId AS string) AS id,
            SUBSTR(title, 0, 128) AS title,
            SPLIT(genres, "|") AS categories
            FROM `PROJECT_ID.movielens.movies`)
          SELECT
            id, "default_schema" as schemaId, null as parentDocumentId,
            TO_JSON_STRING(STRUCT(title as title, categories as categories,
            CONCAT("http://mytestdomain.movie/content/", id) as uri,
            "2023-01-01T00:00:00Z" as available_time,
            "2033-01-01T00:00:00Z" as expire_time,
            "movie" as media_type)) as jsonData
          FROM t;' \
      movielens.movies_view
      

      ์ด์ œ ์ƒˆ ๋ทฐ์—๋Š” AI Applications API์— ํ•„์š”ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

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

      BigQuery๋กœ ์ด๋™

    3. ํƒ์ƒ‰๊ธฐ ์ฐฝ์—์„œ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ํŽผ์น˜๊ณ  movielens ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ํŽผ์นœ ๋‹ค์Œ movies_view๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ด ๋ทฐ์˜ ์ฟผ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

      ์ œํ’ˆ ๋ทฐ

    4. ํ…Œ์ด๋ธ” ํƒ์ƒ‰๊ธฐ ํƒญ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    5. ์ƒ์„ฑ๋œ ์ฟผ๋ฆฌ ์ฐฝ์—์„œ ์ฟผ๋ฆฌ์— ๋ณต์‚ฌ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

    6. ์‹คํ–‰์„ ํด๋ฆญํ•˜์—ฌ ์ƒ์„ฑํ•œ ๋ทฐ์—์„œ ์˜ํ™” ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    7. ๋‹ค์Œ Cloud Shell ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์˜ํ™” ํ‰์ ์—์„œ ๊ฐ€์ƒ์˜ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

      bq mk --project_id=PROJECT_ID \
       --use_legacy_sql=false \
       --view '
       WITH t AS (
        SELECT
          MIN(UNIX_SECONDS(time)) AS old_start,
          MAX(UNIX_SECONDS(time)) AS old_end,
          UNIX_SECONDS(TIMESTAMP_SUB(
          CURRENT_TIMESTAMP(), INTERVAL 90 DAY)) AS new_start,
          UNIX_SECONDS(CURRENT_TIMESTAMP()) AS new_end
        FROM `PROJECT_ID.movielens.ratings`)
        SELECT
          CAST(userId AS STRING) AS userPseudoId,
          "view-item" AS eventType,
          FORMAT_TIMESTAMP("%Y-%m-%dT%X%Ez",
          TIMESTAMP_SECONDS(CAST(
            (t.new_start + (UNIX_SECONDS(time) - t.old_start) *
            (t.new_end - t.new_start) / (t.old_end - t.old_start))
          AS int64))) AS eventTime,
          [STRUCT(movieId AS id, null AS name)] AS documents,
        FROM `PROJECT_ID.movielens.ratings`, t
        WHERE rating >= 4;' \
        movielens.user_events
      

    AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™œ์„ฑํ™”

    1. Google Cloud ์ฝ˜์†”์—์„œ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

      AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

    2. ์„ ํƒ์‚ฌํ•ญ: Google์ด ๋ชจ๋ธ ์ž…๋ ฅ๊ณผ ๋Œ€๋‹ต์„ ์„ ํƒ์ ์œผ๋กœ ์ƒ˜ํ”Œ๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    3. ๊ณ„์† ๋ฐ API ํ™œ์„ฑํ™”๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๋ฏธ๋””์–ด ์ถ”์ฒœ์„ ์œ„ํ•œ ์•ฑ ๋งŒ๋“ค๊ธฐ

    ์ด ์„น์…˜์˜ ์ ˆ์ฐจ๋Š” ๋ฏธ๋””์–ด ์ถ”์ฒœ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

    1. Google Cloud ์ฝ˜์†”์—์„œ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

      AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

    2. ์•ฑ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    3. ์•ฑ ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€์˜ ๋ฏธ๋””์–ด ์ถ”์ฒœ์—์„œ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    4. ์•ฑ ์ด๋ฆ„ ํ•„๋“œ์— ์•ฑ ์ด๋ฆ„(์˜ˆ: quickstart-media-recommendations)์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์•ฑ ์ด๋ฆ„ ์•„๋ž˜์— ์•ฑ ID๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    5. ์ถ”์ฒœ ์œ ํ˜•์—์„œ ๋‚ด๊ฐ€ ์ข‹์•„ํ•  ๋งŒํ•œ ๊ธฐํƒ€ ํ•ญ๋ชฉ์ด ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    6. ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ์—์„œ ํด๋ฆญ๋ฅ (CTR)์ด ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    7. ๊ณ„์†์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    8. ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

      1. ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด ํŽ˜์ด์ง€์—์„œ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      2. ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด์˜ ํ‘œ์‹œ ์ด๋ฆ„(์˜ˆ: quickstart-media-data-store)์„ ์ž…๋ ฅํ•œ ํ›„ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    9. ๋ฐฉ๊ธˆ ๋งŒ๋“  ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์•ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

    ๊ทธ ๋‹ค์Œ ์ด์ „์— ํ˜•์‹์ด ์ง€์ •๋œ ์˜ํ™” ๋ฐ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ๋ฌธ์„œ ๊ฐ€์ ธ์˜ค๊ธฐ

    BigQuery ๋ทฐ ๋งŒ๋“ค๊ธฐ ์„น์…˜์—์„œ ๋งŒ๋“  movies_view ๋ฌธ์„œ๋ฅผ quickstart-media-data-store ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    1. ๋ฌธ์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ํŽ˜์ด์ง€์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์†Œ์Šค์—์„œ BigQuery๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    2. ๋งŒ๋“  movies BigQuery ๋ทฐ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      PROJECT_ID.movielens.movies_view
      
    3. ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. 15๋ถ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด 86,537๊ฐœ์˜ ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

      ํ™œ๋™ ํƒญ์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—… ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—… ์ƒํƒœ๊ฐ€ ์™„๋ฃŒ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

    ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ

    BigQuery ๋ทฐ ๋งŒ๋“ค๊ธฐ ์„น์…˜์—์„œ ๋งŒ๋“  user_events ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    1. ์ด๋ฒคํŠธ ํƒญ์—์„œ ์ด๋ฒคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    2. ๋ฌธ์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ํŽ˜์ด์ง€์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์†Œ์Šค์—์„œ BigQuery๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    3. ๋งŒ๋“  user_events BigQuery ๋ทฐ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      PROJECT_ID.movielens.user_events
      
    4. ์ƒˆ ๋ชจ๋ธ ํ•™์Šต์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 1๋ฐฑ๋งŒ ๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

      ํ™œ๋™ ํƒญ์—์„œ ์ž‘์—… ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ํ–‰์„ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•˜๋Š” ๋ฐ 1์‹œ๊ฐ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

    5. ์š”๊ตฌ์‚ฌํ•ญ์ด ์ถฉ์กฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ > ์š”๊ตฌ์‚ฌํ•ญ ํƒญ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„์—๋„ ์š”๊ตฌ์‚ฌํ•ญ ํƒญ์˜ ์ƒํƒœ๊ฐ€ ๋ฐ์ดํ„ฐ ์š”๊ตฌ์‚ฌํ•ญ ์ถฉ์กฑ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ถ”์ฒœ ๋ชจ๋ธ ํ•™์Šต

    1. ๊ตฌ์„ฑ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    2. ์„œ๋น™ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น™ ๊ตฌ์„ฑ์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

      ์ถ”์ฒœ ์ˆœ์œ„ ๋‚ด๋ฆฌ๊ธฐ ๋˜๋Š” ๊ฒฐ๊ณผ ๋‹ค๊ฐํ™” ์„ค์ •์€ ์ด ํŽ˜์ด์ง€์—์„œ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    3. ํ•™์Šต ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      ๋ฐ์ดํ„ฐ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ถฉ์กฑ๋˜๋ฉด ๋ชจ๋ธ์ด ์ž๋™์œผ๋กœ ํ•™์Šต์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ ํ•™์Šต ๋ฐ ์กฐ์ • ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    ์ถ”์ฒœ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

    ๋ชจ๋ธ์ด ์ฟผ๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    2. ๋ฌธ์„œ ID ํ•„๋“œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ID ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    3. ์‹œ๋“œ ๋ฌธ์„œ(์˜ํ™”) ID๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. '๋ฐ˜์ง€์˜ ์ œ์™•: ๋ฐ˜์ง€ ์›์ •๋Œ€(2001)'์˜ ๊ฒฝ์šฐ 4993์ž…๋‹ˆ๋‹ค.

      ID ์ž…๋ ฅ

    4. ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ์„œ๋น™ ๊ตฌ์„ฑ ์ด๋ฆ„์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    5. ์ถ”์ฒœ ๋ฐ›๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ฒœ ๋ฌธ์„œ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ์•ฑ ๋ฐฐํฌ

    ์•ฑ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ถ”์ฒœ ์œ„์ ฏ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ์ „์— ์•ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€, ๋ฌธ์„œ ํƒญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๋ฌธ์„œ ID๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    2. ํ†ตํ•ฉ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—๋Š” REST API์˜ servingConfigs.recommend ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ƒ˜ํ”Œ ๋ช…๋ น์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    3. ์•ž์„œ ๋ณต์‚ฌํ•œ ๋ฌธ์„œ ID๋ฅผ ๋ฌธ์„œ ID ํ•„๋“œ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.

    4. ์‚ฌ์šฉ์ž ์œ ์‚ฌ ID ํ•„๋“œ๋Š” ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.

    5. ์˜ˆ์‹œ ์š”์ฒญ์„ ๋ณต์‚ฌํ•˜๊ณ  Cloud Shell์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ์ถ”์ฒœ ์•ฑ์„ ์›น ์•ฑ์— ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ๋ฏธ๋””์–ด ์ถ”์ฒœ ๊ฐ€์ ธ์˜ค๊ธฐ์—์„œ ์ฝ”๋“œ ์ƒ˜ํ”Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์‚ญ์ œ

    ์ด ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•œ ๋ฆฌ์†Œ์Šค ๋น„์šฉ์ด Google Cloud ๊ณ„์ •์— ์ฒญ๊ตฌ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ๋ฏธ๋””์–ด ๊ฒ€์ƒ‰ ์‹œ์ž‘ํ•˜๊ธฐ ํŠœํ† ๋ฆฌ์–ผ์—์„œ ๋ฏธ๋””์–ด ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ๋งŒ๋“  ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ญ์ œ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ํŠœํ† ๋ฆฌ์–ผ์„ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”.

    1. ๋ถˆํ•„์š”ํ•œ Google Cloud ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉดGoogle Cloud console ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ญ์ œํ•˜์„ธ์š”.
    2. AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ•™์Šต์šฉ์œผ๋กœ ๋งŒ๋“  ์ƒˆ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋” ์ด์ƒ ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ญ์ œํ•˜์„ธ์š”.
    3. ๊ธฐ์กด Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๊ณ„์ •์— ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋˜์ง€ ์•Š๋„๋ก ๋งŒ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•ฑ ์‚ญ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    4. Vertex AI Search ์‚ฌ์šฉ ์ค‘์ง€์˜ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    5. BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ Cloud Shell์—์„œ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

      bq rm --recursive --dataset movielens
      

    ๋‹ค์Œ ๋‹จ๊ณ„