Actualizar datos estructurados y sin estructurar

En esta página se describe cómo actualizar los datos estructurados y sin estructurar.

Para actualizar las aplicaciones de tu sitio web, consulta Actualizar una página web.

Actualizar datos estructurados

Puedes actualizar los datos de un almacén de datos estructurados siempre que utilices un esquema que sea igual o compatible con el esquema del almacén de datos. Por ejemplo, añadir solo campos nuevos a un esquema ya creado es compatible con versiones anteriores.

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

Consola

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

  1. En la Google Cloud consola, ve a la página Aplicaciones de IA.

    Aplicaciones de IA

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

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

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

  5. Para actualizar desde Cloud Storage, sigue estos pasos:

    1. En el panel Seleccionar una fuente de datos, elige Cloud Storage.
    2. En el panel Importar datos de Cloud Storage, haz clic en Buscar, selecciona el segmento que contiene los datos actualizados y, a continuación, haz clic en Seleccionar. También puedes introducir la ubicación del contenedor directamente en el campo gs://.
    3. En Opciones de importación de datos, seleccione una opción de importación.
    4. Haz clic en Importar.
  6. Para actualizar los datos de BigQuery, sigue estos pasos:

    1. En el panel Seleccionar una fuente de datos, selecciona BigQuery.
    2. En el panel Importar datos de BigQuery, haga clic en Buscar, seleccione una tabla que contenga los datos actualizados y, a continuación, haga clic en Seleccionar. También puedes introducir la ubicación de la tabla directamente en el campo Ruta de BigQuery.
    3. En Opciones de importación de datos, seleccione una opción de importación.
    4. Haz clic en Importar.

REST

Utilice el método documents.import para actualizar sus datos y especifique el valor de reconciliationMode adecuado.

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

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

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

      Ir a la página Almacenes de datos

    2. Haga clic en el nombre de su almacén de datos.

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

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

    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"
      }
    }'
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
    • DATASET_ID: el nombre de tu conjunto de datos de BigQuery.
    • TABLE_ID: el nombre de la tabla de BigQuery.
    • DATA_SCHEMA_BQ: campo opcional para especificar el esquema que se va a usar al analizar los datos de la fuente de BigQuery. Puede tener los siguientes valores:
      • document: el valor predeterminado. La tabla de BigQuery que utilices debe cumplir el siguiente esquema predeterminado de BigQuery. Puedes definir el ID de cada documento tú mismo, mientras envuelves todos los datos en la cadena json_data.
      • custom: se acepta cualquier esquema de tabla de BigQuery y las aplicaciones de IA generan automáticamente los IDs de cada documento que se importa.
    • ERROR_DIRECTORY: campo opcional para especificar un directorio de Cloud Storage para la información de errores sobre la importación. Por ejemplo, gs://<your-gcs-bucket>/directory/import_errors. Google recomienda dejar este campo en blanco para que Aplicaciones de IA cree automáticamente un directorio temporal.
    • RECONCILIATION_MODE: campo opcional para especificar cómo se concilian los documentos importados con los documentos del almacén de datos de destino. Puede tener los siguientes valores:
      • INCREMENTAL: el valor predeterminado. Provoca una actualización incremental de los datos de BigQuery en tu almacén de datos. Esta acción realiza una operación de upsert, que añade documentos nuevos y sustituye los documentos que ya existen por documentos actualizados con el mismo ID.
      • FULL: provoca una rebase completa de los documentos de tu almacén de datos. Por lo tanto, los documentos nuevos y actualizados se añaden a tu almacén de datos, y los documentos que no están en BigQuery se eliminan de él. El modo FULL es útil si quieres eliminar automáticamente los documentos que ya no necesitas.
    • AUTO_GENERATE_IDS: campo opcional para especificar si se deben generar automáticamente los IDs de documento. Si se define como true, los IDs de documento se generan a partir de un hash de la carga útil. Ten en cuenta que es posible que los IDs de documento generados no sean coherentes en varias importaciones. Si generas automáticamente IDs en varias importaciones, Google te recomienda que definas reconciliationMode como FULL para mantener IDs de documento coherentes.

      Especifica autoGenerateIds solo cuando bigquerySource.dataSchema se haya definido como custom. De lo contrario, se devuelve un error INVALID_ARGUMENT. Si no especifica autoGenerateIds o lo define como false, debe especificar idField. De lo contrario, no se podrán importar los documentos.

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

      Especifica idField solo cuando se cumplan ambas condiciones. De lo contrario, se devolverá un error INVALID_ARGUMENT:

      • bigquerySource.dataSchema está configurado como custom
      • auto_generate_ids se ha definido como false o no se ha especificado.

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

    Este es el esquema predeterminado de BigQuery. Tu tabla de BigQuery debe cumplir este esquema cuando asignes el valor dataSchema a document.

    [
     {
       "name": "id",
       "mode": "REQUIRED",
       "type": "STRING",
       "fields": []
     },
     {
       "name": "jsonData",
       "mode": "NULLABLE",
       "type": "STRING",
       "fields": []
     }
    ]
    
  3. Para importar los datos estructurados de Cloud Storage, llama al siguiente método. Puedes importar datos desde BigQuery o Cloud Storage. Para importar desde BigQuery, vaya 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"
      }
    }'
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
    • GCS_PATHS: una lista de URIs separados por comas a ubicaciones de Cloud Storage desde las que quieras importar. Cada URI puede tener una longitud de 2000 caracteres. Los URIs pueden coincidir con la ruta completa de un objeto de almacenamiento o con el patrón de uno o varios objetos. Por ejemplo, gs://bucket/directory/*.json es una ruta válida.
    • DATA_SCHEMA_GCS: campo opcional para especificar el esquema que se va a usar al analizar los datos de la fuente de BigQuery. Puede tener los siguientes valores:
      • document: el valor predeterminado. La tabla de BigQuery que utilices debe cumplir el siguiente esquema predeterminado de BigQuery. Puedes definir el ID de cada documento tú mismo, mientras envuelves todos los datos en la cadena json_data.
      • custom: se acepta cualquier esquema de tabla de BigQuery y las aplicaciones de IA generan automáticamente los IDs de cada documento que se importa.
    • ERROR_DIRECTORY: campo opcional para especificar un directorio de Cloud Storage para la información de errores sobre la importación. Por ejemplo, gs://<your-gcs-bucket>/directory/import_errors. Google recomienda dejar este campo en blanco para que Aplicaciones de IA cree automáticamente un directorio temporal.
    • RECONCILIATION_MODE: campo opcional para especificar cómo se concilian los documentos importados con los documentos del almacén de datos de destino. Puede tener los siguientes valores:
      • INCREMENTAL: el valor predeterminado. Provoca una actualización incremental de los datos de BigQuery en tu almacén de datos. Esta acción realiza una operación de upsert, que añade documentos nuevos y sustituye los documentos que ya existen por documentos actualizados con el mismo ID.
      • FULL: provoca una rebase completa de los documentos de tu almacén de datos. Por lo tanto, los documentos nuevos y actualizados se añaden a tu almacén de datos, y los documentos que no están en BigQuery se eliminan de él. El modo FULL es útil si quieres eliminar automáticamente los documentos que ya no necesitas.

Python

Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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)

Actualizar datos sin estructurar

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

Consola

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

  1. En la Google Cloud consola, ve a la página Aplicaciones de IA.

    Aplicaciones de IA

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

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

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

  5. Para ingerir datos de un segmento de Cloud Storage (con o sin metadatos), sigue estos pasos:

    1. En el panel Seleccionar una fuente de datos, elige Cloud Storage.
    2. En el panel Importar datos de Cloud Storage, haz clic en Buscar, selecciona el segmento que contiene los datos actualizados y, a continuación, haz clic en Seleccionar. También puedes introducir la ubicación del segmento directamente en el campo gs://.
    3. En Opciones de importación de datos, seleccione una opción de importación.
    4. Haz clic en Importar.
  6. Para ingerir datos de BigQuery, siga estos pasos:

    1. En el panel Seleccionar una fuente de datos, selecciona BigQuery.
    2. En el panel Importar datos de BigQuery, haz clic en Buscar, selecciona una tabla que contenga los datos actualizados y, a continuación, haz clic en Seleccionar. También puedes introducir la ubicación de la tabla directamente en el campo Ruta de BigQuery.
    3. En Opciones de importación de datos, seleccione una opción de importación.
    4. Haz clic en Importar.

REST

Para actualizar datos no estructurados mediante la API, vuelve a importarlos con el método documents.import y especifica el valor reconciliationMode adecuado. Para obtener más información sobre cómo importar datos sin estructurar, consulta Datos sin estructurar.

Python

Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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)