刷新结构化数据和非结构化数据

本页介绍了如何刷新结构化非结构化数据。

如需刷新网站应用,请参阅刷新网页

刷新结构化数据

只要您使用的架构与数据存储区中的架构相同或向后兼容,就可以刷新结构化数据存储区中的数据。对于 例如,仅向现有架构添加新字段是向后兼容的。

您可以在 Google Cloud 控制台中或使用 API 刷新结构化数据。

控制台

如需使用 Google Cloud 控制台刷新数据存储分支中的结构化数据,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

    Agent Builder

  2. 在导航菜单中,点击 Data Stores

  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 值。

要使用 命令行中,请按以下步骤操作:

  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 架构。您 可以自行定义每个文档的 ID,同时将整个文档 json_data 字符串中的数据。
      • custom:任何 BigQuery 表架构都是 Vertex AI Agent Builder 会自动生成 导入一个文档。
    • ERROR_DIRECTORY:可选字段,用于指定 Cloud Storage 目录 导入错误信息,例如 gs://<your-gcs-bucket>/directory/import_errors。Google 建议您 此字段留空可让 Vertex AI Agent Builder 自动创建 临时目录。
    • RECONCILIATION_MODE:一个可选字段,用于指定如何将导入的文档与目标数据存储区中的现有文档进行协调。可具有以下值:
      • INCREMENTAL:默认值。会导致从 BigQuery 到数据存储区以增量方式刷新数据。这会执行更新/插入操作 操作,这会添加新文档并将现有文档替换为 具有相同 ID 的更新文档。
      • FULL:会导致对数据存储区中的文档执行完全 rebase 操作。 因此,系统会将新文档和更新后的文档添加到您的数据存储区,并将 BigQuery 中不存在的文档从您的数据存储区中移除。如果您想自动删除不再需要的文档,FULL 模式会很有用。
    • AUTO_GENERATE_IDS:可选字段,用于指定是否 自动生成文档 ID。如果设置为 true,则文档 ID 会根据载荷的哈希生成。请注意,生成的 文档 ID 可能不会在多次导入时保持一致。如果 您将通过多次导入自动生成 ID,Google 高度 建议将 reconciliationMode 设置为 FULL 以保持 文档 ID 保持一致。

      仅当 bigquerySource.dataSchema 为以下值时,才指定 autoGenerateIds: 已设置为 custom。否则,系统将返回 INVALID_ARGUMENT 错误。如果您未指定 autoGenerateIds 或将其设置为 false,则必须指定 idField。否则,文档将无法导入。

    • ID_FIELD:可选字段,用于指定 文档 ID。对于 BigQuery 源文件,idField 表示 BigQuery 表中包含文档 ID 的列的名称。

      仅当同时满足以下两个条件时,才指定 idField,否则系统会返回 INVALID_ARGUMENT 错误:

      • bigquerySource.dataSchema 设置为 custom
      • auto_generate_ids 设置为 false 或未指定。

      此外,BigQuery 列名称的值必须为字符串类型,长度必须介于 1 到 63 个字符之间,并且必须符合 RFC-1034 的要求。否则,文档将无法导入。

    以下是默认的 BigQuery 架构。您的 BigQuery 如果您将 dataSchema 设为 document

    [
     {
       "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:以英文逗号分隔的 URI 列表 您希望从中导入数据的 Cloud Storage 位置。每个 URI 的长度不得超过 2,000 个字符。URI 可以与存储对象的完整路径匹配 也可以匹配一个或多个对象的模式。例如: gs://bucket/directory/*.json 是有效路径。
    • DATA_SCHEMA_GCS:一个可选字段,用于指定在解析 BigQuery 来源的数据时要使用的架构。可以具有 以下值:
      • document:默认值。您使用的 BigQuery 表必须符合以下默认 BigQuery 架构。您 可以自行定义每个文档的 ID,同时将整个文档 json_data 字符串中的数据。
      • custom:任何 BigQuery 表架构都是 Vertex AI Agent Builder 会自动生成 导入一个文档。
    • ERROR_DIRECTORY:可选字段,用于指定 Cloud Storage 目录 导入错误信息,例如 gs://<your-gcs-bucket>/directory/import_errors。Google 建议您 此字段留空可让 Vertex AI Agent Builder 自动创建 临时目录。
    • RECONCILIATION_MODE:一个可选字段,用于指定如何将导入的文档与目标数据存储区中的现有文档进行协调。可具有以下值:
      • INCREMENTAL:默认值。会导致从 BigQuery 到数据存储区以增量方式刷新数据。这会执行更新/插入操作 操作,这会添加新文档并将现有文档替换为 具有相同 ID 的更新文档。
      • FULL:会导致对数据存储区中的文档执行完全 rebase 操作。 因此,系统会将新文档和更新后的文档添加到您的数据存储区,并将 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. 在导航菜单中,点击 Data Stores

  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 刷新非结构化数据,请使用 documents.import 方法,指定适当的 reconciliationMode 值。如需详细了解如何导入非结构化数据,请参阅非结构化数据

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)