๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๊ณ ๋ง์ถค ์ถ์ฒ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ค๋ฉด ์ฌ์ฉํ๋ ค๋ ์์ค์ ์น์ ์ผ๋ก ์ด๋ํฉ๋๋ค.
BigQuery
BigQuery ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง์ ๋๋ค.
์ผํ์ฑ ์์ง: BigQuery ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ์คํ ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๋ ํ ๋ฐ์ดํฐ ์คํ ์ด์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
์ฃผ๊ธฐ์ ์์ง: ํ๋ ์ด์์ BigQuery ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ฐ์ดํฐ ์คํ ์ด๊ฐ BigQuery ๋ฐ์ดํฐ ์ธํธ์ ์ต์ ๋ฐ์ดํฐ๋ก ์ ๋ฐ์ดํธ๋๋ ๋น๋๋ฅผ ๊ฒฐ์ ํ๋ ๋๊ธฐํ ๋น๋๋ฅผ ์ค์ ํฉ๋๋ค.
๋ค์ ํ์์๋ BigQuery ๋ฐ์ดํฐ๋ฅผ Vertex AI Search ๋ฐ์ดํฐ ์คํ ์ด๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋น๊ตํฉ๋๋ค.
์ผํ์ฑ ์์ง | ์ฃผ๊ธฐ์ ์์ง |
---|---|
์ ์ ๋ฒ์ (GA) | ๊ณต๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ |
๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์๋ก๊ณ ์นจํด์ผ ํฉ๋๋ค. | ๋ฐ์ดํฐ๊ฐ 1์ผ, 3์ผ ๋๋ 5์ผ๋ง๋ค ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์๋ก๊ณ ์นจํ ์ ์์ต๋๋ค. |
Vertex AI Search๊ฐ BigQuery์ ํ ํ ์ด๋ธ์์ ๋จ์ผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ญ๋๋ค. | Vertex AI Search๊ฐ BigQuery ๋ฐ์ดํฐ ์ธํธ์ ๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ์ง์ ๋ ๊ฐ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์คํ ์ด(ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ผ๊ณ ํจ)๋ฅผ ๋ง๋ญ๋๋ค. ๊ฐ ๋ฐ์ดํฐ ์ปค๋ฅํฐ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ ํ(์: ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ)์ด ๋์ผํด์ผ ํ๋ฉฐ ๋์ผํ BigQuery ๋ฐ์ดํฐ ์ธํธ์ ์์ด์ผ ํฉ๋๋ค. |
๋จผ์ ํ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ ๋ค์ ๋ค๋ฅธ ์์ค ๋๋ BigQuery ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ๋ก ์์งํ์ฌ ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ฐ์ดํฐ ์คํ ์ด์ ๊ฒฐํฉํ ์ ์์ต๋๋ค. | ์๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ ์ง์๋์ง ์์ผ๋ฏ๋ก ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด์ ๋ฐ์ดํฐ๋ฅผ ํ BigQuery ํ ์ด๋ธ์์๋ง ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. |
๋ฐ์ดํฐ ์์ค ์ก์ธ์ค ์ ์ด๊ฐ ์ง์๋ฉ๋๋ค. | ๋ฐ์ดํฐ ์์ค ์ก์ธ์ค ์ ์ด๋ ์ง์๋์ง ์์ต๋๋ค. ๊ฐ์ ธ์จ ๋ฐ์ดํฐ์ ์ก์ธ์ค ์ ์ด๊ฐ ํฌํจ๋ ์ ์์ง๋ง ์ด๋ฌํ ์ ์ด๊ฐ ์ ์ฉ๋์ง ์์ต๋๋ค. |
Google Cloud ์ฝ์ ๋๋ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. | ๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ํด๋น ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ฝ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. |
CMEK ์ค์ | CMEK ์ค์ |
BigQuery์์ ํ ๋ฒ ๊ฐ์ ธ์ค๊ธฐ
BigQuery ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๊ณ Google Cloud ์ฝ์ ๋๋ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ ์ ์์งํ ๋ฐ์ดํฐ ์ค๋น๋ฅผ ๊ฒํ ํ์ธ์.
์ฝ์
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ BigQuery์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
Google Cloud ์ฝ์์์ AI ์ ํ๋ฆฌ์ผ์ด์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ค ํ์ด์ง์์ BigQuery๋ฅผ ์ ํํฉ๋๋ค.
์ด๋ค ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์๊ฒ ์ด์? ์น์ ์์ ๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ ์ ํ์ ์ ํํฉ๋๋ค.
๋๊ธฐํ ๋น๋ ์น์ ์์ ์ผํ์ฑ์ ์ ํํฉ๋๋ค.
BigQuery ๊ฒฝ๋ก ํ๋์์ ์ฐพ์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ์์ง์ ์ํด ์ค๋นํ ํ ์ด๋ธ์ ์ ํํ ๋ค์ ์ ํ์ ํด๋ฆญํฉ๋๋ค. ๋๋ BigQuery ๊ฒฝ๋ก ํ๋์ ํ ์ด๋ธ ์์น๋ฅผ ์ง์ ์ ๋ ฅํด๋ ๋ฉ๋๋ค.
๊ณ์์ ํด๋ฆญํฉ๋๋ค.
๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ผํ์ฑ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ:
ํ๋๋ฅผ ํค ์์ฑ์ ๋งคํํฉ๋๋ค.
์คํค๋ง์์ ์ค์ํ ํ๋๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ ์ ํ๋ ์ถ๊ฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์๋ ๊ฐ์ง ๋ฐ ์์ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ณ์์ ํด๋ฆญํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ง ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด ๋ฐ์ดํฐ ์คํ ์ด ํ์ด์ง๋ก ์ด๋ํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด ์ด๋ฆ์ ํด๋ฆญํ ํ ๋ฐ์ดํฐ ํ์ด์ง์์ ์ธ๋ถ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค. ํ๋ ํญ์ ์ํ ์ด์ด ์งํ ์ค์์ ๊ฐ์ ธ์ค๊ธฐ ์๋ฃ๋จ์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด ์์ง์ด ์๋ฃ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์์ง์ ๋ช ๋ถ๋ถํฐ ๋ช ์๊ฐ๊น์ง ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
REST
๋ช ๋ น์ค์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๊ณ BigQuery์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ญ๋๋ค.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DATA_STORE_DISPLAY_NAME", "industryVertical": "GENERIC", "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"] }'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.DATA_STORE_ID
: ๋ง๋ค๋ ค๋ Vertex AI Search ๋ฐ์ดํฐ ์คํ ์ด์ ID์ ๋๋ค. ์ด ID๋ ์๋ฌธ์, ์ซ์, ๋ฐ์ค, ํ์ดํ๋ง ํฌํจํ ์ ์์ต๋๋ค.DATA_STORE_DISPLAY_NAME
: ๋ง๋ค๋ ค๋ Vertex AI Search ๋ฐ์ดํฐ ์คํ ์ด์ ํ์ ์ด๋ฆ์ ๋๋ค.
BigQuery์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
์คํค๋ง๋ฅผ ์ ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ํด๋น ์คํค๋ง๋ฅผ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \ -d '{ "bigquerySource": { "projectId": "PROJECT_ID", "datasetId":"DATASET_ID", "tableId": "TABLE_ID", "dataSchema": "DATA_SCHEMA", "aclEnabled": "BOOLEAN" }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", "errorConfig": { "gcsPrefix": "ERROR_DIRECTORY" } }'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.DATA_STORE_ID
: Vertex AI Search ๋ฐ์ดํฐ ์คํ ์ด์ ID์ ๋๋ค.DATASET_ID
: BigQuery ๋ฐ์ดํฐ ์ธํธ์ ID์ ๋๋ค.TABLE_ID
: BigQuery ํ ์ด๋ธ์ ID์ ๋๋ค.- BigQuery ํ
์ด๋ธ์ด PROJECT_ID์ ์์ผ๋ฉด ์๋น์ค ๊ณ์
service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com
์ BigQuery ํ ์ด๋ธ์ ๋ํ "BigQuery ๋ฐ์ดํฐ ๋ทฐ์ด" ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด '123' ์์ค ํ๋ก์ ํธ์์ '456' ๋์ ํ๋ก์ ํธ๋ก BigQuery ํ ์ด๋ธ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ '123' ํ๋ก์ ํธ์ BigQuery ํ ์ด๋ธ์ ๋ํservice-456@gcp-sa-discoveryengine.iam.gserviceaccount.com
๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- BigQuery ํ
์ด๋ธ์ด PROJECT_ID์ ์์ผ๋ฉด ์๋น์ค ๊ณ์
DATA_SCHEMA
: ์ ํ์ฌํญ์ ๋๋ค. ๊ฐ์document
๋ฐcustom
์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์document
์ ๋๋ค.document
: ์ฌ์ฉํ๋ BigQuery ํ ์ด๋ธ์ด ์์ง์ ์ํ ๋ฐ์ดํฐ ์ค๋น์ ์ ๊ณต๋ ๊ธฐ๋ณธ BigQuery ์คํค๋ง๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค. ๊ฐ ๋ฌธ์์ ID๋ฅผ ์ ์ํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ jsonData ๋ฌธ์์ด์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.custom
: ๋ชจ๋ BigQuery ํ ์ด๋ธ ์คํค๋ง๊ฐ ํ์ฉ๋๋ฉฐ Vertex AI Search๊ฐ ๊ฐ์ ธ์จ ๊ฐ ๋ฌธ์์ ID๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
ERROR_DIRECTORY
: ์ ํ์ฌํญ์ ๋๋ค. ๊ฐ์ ธ์ค๊ธฐ์ ๋ํ ์ค๋ฅ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ Cloud Storage ๋๋ ํฐ๋ฆฌ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉดgs://<your-gcs-bucket>/directory/import_errors
์ ๋๋ค. Vertex AI Search๊ฐ ์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๋ง๋ค๋๋ก ํ๋ ค๋ฉด ์ด ํ๋๋ฅผ ๋น์ ๋๋ ๊ฒ์ด ์ข์ต๋๋ค.RECONCILIATION_MODE
: ์ ํ์ฌํญ์ ๋๋ค. ๊ฐ์FULL
๋ฐINCREMENTAL
์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์INCREMENTAL
์ ๋๋ค.INCREMENTAL
์ ์ง์ ํ๋ฉด BigQuery์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ ์คํ ์ด์ ์ ์ง์ ์ผ๋ก ์๋ก๊ณ ์นจ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ณ ๊ธฐ์กด ๋ฌธ์๋ฅผ ๋์ผํ ID์ ์ ๋ฐ์ดํธ๋ ๋ฌธ์๋ก ๋์ฒดํ๋ ์ฝ์ /์ ๋ฐ์ดํธ(upsert) ์์ ์ด ์คํ๋ฉ๋๋ค.FULL
์ ์ง์ ํ๋ฉด ๋ฐ์ดํฐ ์คํ ์ด์์ ๋ฌธ์์ ์ ์ฒด ์ฌ๋ฐฐ์น๊ฐ ์ด๋ฃจ์ด์ง๋๋ค. ์ฆ, ์ ๋ฌธ์์ ์ ๋ฐ์ดํธ๋ ๋ฌธ์๋ ๋ฐ์ดํฐ ์คํ ์ด์ ์ถ๊ฐ๋๊ณ BigQuery์ ์๋ ๋ฌธ์๋ ๋ฐ์ดํฐ ์คํ ์ด์์ ์ญ์ ๋ฉ๋๋ค.FULL
๋ชจ๋๋ ๋ ์ด์ ํ์ํ์ง ์์ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์ญ์ ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.AUTO_GENERATE_IDS
: ์ ํ์ฌํญ์ ๋๋ค. ๋ฌธ์ ID๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ง ์ง์ ํฉ๋๋ค.true
๋ก ์ค์ ํ๋ฉด ํ์ด๋ก๋์ ํด์์ ๋ฐ๋ผ ๋ฌธ์ ID๊ฐ ์์ฑ๋ฉ๋๋ค. ์์ฑ๋ ๋ฌธ์ ID๋ ์ฌ๋ฌ ๊ฐ์ ธ์ค๊ธฐ์์ ์ผ๊ด๋์ง ์์ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ ธ์ค๊ธฐ์์ ID๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ID์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํดreconciliationMode
๋ฅผFULL
๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.bigquerySource.dataSchema
๊ฐcustom
์ผ๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋งautoGenerateIds
๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉดINVALID_ARGUMENT
์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค.autoGenerateIds
๋ฅผ ์ง์ ํ์ง ์๊ฑฐ๋false
๋ก ์ค์ ํ ๊ฒฝ์ฐidField
๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํฉ๋๋ค.ID_FIELD
: ์ ํ์ฌํญ์ ๋๋ค. ๋ฌธ์ ID์ธ ํ๋๋ฅผ ์ง์ ํฉ๋๋ค. BigQuery ์์ค ํ์ผ์ ๊ฒฝ์ฐidField
๋ ๋ฌธ์ ID๊ฐ ํฌํจ๋ BigQuery ํ ์ด๋ธ์ ์ด ์ด๋ฆ์ ๋ํ๋ ๋๋ค.(1)
bigquerySource.dataSchema
๊ฐcustom
์ผ๋ก ์ค์ ๋๊ณ (2)auto_generate_ids
๊ฐfalse
๋ก ์ค์ ๋์๊ฑฐ๋ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ์๋งidField
๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉดINVALID_ARGUMENT
์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค.BigQuery ์ด ์ด๋ฆ์ ๊ฐ์ ๋ฌธ์์ด ์ ํ์ด๊ณ 1~63์(์๋ฌธ ๊ธฐ์ค)์ฌ์ผ ํ๋ฉฐ RFC-1034๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํฉ๋๋ค.
C#
์์ธํ ๋ด์ฉ์ AI Applications C# API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Go
์์ธํ ๋ด์ฉ์ AI Applications Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Java
์์ธํ ๋ด์ฉ์ AI Applications Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Node.js
์์ธํ ๋ด์ฉ์ AI Applications Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Python
์์ธํ ๋ด์ฉ์ AI Applications Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Ruby
์์ธํ ๋ด์ฉ์ AI Applications Ruby API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
์ฃผ๊ธฐ์ ๋๊ธฐํ๋ฅผ ์ฌ์ฉํ์ฌ BigQuery์ ์ฐ๊ฒฐ
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ ์ ์์งํ ๋ฐ์ดํฐ ์ค๋น๋ฅผ ๊ฒํ ํ์ธ์.
๋ค์ ์ ์ฐจ์์๋ BigQuery ๋ฐ์ดํฐ ์ธํธ๋ฅผ Vertex AI Search ๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ์ฐ๊ฒฐํ๋ ๋ฐ์ดํฐ ์ปค๋ฅํฐ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ๊ณผ ๋ง๋ค๋ ค๋ ๊ฐ ๋ฐ์ดํฐ ์คํ ์ด์ ๋ฐ์ดํฐ ์ธํธ์ ํ ์ด๋ธ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ํ์ ์์์ธ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ผ๊ณ ํฉ๋๋ค.
๋ฐ์ดํฐ ์ธํธ์ ๋ฐ์ดํฐ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด์ ๋๊ธฐํ๋ฉ๋๋ค. ๋งค์ผ, 3์ผ๋ง๋ค ๋๋ 5์ผ๋ง๋ค ๋๊ธฐํ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ BigQuery ๋ฐ์ดํฐ ์ธํธ์ ๋ฐ์ดํฐ๋ฅผ Vertex AI Search์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋๊ธฐํํ๋ ์ปค๋ฅํฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
Google Cloud ์ฝ์์์ AI ์ ํ๋ฆฌ์ผ์ด์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํ์ ๋ฉ๋ด์์ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ฅ์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ค ํ์ด์ง์์ BigQuery๋ฅผ ์ ํํฉ๋๋ค.
๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ์ ์ข ๋ฅ๋ฅผ ์ ํํฉ๋๋ค.
์ฃผ๊ธฐ์ ์ ํด๋ฆญํฉ๋๋ค.
๋๊ธฐํ ๋น๋๋ฅผ ์ ํํฉ๋๋ค. Vertex AI Search ์ปค๋ฅํฐ๊ฐ BigQuery ๋ฐ์ดํฐ ์ธํธ์ ๋๊ธฐํ๋๋ ๋น๋์ ๋๋ค. ๋น๋๋ ๋์ค์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
BigQuery ๋ฐ์ดํฐ ์ธํธ ๊ฒฝ๋ก ํ๋์์ ์ฐพ์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ์์ง์ ์ํด ์ค๋นํ ํ ์ด๋ธ์ด ํฌํจ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ํํฉ๋๋ค. ๋๋ BigQuery ๊ฒฝ๋ก ํ๋์ ํ ์ด๋ธ ์์น๋ฅผ ์ง์ ์ ๋ ฅํด๋ ๋ฉ๋๋ค. ๊ฒฝ๋ก์ ํ์์
projectname.datasetname
์ ๋๋ค.๋๊ธฐํํ ํ ์ด๋ธ ํ๋์์ ์ฐพ์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ ๋ค์ ๋ฐ์ดํฐ ์คํ ์ด์ ์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํ ์ด๋ธ์ ์ ํํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด์ ์ฌ์ฉํ ์ถ๊ฐ ํ ์ด๋ธ์ด ๋ฐ์ดํฐ ์ธํธ์ ์๋ ๊ฒฝ์ฐ ํ ์ด๋ธ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ํด๋น ํ ์ด๋ธ๋ ์ง์ ํฉ๋๋ค.
๊ณ์์ ํด๋ฆญํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด์ ๋ฆฌ์ ์ ์ ํํ๊ณ ๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ์ด๋ฆ์ ์ ๋ ฅํ ํ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ BigQuery ๋ฐ์ดํฐ ์ธํธ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋๊ธฐํํ๋ ๋ฐ์ดํฐ ์ปค๋ฅํฐ๋ฅผ ๋ง๋ค์์ต๋๋ค. ํ๋ ์ด์์ ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ ๋ง๋ค์์ต๋๋ค. ๋ฐ์ดํฐ ์คํ ์ด์ ์ด๋ฆ์ BigQuery ํ ์ด๋ธ๊ณผ ๋์ผํฉ๋๋ค.
์์ง ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด ๋ฐ์ดํฐ ์คํ ์ด ํ์ด์ง๋ก ์ด๋ํ์ฌ ๋ฐ์ดํฐ ์ปค๋ฅํฐ ์ด๋ฆ์ ํด๋ฆญํ ํ ๋ฐ์ดํฐ ํ์ด์ง > ๋ฐ์ดํฐ ์์ง ํ๋ ํญ์์ ์ธ๋ถ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค. ํ๋ ํญ์ ์ํ ์ด์ด ์งํ ์ค์์ ์ฑ๊ณต์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด ์ฒซ ๋ฒ์งธ ์์ง์ด ์๋ฃ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์์ง์ ๋ช ๋ถ๋ถํฐ ๋ช ์๊ฐ๊น์ง ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์์ค๋ฅผ ์ค์ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ์ ๊ฐ์ ธ์จ ํ์๋ ๋ฐ์ดํฐ ์คํ ์ด๊ฐ ์ค์ ์ค์ ์ ํํ ๋น๋๋ก ํด๋น ์์ค์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํฉ๋๋ค. ๋ฐ์ดํฐ ์ปค๋ฅํฐ๊ฐ ์์ฑ๋ ํ ์ฝ 1์๊ฐ ํ์ ์ฒซ ๋ฒ์งธ ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค. ์ดํ ๋ค์ ๋๊ธฐํ๊ฐ ์ฝ 24์๊ฐ, 72์๊ฐ ๋๋ 120์๊ฐ ํ์ ๋ฐ์ํฉ๋๋ค.
๋ค์ ๋จ๊ณ
๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ฑ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ์ฑ์ ๋ง๋ค๊ณ ๋ง์ถค ์ถ์ฒ ์ฑ ๋ง๋ค๊ธฐ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ ํํฉ๋๋ค.
์ฑ๊ณผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ค์ ํ ํ ์ถ์ฒ์ ๋ฏธ๋ฆฌ ๋ณด๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ค๋ฉด ์ถ์ฒ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Cloud Storage
๋ค์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก Cloud Storage ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ผํ์ฑ ์์ง: Cloud Storage ํด๋ ๋๋ ํ์ผ์์ ๋ฐ์ดํฐ ์คํ ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๋ ํ ๋ฐ์ดํฐ ์คํ ์ด์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
์ฃผ๊ธฐ์ ์์ง: Cloud Storage ํด๋ ๋๋ ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ฐ์ดํฐ ์คํ ์ด๊ฐ ํด๋น Cloud Storage ์์น์ ์ต์ ๋ฐ์ดํฐ๋ก ์ ๋ฐ์ดํธ๋๋ ๋น๋๋ฅผ ๊ฒฐ์ ํ๋ ๋๊ธฐํ ๋น๋๋ฅผ ์ค์ ํฉ๋๋ค.
๋ค์ ํ์์๋ Cloud Storage ๋ฐ์ดํฐ๋ฅผ Vertex AI Search ๋ฐ์ดํฐ ์คํ ์ด๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋น๊ตํฉ๋๋ค.
์ผํ์ฑ ์์ง | ์ฃผ๊ธฐ์ ์์ง |
---|---|
์ ์ ๋ฒ์ (GA) | ๊ณต๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ |
๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์๋ก๊ณ ์นจํด์ผ ํฉ๋๋ค. | ๋ฐ์ดํฐ๊ฐ 1์ผ, 3์ผ ๋๋ 5์ผ๋ง๋ค ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์๋ก๊ณ ์นจํ ์ ์์ต๋๋ค. |
Vertex AI Search๊ฐ Cloud Storage์ ํ ํด๋ ๋๋ ํ์ผ์์ ๋จ์ผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ญ๋๋ค. | Vertex AI Search๊ฐ ๋ฐ์ดํฐ ์ปค๋ฅํฐ๋ฅผ ๋ง๋ค๊ณ ์ง์ ๋ ํ์ผ ๋๋ ํด๋์ ๋ฐ์ดํฐ ์คํ ์ด(ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ผ๊ณ ํจ)๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ๊ฐ Cloud Storage ๋ฐ์ดํฐ ์ปค๋ฅํฐ๋ ๋จ์ผ ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. |
๋จผ์ ํ Cloud Storage ์์น์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ ๋ค์ ๋ค๋ฅธ ์์น์์ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ์ฌ๋ฌ ํ์ผ, ํด๋, ๋ฒํท์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ฐ์ดํฐ ์คํ ์ด์ ๊ฒฐํฉํ ์ ์์ต๋๋ค. | ์๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ ์ง์๋์ง ์์ผ๋ฏ๋ก ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด์ ๋ฐ์ดํฐ๋ ํ Cloud Storage ํ์ผ ๋๋ ํด๋์์๋ง ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. |
๋ฐ์ดํฐ ์์ค ์ก์ธ์ค ์ ์ด๊ฐ ์ง์๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฐ์ดํฐ ์์ค ์ก์ธ์ค ์ ์ด๋ฅผ ์ฐธ๊ณ ํ์ธ์. | ๋ฐ์ดํฐ ์์ค ์ก์ธ์ค ์ ์ด๋ ์ง์๋์ง ์์ต๋๋ค. ๊ฐ์ ธ์จ ๋ฐ์ดํฐ์ ์ก์ธ์ค ์ ์ด๊ฐ ํฌํจ๋ ์ ์์ง๋ง ์ด๋ฌํ ์ ์ด๊ฐ ์ ์ฉ๋์ง ์์ต๋๋ค. |
Google Cloud ์ฝ์ ๋๋ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. | ๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ํด๋น ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ฝ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. |
CMEK ์ค์ | CMEK ์ค์ |
Cloud Storage์์ ํ ๋ฒ ๊ฐ์ ธ์ค๊ธฐ
Cloud Storage์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๊ณ Google Cloud ์ฝ์ ๋๋ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ ์ ์์งํ ๋ฐ์ดํฐ ์ค๋น๋ฅผ ๊ฒํ ํ์ธ์.
์ฝ์
์ฝ์์ ์ฌ์ฉํ์ฌ Cloud Storage ๋ฒํท์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
Google Cloud ์ฝ์์์ AI ์ ํ๋ฆฌ์ผ์ด์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ค ํ์ด์ง์์ Cloud Storage๋ฅผ ์ ํํฉ๋๋ค.
๊ฐ์ ธ์ฌ ํด๋ ๋๋ ํ์ผ ์ ํ ์น์ ์์ ํด๋ ๋๋ ํ์ผ์ ์ ํํฉ๋๋ค.
์ฐพ์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ์์ง์ ์ํด ์ค๋นํ ๋ฐ์ดํฐ๋ฅผ ์ ํํ ๋ค์ ์ ํ์ ํด๋ฆญํฉ๋๋ค. ๋๋
gs://
ํ๋์ ์์น๋ฅผ ์ง์ ์ ๋ ฅํด๋ ๋ฉ๋๋ค.๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ์ ์ ํ์ ์ ํํฉ๋๋ค.
๊ณ์์ ํด๋ฆญํฉ๋๋ค.
๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ผํ์ฑ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ:
ํ๋๋ฅผ ํค ์์ฑ์ ๋งคํํฉ๋๋ค.
์คํค๋ง์์ ์ค์ํ ํ๋๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ ์ ํ๋ ์ถ๊ฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์๋ ๊ฐ์ง ๋ฐ ์์ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ณ์์ ํด๋ฆญํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์ ํ์ฌํญ: ๊ตฌ์กฐํ๋์ง ์์ ๋ฌธ์๋ฅผ ์ ํํ ๊ฒฝ์ฐ ๋ฌธ์์ ํ์ฑ ๋ฐ ์ฒญํฌ ์ฒ๋ฆฌ ์ต์ ์ ์ ํํ ์ ์์ต๋๋ค. ํ์๋ฅผ ๋น๊ตํ๋ ค๋ฉด ๋ฌธ์ ํ์ฑ์ ์ฐธ๊ณ ํ์ธ์. ์ฒญํฌ ์ฒ๋ฆฌ์ ๊ดํ ์์ธํ ๋ด์ฉ์ RAG์ฉ ๋ฌธ์ ์ฒญํฌ ์ฒ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
OCR ํ์ ๋ฐ ๋ ์ด์์ ํ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. Document AI ๊ธฐ๋ฅ ๊ฐ๊ฒฉ ์ฑ ์ ์ ์ฐธ๊ณ ํ์ธ์.
ํ์๋ฅผ ์ ํํ๋ ค๋ฉด ๋ฌธ์ ์ฒ๋ฆฌ ์ต์ ์ ํผ์น๊ณ ์ฌ์ฉํ ํ์ ์ต์ ์ ์ง์ ํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ง ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด ๋ฐ์ดํฐ ์คํ ์ด ํ์ด์ง๋ก ์ด๋ํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด ์ด๋ฆ์ ํด๋ฆญํ ํ ๋ฐ์ดํฐ ํ์ด์ง์์ ์ธ๋ถ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค. ํ๋ ํญ์ ์ํ ์ด์ด ์งํ ์ค์์ ๊ฐ์ ธ์ค๊ธฐ ์๋ฃ๋จ์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด ์์ง์ด ์๋ฃ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์์ง์ ๋ช ๋ถ ๋๋ ๋ช ์๊ฐ๊น์ง ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
REST
๋ช ๋ น์ค์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๊ณ Cloud Storage์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ญ๋๋ค.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DATA_STORE_DISPLAY_NAME", "industryVertical": "GENERIC", "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"] }'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.DATA_STORE_ID
: ๋ง๋ค๋ ค๋ Vertex AI Search ๋ฐ์ดํฐ ์คํ ์ด์ ID์ ๋๋ค. ์ด ID๋ ์๋ฌธ์, ์ซ์, ๋ฐ์ค, ํ์ดํ๋ง ํฌํจํ ์ ์์ต๋๋ค.DATA_STORE_DISPLAY_NAME
: ๋ง๋ค๋ ค๋ Vertex AI Search ๋ฐ์ดํฐ ์คํ ์ด์ ํ์ ์ด๋ฆ์ ๋๋ค.
Cloud Storage์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \ -d '{ "gcsSource": { "inputUris": ["INPUT_FILE_PATTERN_1", "INPUT_FILE_PATTERN_2"], "dataSchema": "DATA_SCHEMA", }, "reconciliationMode": "RECONCILIATION_MODE", "autoGenerateIds": "AUTO_GENERATE_IDS", "idField": "ID_FIELD", "errorConfig": { "gcsPrefix": "ERROR_DIRECTORY" } }'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.DATA_STORE_ID
: Vertex AI Search ๋ฐ์ดํฐ ์คํ ์ด์ ID์ ๋๋ค.INPUT_FILE_PATTERN
: ๋ฌธ์๊ฐ ํฌํจ๋ Cloud Storage์ ํ์ผ ํจํด์ ๋๋ค.์ ํ ๋ฐ์ดํฐ ๋๋ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์๋ ๋น์ ํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์ ๋ ฅ ํ์ผ ํจํด์ ์๋
gs://<your-gcs-bucket>/directory/object.json
์ด๊ณ ํ๋ ์ด์์ ํ์ผ์ ์ผ์น์ํค๋ ํจํด์ ์๋gs://<your-gcs-bucket>/directory/*.json
์ ๋๋ค.๋น์ ํ ๋ฌธ์์ ๊ฒฝ์ฐ ์์๋
gs://<your-gcs-bucket>/directory/*.pdf
์ ๋๋ค. ํจํด๊ณผ ์ผ์นํ๋ ๊ฐ ํ์ผ์ ๋ฌธ์๊ฐ ๋ฉ๋๋ค.<your-gcs-bucket>
์ด PROJECT_ID์ ์์ง ์์ผ๋ฉด ์๋น์ค ๊ณ์ service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com
์ Cloud Storage ๋ฒํท์ ๋ํ '์คํ ๋ฆฌ์ง ๊ฐ์ฒด ๋ทฐ์ด' ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด '123' ์์ค ํ๋ก์ ํธ์์ '456' ๋์ ํ๋ก์ ํธ๋ก Cloud Storage ๋ฒํท์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ '123' ํ๋ก์ ํธ์ Cloud Storage ๋ฒํท์ ๋ํservice-456@gcp-sa-discoveryengine.iam.gserviceaccount.com
๊ถํ์ ๋ถ์ฌํฉ๋๋ค.DATA_SCHEMA
: ์ ํ์ฌํญ์ ๋๋ค. ๊ฐ์document
,custom
,csv
,content
์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์document
์ ๋๋ค.document
: ๋น์ ํ ๋ฌธ์์ ๋ฉํ๋ฐ์ดํฐ์ ํจ๊ป ๊ตฌ์กฐํ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ก๋ํฉ๋๋ค. ํ์ผ์ ๊ฐ ์ค์ ๋ค์ ํ์ ์ค ํ๋๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค. ๊ฐ ๋ฌธ์์ ID๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.{ "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
{ "id": "<your-id>", "structData": <JSON object>, "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
custom
: ์ ํ ๋ฌธ์์ JSON์ ์ ๋ก๋ํฉ๋๋ค. ๋ฐ์ดํฐ๋ ์คํค๋ง์ ๋ฐ๋ผ ๊ตฌ์ฑ๋ฉ๋๋ค. ์คํค๋ง๋ฅผ ์ง์ ํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค. ๋ฌธ์์ JSON ๋ฌธ์์ด์ ๊ฐ ์ค์ ์ผ๊ด๋ ํ์์ผ๋ก ์ง์ ๋ฐฐ์นํ ์ ์์ผ๋ฉฐ Vertex AI Search๊ฐ ๊ฐ์ ธ์จ ๊ฐ ๋ฌธ์์ ID๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.content
: ๊ตฌ์กฐํ๋์ง ์์ ๋ฌธ์(PDF, HTML, DOC, TXT, PPTX)๋ฅผ ์ ๋ก๋ํฉ๋๋ค. ๊ฐ ๋ฌธ์์ ID๋ 16์ง์ ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉ๋ SHA256(GCS_URI)์ ์ฒ์ 128๋นํธ๋ก ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ผ์นํ๋ ํ์ผ์ด ํ์ผ ํ๋์ธ 10๋ง ๊ฐ๋ฅผ ์ด๊ณผํ์ง ์๋ ํ ์ ๋ ฅ ํ์ผ ํจํด์ ์ฌ๋ฌ ๊ฐ ์ง์ ํ ์ ์์ต๋๋ค.csv
: ๊ฐ ํค๋๊ฐ ๋ฌธ์ ํ๋์ ๋งคํ๋๋๋ก ํค๋ ํ์ CSV ํ์ผ์ ํฌํจํฉ๋๋ค.inputUris
ํ๋๋ฅผ ์ฌ์ฉํ์ฌ CSV ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
ERROR_DIRECTORY
: ์ ํ์ฌํญ์ ๋๋ค. ๊ฐ์ ธ์ค๊ธฐ์ ๋ํ ์ค๋ฅ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ Cloud Storage ๋๋ ํฐ๋ฆฌ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉดgs://<your-gcs-bucket>/directory/import_errors
์ ๋๋ค. Vertex AI Search๊ฐ ์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๋ง๋ค๋๋ก ํ๋ ค๋ฉด ์ด ํ๋๋ฅผ ๋น์ ๋๋ ๊ฒ์ด ์ข์ต๋๋ค.RECONCILIATION_MODE
: ์ ํ์ฌํญ์ ๋๋ค. ๊ฐ์FULL
๋ฐINCREMENTAL
์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์INCREMENTAL
์ ๋๋ค.INCREMENTAL
์ ์ง์ ํ๋ฉด Cloud Storage์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ ์คํ ์ด์ ์ ์ง์ ์ผ๋ก ์๋ก๊ณ ์นจ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ณ ๊ธฐ์กด ๋ฌธ์๋ฅผ ๋์ผํ ID์ ์ ๋ฐ์ดํธ๋ ๋ฌธ์๋ก ๋์ฒดํ๋ ์ฝ์ /์ ๋ฐ์ดํธ(upsert) ์์ ์ด ์คํ๋ฉ๋๋ค.FULL
์ ์ง์ ํ๋ฉด ๋ฐ์ดํฐ ์คํ ์ด์์ ๋ฌธ์์ ์ ์ฒด ์ฌ๋ฐฐ์น๊ฐ ์ด๋ฃจ์ด์ง๋๋ค. ์ฆ, ์ ๋ฌธ์์ ์ ๋ฐ์ดํธ๋ ๋ฌธ์๋ ๋ฐ์ดํฐ ์คํ ์ด์ ์ถ๊ฐ๋๊ณ Cloud Storage์ ์๋ ๋ฌธ์๋ ๋ฐ์ดํฐ ์คํ ์ด์์ ์ญ์ ๋ฉ๋๋ค.FULL
๋ชจ๋๋ ๋ ์ด์ ํ์ํ์ง ์์ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์ญ์ ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.AUTO_GENERATE_IDS
: ์ ํ์ฌํญ์ ๋๋ค. ๋ฌธ์ ID๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ง ์ง์ ํฉ๋๋ค.true
๋ก ์ค์ ํ๋ฉด ํ์ด๋ก๋์ ํด์์ ๋ฐ๋ผ ๋ฌธ์ ID๊ฐ ์์ฑ๋ฉ๋๋ค. ์์ฑ๋ ๋ฌธ์ ID๋ ์ฌ๋ฌ ๊ฐ์ ธ์ค๊ธฐ์์ ์ผ๊ด๋์ง ์์ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ ธ์ค๊ธฐ์์ ID๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ID์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํดreconciliationMode
๋ฅผFULL
๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.gcsSource.dataSchema
๊ฐcustom
๋๋csv
๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋งautoGenerateIds
๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉดINVALID_ARGUMENT
์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค.autoGenerateIds
๋ฅผ ์ง์ ํ์ง ์๊ฑฐ๋false
๋ก ์ค์ ํ ๊ฒฝ์ฐidField
๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํฉ๋๋ค.ID_FIELD
: ์ ํ์ฌํญ์ ๋๋ค. ๋ฌธ์ ID์ธ ํ๋๋ฅผ ์ง์ ํฉ๋๋ค. Cloud Storage ์์ค ๋ฌธ์์ ๊ฒฝ์ฐidField
๋ ๋ฌธ์ ID์ธ JSON ํ๋์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด{"my_id":"some_uuid"}
๊ฐ ๋ฌธ์ ์ค ํ๋์์ ๋ฌธ์ ID ํ๋์ด๋ฉด"idField":"my_id"
๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ฆ์ด"my_id"
์ธ ๋ชจ๋ JSON ํ๋๊ฐ ๋ฌธ์ ID๋ก ์๋ณ๋ฉ๋๋ค.์ด ํ๋๋ (1)
gcsSource.dataSchema
๊ฐcustom
๋๋csv
๋ก ์ค์ ๋์๊ณ (2)auto_generate_ids
๊ฐfalse
๋ก ์ค์ ๋์๊ฑฐ๋ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ์๋ง ์ง์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉดINVALID_ARGUMENT
์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค.Cloud Storage JSON ํ๋์ ๊ฐ์ ๋ฌธ์์ด ์ ํ์ด๊ณ 1~63์(์๋ฌธ ๊ธฐ์ค)์ฌ์ผ ํ๋ฉฐ RFC-1034๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํฉ๋๋ค.
id_field
๋ก ์ง์ ๋ JSON ํ๋ ์ด๋ฆ์ ๋ฌธ์์ด ์ ํ์ด๊ณ 1~63์(์๋ฌธ ๊ธฐ์ค)์ฌ์ผ ํ๊ณ RFC-1034๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํฉ๋๋ค.
C#
์์ธํ ๋ด์ฉ์ AI Applications C# API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Go
์์ธํ ๋ด์ฉ์ AI Applications Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Java
์์ธํ ๋ด์ฉ์ AI Applications Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Node.js
์์ธํ ๋ด์ฉ์ AI Applications Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Python
์์ธํ ๋ด์ฉ์ AI Applications Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
Ruby
์์ธํ ๋ด์ฉ์ AI Applications Ruby API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AI Applications์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
์ฃผ๊ธฐ์ ๋๊ธฐํ๋ก Cloud Storage์ ์ฐ๊ฒฐ
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ ์ ์์งํ ๋ฐ์ดํฐ ์ค๋น๋ฅผ ๊ฒํ ํ์ธ์.
๋ค์ ์ ์ฐจ์์๋ Cloud Storage ์์น๋ฅผ Vertex AI Search ๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ์ฐ๊ฒฐํ๋ ๋ฐ์ดํฐ ์ปค๋ฅํฐ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ๊ณผ ๋ง๋ค๋ ค๋ ๋ฐ์ดํฐ ์คํ ์ด์ ํด๋น ์์น์ ํด๋ ๋๋ ํ์ผ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ํ์ ์์์ธ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ผ๊ณ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด์ ๋๊ธฐํ๋ฉ๋๋ค. ๋งค์ผ, 3์ผ๋ง๋ค ๋๋ 5์ผ๋ง๋ค ๋๊ธฐํ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ AI ์ ํ๋ฆฌ์ผ์ด์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ฅ์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ค ํ์ด์ง์์ Cloud Storage๋ฅผ ์ ํํฉ๋๋ค.
๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ์ ์ ํ์ ์ ํํฉ๋๋ค.
์ฃผ๊ธฐ์ ์ ํด๋ฆญํฉ๋๋ค.
๋๊ธฐํ ๋น๋๋ฅผ ์ ํํฉ๋๋ค. Vertex AI Search ์ปค๋ฅํฐ๊ฐ Cloud Storage ์์น์ ๋๊ธฐํํ ๋น๋์ ๋๋ค. ๋น๋๋ ๋์ค์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๊ฐ์ ธ์ฌ ํด๋ ๋๋ ํ์ผ ์ ํ ์น์ ์์ ํด๋ ๋๋ ํ์ผ์ ์ ํํฉ๋๋ค.
์ฐพ์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ์์ง์ ์ํด ์ค๋นํ ๋ฐ์ดํฐ๋ฅผ ์ ํํ ๋ค์ ์ ํ์ ํด๋ฆญํฉ๋๋ค. ๋๋
gs://
ํ๋์ ์์น๋ฅผ ์ง์ ์ ๋ ฅํด๋ ๋ฉ๋๋ค.๊ณ์์ ํด๋ฆญํฉ๋๋ค.
๋ฐ์ดํฐ ์ปค๋ฅํฐ์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
๋ฐ์ดํฐ ์ปค๋ฅํฐ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์ ํ์ฌํญ: ๊ตฌ์กฐํ๋์ง ์์ ๋ฌธ์๋ฅผ ์ ํํ ๊ฒฝ์ฐ ๋ฌธ์์ ํ์ฑ ๋ฐ ์ฒญํฌ ์ฒ๋ฆฌ ์ต์ ์ ์ ํํ ์ ์์ต๋๋ค. ํ์๋ฅผ ๋น๊ตํ๋ ค๋ฉด ๋ฌธ์ ํ์ฑ์ ์ฐธ๊ณ ํ์ธ์. ์ฒญํฌ ์ฒ๋ฆฌ์ ๊ดํ ์์ธํ ๋ด์ฉ์ RAG์ฉ ๋ฌธ์ ์ฒญํฌ ์ฒ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
OCR ํ์ ๋ฐ ๋ ์ด์์ ํ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. Document AI ๊ธฐ๋ฅ ๊ฐ๊ฒฉ ์ฑ ์ ์ ์ฐธ๊ณ ํ์ธ์.
ํ์๋ฅผ ์ ํํ๋ ค๋ฉด ๋ฌธ์ ์ฒ๋ฆฌ ์ต์ ์ ํผ์น๊ณ ์ฌ์ฉํ ํ์ ์ต์ ์ ์ง์ ํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ Cloud Storage ์์น์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋๊ธฐํํ๋ ๋ฐ์ดํฐ ์ปค๋ฅํฐ๋ฅผ ๋ง๋ค์์ต๋๋ค.
gcs_store
๋ผ๋ ํญ๋ชฉ ๋ฐ์ดํฐ ์คํ ์ด๋ ๋ง๋ค์์ต๋๋ค.์์ง ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด ๋ฐ์ดํฐ ์คํ ์ด ํ์ด์ง๋ก ์ด๋ํ์ฌ ๋ฐ์ดํฐ ์ปค๋ฅํฐ ์ด๋ฆ์ ํด๋ฆญํ ํ ๋ฐ์ดํฐ ํ์ด์ง์์ ์ธ๋ถ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค.
๋ฐ์ดํฐ ์์ง ํ๋ ํญ. ๋ฐ์ดํฐ ์์ง ํ๋ ํญ์ ์ํ ์ด์ด ์งํ ์ค์์ ์ฑ๊ณต์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด ์ฒซ ๋ฒ์งธ ์์ง์ด ์๋ฃ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์์ง์ ๋ช ๋ถ๋ถํฐ ๋ช ์๊ฐ๊น์ง ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์์ค๋ฅผ ์ค์ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ์ ๊ฐ์ ธ์จ ํ์๋ ์ค์ ์ค์ ์ ํํ ๋น๋๋ก ํด๋น ์์ค์ ๋ฐ์ดํฐ๊ฐ ๋๊ธฐํ๋ฉ๋๋ค. ๋ฐ์ดํฐ ์ปค๋ฅํฐ๊ฐ ์์ฑ๋ ํ ์ฝ 1์๊ฐ ํ์ ์ฒซ ๋ฒ์งธ ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค. ์ดํ ๋ค์ ๋๊ธฐํ๊ฐ ์ฝ 24์๊ฐ, 72์๊ฐ ๋๋ 120์๊ฐ ํ์ ๋ฐ์ํฉ๋๋ค.
๋ค์ ๋จ๊ณ
๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ฑ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ์ฑ์ ๋ง๋ค๊ณ ๋ง์ถค ์ถ์ฒ ์ฑ ๋ง๋ค๊ธฐ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ ํํฉ๋๋ค.
์ฑ๊ณผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ค์ ํ ํ ์ถ์ฒ์ ๋ฏธ๋ฆฌ ๋ณด๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ค๋ฉด ์ถ์ฒ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
API๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์กฐํ๋ JSON ๋ฐ์ดํฐ ์ ๋ก๋
API๋ฅผ ์ฌ์ฉํ์ฌ JSON ๋ฌธ์ ๋๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์ ๋ก๋ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ ์ ์์งํ ๋ฐ์ดํฐ ์ค๋น๋ฅผ ์ํํฉ๋๋ค.
REST
๋ช ๋ น์ค์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๊ณ ๊ตฌ์กฐํ๋ JSON ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ญ๋๋ค.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DATA_STORE_DISPLAY_NAME", "industryVertical": "GENERIC", "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"] }'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.DATA_STORE_ID
: ๋ง๋ค๋ ค๋ ์ถ์ฒ ๋ฐ์ดํฐ ์คํ ์ด์ ID์ ๋๋ค. ์ด ID๋ ์๋ฌธ์, ์ซ์, ๋ฐ์ค, ํ์ดํ๋ง ํฌํจํ ์ ์์ต๋๋ค.DATA_STORE_DISPLAY_NAME
: ๋ง๋ค๋ ค๋ ์ถ์ฒ ๋ฐ์ดํฐ ์คํ ์ด์ ํ์ ์ด๋ฆ์ ๋๋ค.
์ ํ์ฌํญ: ์์ฒด ์คํค๋ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ์คํค๋ง๋ฅผ ์ ๊ณตํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์คํค๋ง ์ ๊ณต ๋๋ ์๋ ๊ฐ์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/schemas/default_schema" \ -d '{ "structSchema": JSON_SCHEMA_OBJECT }'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค.DATA_STORE_ID
: ์ถ์ฒ ๋ฐ์ดํฐ ์คํ ์ด์ ID์ ๋๋ค.JSON_SCHEMA_OBJECT
: JSON ๊ฐ์ฒด๋ก ๋ JSON ์คํค๋ง์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", "keyPropertyMapping": "title" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" } } }
์ ์๋ ์คํค๋ง๋ฅผ ์ค์ํ๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ๋ก๋ํ ๋ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
JSON ๋ฌธ์๋ฅผ ์ ๋ก๋ํฉ๋๋ค.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \ -d '{ "jsonData": "JSON_DOCUMENT_STRING" }'
JSON_DOCUMENT_STRING
์ ๋จ์ผ ๋ฌธ์์ด ํ์์ผ๋ก ์ง์ ๋ JSON ๋ฌธ์๋ก ๋ฐ๊ฟ๋๋ค. ์ด์ ๋จ๊ณ์์ ์ ๊ณตํ JSON ์คํค๋ง๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.```none { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"} ```
JSON ๊ฐ์ฒด๋ฅผ ์ ๋ก๋ํฉ๋๋ค.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \ -d '{ "structData": JSON_DOCUMENT_OBJECT }'
JSON_DOCUMENT_OBJECT
๋ฅผ JSON ๊ฐ์ฒด ํ์์ผ๋ก ์ง์ ๋ JSON ๋ฌธ์๋ก ๋ฐ๊ฟ๋๋ค. ์ด์ ๋จ๊ณ์์ ์ ๊ณตํ JSON ์คํค๋ง๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.```json { "title": "test title", "categories": [ "cat_1", "cat_2" ], "uri": "test uri" } ```
JSON ๋ฌธ์๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID" \ -d '{ "jsonData": "JSON_DOCUMENT_STRING" }'
JSON ๊ฐ์ฒด๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID" \ -d '{ "structData": JSON_DOCUMENT_OBJECT }'
๋ค์ ๋จ๊ณ
๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ฑ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ์ฑ์ ๋ง๋ค๊ณ ๋ง์ถค ์ถ์ฒ ์ฑ ๋ง๋ค๊ธฐ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ ํํฉ๋๋ค.
์ฑ ๋ฐ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ค์ ํ ํ ์ถ์ฒ์ด ํ์๋๋ ๋ฐฉ์์ ๋ฏธ๋ฆฌ๋ณด๋ ค๋ฉด ์ถ์ฒ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
Terraform์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด ๋ง๋ค๊ธฐ
Terraform์ ์ฌ์ฉํ์ฌ ๋น ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๋น ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ ํ Google Cloud ์ฝ์ ๋๋ API ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์คํ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์์งํ ์ ์์ต๋๋ค.
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
Terraform์ ์ฌ์ฉํ์ฌ ๋น ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ๋ง๋ค๋ ค๋ฉด
google_discovery_engine_data_store
๋ฅผ ์ฐธ์กฐํ์ธ์.