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 Actualiza tu página web.

Actualiza datos estructurados

Puedes actualizar los datos en un almacén de datos estructurados siempre que 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 datos estructurados en la Google Cloud consola o con la API.

Console

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

  1. En la Google Cloud consola de, ve a la página AI Applications.

    AI Applications

  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 desde 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. Haz clic en Importar.
  6. Para actualizar desde BigQuery, haz lo siguiente:

    1. En el panel Selecciona una fuente de datos, elige 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. Haz clic en Importar.

REST

Usa el método documents.import para actualizar tus datos, especificar el valor reconciliationMode adecuado.

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

  1. Busca el ID del almacén de datos. Si ya tienes el ID del almacén de datos, avanza al próximo paso.

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

      Ir 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, avanza al próximo 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"
      }
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • DATA_STORE_ID: Es el ID del almacén de datos de Agent 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 usas debe cumplir con el siguiente esquema predeterminado de BigQuery. Puedes definir el ID de cada documento, mientras encapsulas todos los datos en la cadena json_data.
      • custom: Se acepta cualquier esquema de tabla de BigQuery, y Agent Search 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 Agent Search 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. Provoca una actualización incremental de los datos de BigQuery a tu almacén de datos. Esto realiza una operación de upsert, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID.
      • FULL: Provoca una nueva base 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 deseas 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 los 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 los documentos generados podrían no ser coherentes en varias importaciones. Si generas automáticamente IDs en varias importaciones, Google recomienda establecer reconciliationMode en 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 estableces en false, debes especificar idField. De lo contrario, no se importarán los documentos.

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

      Especifica idField solo cuando se cumplan estas dos condiciones. De lo contrario, se muestra un error INVALID_ARGUMENT:

      • bigquerySource.dataSchema se establece en 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 estableces 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"
      }
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • DATA_STORE_ID: Es el ID del almacén de datos de Agent Search.
    • GCS_PATHS: Es una lista de URIs separadas por comas a ubicaciones de Cloud Storage desde las que deseas importar. Cada URI puede tener 2,000 caracteres de longitud. Las 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 de acceso 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 usas debe cumplir con el siguiente esquema predeterminado de BigQuery. Puedes definir el ID de cada documento, mientras encapsulas todos los datos en la cadena json_data.
      • custom: Se acepta cualquier esquema de tabla de BigQuery, y Agent Search 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 Agent Search 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. Provoca una actualización incremental de los datos de BigQuery a tu almacén de datos. Esto realiza una operación de upsert, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID.
      • FULL: Provoca una nueva base 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 deseas borrar automáticamente los documentos que ya no necesitas.

Python

Para obtener más información, consulta la documentación de referenciaPython de la API de Agent Search.

Para autenticarte en Agent Search, configura las credenciales predeterminadas de la aplicación. Para 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 datos no estructurados en la Google Cloud consola o con la API.

Console

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

  1. En la Google Cloud consola de, ve a la página AI Applications.

    AI Applications

  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 desde un bucket de Cloud Storage (con o sin metadatos), haz lo siguiente:

    1. En el panel Selecciona una fuente de datos, elige Cloud Storage.
    2. En el panel Importar datos desde 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. Haz clic en Importar.
  6. Para transferir desde BigQuery, haz lo siguiente:

    1. En el panel Selecciona una fuente de datos, elige 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. Haz clic en Importar.

REST

Para actualizar 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 referenciaPython de la API de Agent Search.

Para autenticarte en Agent Search, configura las credenciales predeterminadas de la aplicación. Para 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)