Actualiza datos estructurados y no estructurados

En esta página, se describe cómo actualizar datos estructurados y no estructurados.

Para actualizar las apps de tu sitio web, consulta Cómo actualizar tu página web.

Actualiza datos estructurados

Puedes actualizar los datos de un almacén de datos estructurados, siempre y cuando uses un esquema que sea el mismo o retrocompatible con el esquema del almacén de datos. Por ejemplo, agregar solo campos nuevos a un esquema existente es retrocompatible.

Puedes actualizar los datos estructurados en la consola de Google Cloud o con la API.

Console

Para usar la consola de Google Cloud y actualizar datos estructurados desde una sucursal de un almacén de datos, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Agent Builder.

    Agent Builder

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. En la columna Nombre, haz clic en el almacén de datos que deseas editar.

  4. En la pestaña Documentos, haz clic en Importar datos.

  5. Para actualizar desde Cloud Storage, haz lo siguiente:

    1. En el panel Selecciona una fuente de datos, elige Cloud Storage.
    2. En el panel Importar datos de Cloud Storage, haz clic en Explorar, selecciona el bucket que contiene los datos actualizados y, luego, haz clic en Seleccionar. Como alternativa, ingresa la ubicación del bucket directamente en el campo gs://.
    3. En Opciones de importación de datos, selecciona una opción de importación.
    4. Haga clic en Import.
  6. Para actualizar desde BigQuery, sigue estos pasos:

    1. En el panel Selecciona una fuente de datos, selecciona BigQuery.
    2. En el panel Importar datos desde BigQuery, haz clic en Explorar, selecciona una tabla que contenga los datos actualizados y, luego, haz clic en Seleccionar. Como alternativa, ingresa la ubicación de la tabla directamente en el campo Ruta de BigQuery.
    3. En Opciones de importación de datos, selecciona una opción de importación.
    4. Haga clic en Import.

REST

Usa el método documents.import para actualizar tus datos y especifica el valor reconciliationMode adecuado.

Para actualizar los datos estructurados de BigQuery o Cloud Storage con la línea de comandos, sigue estos pasos:

  1. Busca el ID de tu almacén de datos. Si ya tienes el ID del almacén de datos, ve al siguiente paso.

    1. En la consola de Google Cloud, ve a la página Agent Builder y, en el menú de navegación, haz clic en Almacenes de datos.

      Ve a la página Almacenes de datos.

    2. Haz clic en el nombre de tu almacén de datos.

    3. En la página Datos de tu almacén de datos, obtén el ID del almacén de datos.

  2. Para importar tus datos estructurados desde BigQuery, llama al siguiente método. Puedes importar desde BigQuery o Cloud Storage. Para importar desde Cloud Storage, ve al siguiente paso.

    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: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
    • DATASET_ID: Es el nombre de tu conjunto de datos de BigQuery.
    • TABLE_ID: Es el nombre de tu tabla de BigQuery.
    • DATA_SCHEMA_BQ: Es un campo opcional para especificar el esquema que se usará cuando se analicen los datos de la fuente de BigQuery. Puede tener los siguientes valores:
      • document: Es el valor predeterminado. La tabla de BigQuery que uses debe cumplir con el siguiente esquema predeterminado de BigQuery. Puedes definir el ID de cada documento por tu cuenta y, al mismo tiempo, unir todos los datos en la cadena json_data.
      • custom: Se acepta cualquier esquema de tabla de BigQuery, y Vertex AI Agent Builder genera automáticamente los IDs de cada documento que se importa.
    • ERROR_DIRECTORY: Es un campo opcional para especificar un directorio de Cloud Storage para obtener información sobre los errores de la importación, por ejemplo, gs://<your-gcs-bucket>/directory/import_errors. Google recomienda dejar este campo vacío para permitir que Vertex AI Agent Builder cree automáticamente un directorio temporal.
    • RECONCILIATION_MODE: Es un campo opcional para especificar cómo se concilian los documentos importados con los documentos existentes en el almacén de datos de destino. Puede tener los siguientes valores:
      • INCREMENTAL: Es el valor predeterminado. Genera una actualización incremental de los datos de BigQuery a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID.
      • FULL: Genera una rebase completa de los documentos en tu almacén de datos. Por lo tanto, se agregan documentos nuevos y actualizados a tu almacén de datos, y se quitan los documentos que no están en BigQuery. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.
    • AUTO_GENERATE_IDS: Es un campo opcional para especificar si se deben generar automáticamente los IDs de documentos. Si se establece en true, los IDs de los documentos se generan en función de un hash de la carga útil. Ten en cuenta que los IDs de documentos generados pueden no mantenerse coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda configurar reconciliationMode como FULL para mantener IDs de documentos coherentes.

      Especifica autoGenerateIds solo cuando bigquerySource.dataSchema se establece en custom. De lo contrario, se muestra un error INVALID_ARGUMENT. Si no especificas autoGenerateIds o lo configuras en false, debes especificar idField. De lo contrario, los documentos no se importarán.

    • ID_FIELD: Es un campo opcional para especificar qué campos son los IDs de los documentos. En el caso de los archivos de origen de BigQuery, idField indica el nombre de la columna en la tabla de BigQuery que contiene los IDs de documentos.

      Especifica idField solo cuando se cumplan ambas condiciones, de lo contrario, se mostrará un error INVALID_ARGUMENT:

      • bigquerySource.dataSchema se configura como custom.
      • auto_generate_ids se establece en false o no se especifica.

      Además, el valor del nombre de la columna de BigQuery debe ser de tipo cadena, debe tener entre 1 y 63 caracteres y debe cumplir con RFC-1034. De lo contrario, no se importarán los documentos.

    Este es el esquema predeterminado de BigQuery. Tu tabla de BigQuery debe cumplir con este esquema cuando establezcas dataSchema en document.

    [
     {
       "name": "id",
       "mode": "REQUIRED",
       "type": "STRING",
       "fields": []
     },
     {
       "name": "jsonData",
       "mode": "NULLABLE",
       "type": "STRING",
       "fields": []
     }
    ]
    
  3. Para importar tus datos estructurados desde Cloud Storage, llama al siguiente método. Puedes importar desde BigQuery o Cloud Storage. Para importar desde BigQuery, ve al paso anterior.

    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: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
    • GCS_PATHS: Es una lista de URIs separados por comas a las ubicaciones de Cloud Storage desde las que deseas realizar la importación. Cada URI puede tener 2,000 caracteres. Los URIs pueden coincidir con la ruta de acceso completa de un objeto de almacenamiento o con el patrón de uno o más objetos. Por ejemplo, gs://bucket/directory/*.json es una ruta válida.
    • DATA_SCHEMA_GCS: Es un campo opcional para especificar el esquema que se usará cuando se analicen los datos de la fuente de BigQuery. Puede tener los siguientes valores:
      • document: Es el valor predeterminado. La tabla de BigQuery que uses debe cumplir con el siguiente esquema predeterminado de BigQuery. Puedes definir el ID de cada documento por tu cuenta y, al mismo tiempo, unir todos los datos en la cadena json_data.
      • custom: Se acepta cualquier esquema de tabla de BigQuery, y Vertex AI Agent Builder genera automáticamente los IDs de cada documento que se importa.
    • ERROR_DIRECTORY: Es un campo opcional para especificar un directorio de Cloud Storage para obtener información sobre los errores de la importación, por ejemplo, gs://<your-gcs-bucket>/directory/import_errors. Google recomienda dejar este campo vacío para permitir que Vertex AI Agent Builder cree automáticamente un directorio temporal.
    • RECONCILIATION_MODE: Es un campo opcional para especificar cómo se concilian los documentos importados con los documentos existentes en el almacén de datos de destino. Puede tener los siguientes valores:
      • INCREMENTAL: Es el valor predeterminado. Genera una actualización incremental de los datos de BigQuery a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID.
      • FULL: Genera una rebase completa de los documentos en tu almacén de datos. Por lo tanto, se agregan documentos nuevos y actualizados a tu almacén de datos, y se quitan los documentos que no están en BigQuery. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.

Python

Para obtener más información, consulta la documentación de referencia de la API de Python del compilador de agentes de Vertex AI.

Para autenticarte en Vertex AI Agent Builder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


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)

Actualiza datos no estructurados

Puedes actualizar los datos no estructurados en la consola de Google Cloud o con la API.

Console

Para usar la consola de Google Cloud y actualizar datos no estructurados de una sucursal de un almacén de datos, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Agent Builder.

    Agent Builder

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. En la columna Nombre, haz clic en el almacén de datos que deseas editar.

  4. En la pestaña Documentos, haz clic en Importar datos.

  5. Para transferir datos desde un bucket de Cloud Storage (con o sin metadatos), sigue estos pasos:

    1. En el panel Selecciona una fuente de datos, elige Cloud Storage.
    2. En el panel Importar datos de Cloud Storage, haz clic en Explorar, selecciona el bucket que contiene los datos actualizados y, luego, haz clic en Seleccionar. Como alternativa, ingresa la ubicación del bucket directamente en el campo gs://.
    3. En Opciones de importación de datos, selecciona una opción de importación.
    4. Haga clic en Import.
  6. Para transferir datos desde BigQuery, sigue estos pasos:

    1. En el panel Selecciona una fuente de datos, selecciona BigQuery.
    2. En el panel Importar datos desde BigQuery, haz clic en Explorar, selecciona una tabla que contenga los datos actualizados y, luego, haz clic en Seleccionar. Como alternativa, ingresa la ubicación de la tabla directamente en el campo Ruta de BigQuery.
    3. En Opciones de importación de datos, selecciona una opción de importación.
    4. Haga clic en Import.

REST

Para actualizar los datos no estructurados con la API, vuelve a importarlos con el método documents.import y especifica el valor reconciliationMode adecuado. Para obtener más información sobre la importación de datos no estructurados, consulta Datos no estructurados.

Python

Para obtener más información, consulta la documentación de referencia de la API de Python del compilador de agentes de Vertex AI.

Para autenticarte en Vertex AI Agent Builder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

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)