정형 데이터 및 비정형 데이터 새로고침

이 페이지에서는 정형비정형 데이터를 새로고침하는 방법을 설명합니다.

웹사이트 앱을 새로고침하려면 웹페이지 새로고침을 참조하세요.

정형 데이터 새로고침

데이터 스토어의 스키마와 동일하거나 하위 호환되는 스키마를 사용하는 한 정형 데이터 스토어의 데이터를 새로고침할 수 있습니다. 예를 들어 기존 스키마에 새 필드만 추가하면 하위 호환됩니다.

Google Cloud 콘솔에서 또는 API를 사용하여 정형 데이터를 새로고침할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 데이터 스토어의 브랜치에서 정형 데이터를 새로고침하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Agent Builder 페이지로 이동합니다.

    Agent Builder를 사용하여 이 모든 것을 자체 데이터에 그라운딩하세요.

  2. 탐색 메뉴에서 데이터 스토어를 클릭합니다.

  3. 이름 열에서 수정할 데이터 스토어를 클릭합니다.

  4. 문서 탭에서 데이터 가져오기를 클릭합니다.

  5. Cloud Storage에서 새로고침하려면 다음 단계를 따르세요.

    1. 데이터 소스 선택 창에서 Cloud Storage를 선택합니다.
    2. Cloud Storage에서 데이터 가져오기 창에서 찾아보기를 클릭하고 새로고침된 데이터가 포함된 버킷을 선택한 다음 선택을 클릭합니다. 또는 gs:// 필드에 버킷 위치를 직접 입력합니다.
    3. 데이터 가져오기 옵션에서 가져오기 옵션을 선택합니다.
    4. 가져오기를 클릭합니다.
  6. BigQuery에서 새로고침하려면 다음 단계를 따르세요.

    1. 데이터 소스 선택 창에서 BigQuery를 선택합니다.
    2. BigQuery에서 데이터 가져오기 창에서 찾아보기를 클릭하고 새로고침된 데이터가 포함된 테이블을 선택한 다음 선택을 클릭합니다. 또는 BigQuery 경로 필드에 테이블 위치를 직접 입력해도 됩니다.
    3. 데이터 가져오기 옵션에서 가져오기 옵션을 선택합니다.
    4. 가져오기를 클릭합니다.

REST

documents.import 메서드를 사용하여 적절한 reconciliationMode 값을 지정하여 데이터를 새로고침합니다.

명령줄을 사용하여 BigQuery 또는 Cloud Storage의 정형 데이터를 새로고침하려면 다음 단계를 따르세요.

  1. 데이터 스토어 ID를 찾습니다. 데이터 스토어 ID가 이미 있는 경우 다음 단계로 건너뜁니다.

    1. Google Cloud 콘솔에서 Agent Builder 페이지로 이동하고 탐색 메뉴에서 데이터 스토어를 클릭합니다.

      데이터 스토어 페이지로 이동

    2. 데이터 스토어 이름을 클릭합니다.

    3. 데이터 스토어의 데이터 페이지에서 데이터 스토어 ID를 가져옵니다.

  2. BigQuery에서 정형 데이터를 가져오려면 다음 메서드를 호출합니다. BigQuery 또는 Cloud Storage에서 가져올 수 있습니다. Cloud Storage에서 가져오려면 다음 단계로 건너뜁니다.

    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:import" \
    -d '{
      "bigquerySource": {
        "projectId": "PROJECT_ID",
        "datasetId":"DATASET_ID",
        "tableId": "TABLE_ID",
        "dataSchema": "DATA_SCHEMA_BQ",
      },
      "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 데이터 세트의 이름입니다.
    • TABLE_ID: BigQuery 테이블 이름입니다.
    • DATA_SCHEMA_BQ: BigQuery 소스에서 데이터를 파싱할 때 사용할 스키마를 지정하는 선택적 필드입니다. 다음 값을 가질 수 있습니다.
      • document: 기본값입니다. 사용하는 BigQuery 테이블은 다음 기본 BigQuery 스키마를 준수해야 합니다. 전체 데이터를 json_data 문자열로 래핑하는 동시에 각 문서의 ID를 직접 정의할 수 있습니다.
      • custom: 모든 BigQuery 테이블 스키마가 허용되며 Vertex AI Agent Builder가 가져온 각 문서의 ID를 자동으로 생성합니다.
    • ERROR_DIRECTORY: 가져오기에 대한 오류 정보를 볼 수 있는 Cloud Storage 디렉터리를 지정하는 선택적 필드입니다(예: gs://<your-gcs-bucket>/directory/import_errors). Vertex AI Agent Builder가 임시 디렉터리를 자동으로 만들도록 하려면 이 필드를 비워 두는 것이 좋습니다.
    • RECONCILIATION_MODE: 가져온 문서가 대상 데이터 스토어의 기존 문서와 조정되는 방식을 지정하는 선택적 필드입니다. 다음 값을 가질 수 있습니다.
      • INCREMENTAL: 기본값입니다. BigQuery의 데이터가 데이터 스토어에 점진적으로 새로고침됩니다. 이 경우 새 문서를 추가하고 기존 문서를 동일한 ID의 업데이트된 문서로 대체하는 삽입/업데이트(upsert) 작업이 실행됩니다.
      • FULL: 데이터 스토어에서 문서의 전체 재배치가 이루어집니다. 따라서 새 문서 및 업데이트된 문서가 데이터 스토어에 추가되고 BigQuery에 없는 문서는 데이터 스토어에서 삭제됩니다. FULL 모드는 더 이상 필요하지 않은 문서를 자동으로 삭제하려는 경우에 유용합니다.
    • AUTO_GENERATE_IDS: 문서 ID를 자동으로 생성할지 지정하는 옵션 필드입니다. true로 설정하면 문서 ID가 페이로드의 해시를 기반으로 생성됩니다. 생성된 문서 ID는 여러 가져오기에서 일관되지 않을 수 있습니다. 여러 가져오기에서 ID를 자동으로 생성하는 경우 문서 ID의 일관성을 유지하기 위해 reconciliationModeFULL로 설정하는 것이 좋습니다.

      bigquerySource.dataSchemacustom으로 설정된 경우에만 autoGenerateIds를 지정합니다. 그렇지 않으면 INVALID_ARGUMENT 오류가 반환됩니다. autoGenerateIds를 지정하지 않거나 false로 설정한 경우 idField를 지정해야 합니다. 그렇지 않으면 문서를 가져오지 못합니다.

    • ID_FIELD: 문서 ID인 필드를 지정하는 선택적 필드입니다. BigQuery 소스 파일의 경우 idField는 문서 ID가 포함된 BigQuery 테이블의 열 이름을 나타냅니다.

      다음 두 조건이 모두 충족되는 경우에만 idField를 지정합니다. 그렇지 않으면 INVALID_ARGUMENT 오류가 반환됩니다.

      • bigquerySource.dataSchemacustom로 설정됩니다.
      • auto_generate_idsfalse로 설정되거나 지정되지 않습니다.

      또한 BigQuery 열 이름의 값은 문자열 유형이고 1~63자(영문 기준)여야 하며 RFC-1034를 준수해야 합니다. 그렇지 않으면 문서를 가져오지 못합니다.

    다음은 기본 BigQuery 스키마입니다. dataSchemadocument로 설정할 때 BigQuery 테이블은 이 스키마를 준수해야 합니다.

    [
     {
       "name": "id",
       "mode": "REQUIRED",
       "type": "STRING",
       "fields": []
     },
     {
       "name": "jsonData",
       "mode": "NULLABLE",
       "type": "STRING",
       "fields": []
     }
    ]
    
  3. Cloud Storage에서 정형 데이터를 가져오려면 다음 메서드를 호출합니다. BigQuery 또는 Cloud Storage에서 가져올 수 있습니다. BigQuery에서 가져오려면 이전 단계로 이동하세요.

    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:import" \
    -d '{
      "gcsSource": {
        "inputUris": ["GCS_PATHS"],
        "dataSchema": "DATA_SCHEMA_GCS",
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    
    • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
    • DATA_STORE_ID: Vertex AI Search 데이터 스토어의 ID입니다.
    • GCS_PATHS: 가져올 Cloud Storage 위치의 URI 목록으로, 쉼표로 구분됩니다. 각 URI는 최대 2,000자(영문 기준)까지 허용됩니다. URI는 스토리지 객체의 전체 경로와 일치하거나 하나 이상의 객체의 패턴과 일치할 수 있습니다. 예를 들어 gs://bucket/directory/*.json은 유효한 경로입니다.
    • DATA_SCHEMA_GCS: BigQuery 소스에서 데이터를 파싱할 때 사용할 스키마를 지정하는 선택적 필드입니다. 다음 값을 가질 수 있습니다.
      • document: 기본값입니다. 사용하는 BigQuery 테이블은 다음 기본 BigQuery 스키마를 준수해야 합니다. 전체 데이터를 json_data 문자열로 래핑하는 동시에 각 문서의 ID를 직접 정의할 수 있습니다.
      • custom: 모든 BigQuery 테이블 스키마가 허용되며 Vertex AI Agent Builder가 가져온 각 문서의 ID를 자동으로 생성합니다.
    • ERROR_DIRECTORY: 가져오기에 대한 오류 정보를 볼 수 있는 Cloud Storage 디렉터리를 지정하는 선택적 필드입니다(예: gs://<your-gcs-bucket>/directory/import_errors). Vertex AI Agent Builder가 임시 디렉터리를 자동으로 만들도록 하려면 이 필드를 비워 두는 것이 좋습니다.
    • RECONCILIATION_MODE: 가져온 문서가 대상 데이터 스토어의 기존 문서와 조정되는 방식을 지정하는 선택적 필드입니다. 다음 값을 가질 수 있습니다.
      • INCREMENTAL: 기본값입니다. BigQuery의 데이터가 데이터 스토어에 점진적으로 새로고침됩니다. 이 경우 새 문서를 추가하고 기존 문서를 동일한 ID의 업데이트된 문서로 대체하는 삽입/업데이트(upsert) 작업이 실행됩니다.
      • FULL: 데이터 스토어에서 문서의 전체 재배치가 이루어집니다. 따라서 새 문서 및 업데이트된 문서가 데이터 스토어에 추가되고 BigQuery에 없는 문서는 데이터 스토어에서 삭제됩니다. FULL 모드는 더 이상 필요하지 않은 문서를 자동으로 삭제하려는 경우에 유용합니다.

Python

자세한 내용은 Vertex AI Agent Builder Python API 참고 문서를 확인하세요.

Vertex AI Agent Builder에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# bigquery_dataset = "YOUR_BIGQUERY_DATASET"
# bigquery_table = "YOUR_BIGQUERY_TABLE"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigquery_source=discoveryengine.BigQuerySource(
        project_id=project_id,
        dataset_id=bigquery_dataset,
        table_id=bigquery_table,
        data_schema="custom",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

비정형 데이터 새로고침

Google Cloud 콘솔에서 또는 API를 사용하여 비정형 데이터를 새로고침할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 데이터 스토어의 브랜치에서 비정형 데이터를 새로고침하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Agent Builder 페이지로 이동합니다.

    Agent Builder를 사용하여 이 모든 것을 자체 데이터에 그라운딩하세요.

  2. 탐색 메뉴에서 데이터 스토어를 클릭합니다.

  3. 이름 열에서 수정할 데이터 스토어를 클릭합니다.

  4. 문서 탭에서 데이터 가져오기를 클릭합니다.

  5. Cloud Storage 버킷에서 수집하려면(메타데이터 포함 또는 제외) 다음 단계를 따르세요.

    1. 데이터 소스 선택 창에서 Cloud Storage를 선택합니다.
    2. Cloud Storage에서 데이터 가져오기 창에서 찾아보기를 클릭하고 새로고침된 데이터가 포함된 버킷을 선택한 다음 선택을 클릭합니다. 또는 gs:// 필드에 위치를 직접 입력해도 됩니다.
    3. 데이터 가져오기 옵션에서 가져오기 옵션을 선택합니다.
    4. 가져오기를 클릭합니다.
  6. BigQuery에서 수집하려면 다음 단계를 따르세요.

    1. 데이터 소스 선택 창에서 BigQuery를 선택합니다.
    2. BigQuery에서 데이터 가져오기 창에서 찾아보기를 클릭하고 새로고침된 데이터가 포함된 테이블을 선택한 다음 선택을 클릭합니다. 또는 BigQuery 경로 필드에 테이블 위치를 직접 입력해도 됩니다.
    3. 데이터 가져오기 옵션에서 가져오기 옵션을 선택합니다.
    4. 가져오기를 클릭합니다.

REST

API를 사용하여 비정형 데이터를 새로고침하려면 적절한 reconciliationMode 값을 지정하여 documents.import 메서드를 사용하여 다시 가져옵니다. 비정형 데이터 가져오기에 관한 자세한 내용은 구조화되지 않은 데이터를 참조하세요.

Python

자세한 내용은 Vertex AI Agent Builder Python API 참고 문서를 확인하세요.

Vertex AI Agent Builder에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"

# Examples:
# - Unstructured documents
#   - `gs://bucket/directory/file.pdf`
#   - `gs://bucket/directory/*.pdf`
# - Unstructured documents with JSONL Metadata
#   - `gs://bucket/directory/file.json`
# - Unstructured documents with CSV Metadata
#   - `gs://bucket/directory/file.csv`
# gcs_uri = "YOUR_GCS_PATH"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    gcs_source=discoveryengine.GcsSource(
        # Multiple URIs are supported
        input_uris=[gcs_uri],
        # Options:
        # - `content` - Unstructured documents (PDF, HTML, DOC, TXT, PPTX)
        # - `custom` - Unstructured documents with custom JSONL metadata
        # - `document` - Structured documents in the discoveryengine.Document format.
        # - `csv` - Unstructured documents with CSV metadata
        data_schema="content",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)