Analiza archivos PDF en una canalización de generación mejorada por recuperación

En este instructivo, se explica el proceso para crear una canalización de generación mejorada por recuperación (RAG) basada en el contenido de PDF analizado.

Los archivos PDF, como los documentos financieros, pueden ser difíciles de usar en las canalizaciones de RAG debido a su estructura compleja y combinación de texto, figuras y tablas. En este instructivo, se muestra cómo usar las funciones de BigQuery ML en combinación con el analizador de diseño de Document AI para compilar una canalización de RAG basada en información clave extraída de un archivo PDF.

Como alternativa, puedes realizar este instructivo con un notebook de Colab Enterprise.

Objetivos

En este instructivo, se abarcan las siguientes tareas:

  • Crea un bucket de Cloud Storage y sube un archivo PDF de muestra.
  • Crear una conexión de recursos de Cloud para que puedas conectarte a Cloud Storage y Vertex AI desde BigQuery
  • Crear una tabla de objetos sobre el archivo PDF para que esté disponible en BigQuery
  • Crear un procesador de Document AI que puedes usar para analizar el archivo PDF
  • Crear un modelo remoto que te permita usar la API de Document AI para acceder al procesador de documentos desde BigQuery
  • Usar el modelo remoto con la función ML.PROCESS_DOCUMENT para analizar el contenido de un PDF en fragmentos y, luego, escribir ese contenido en una tabla de BigQuery
  • Extraer el contenido de PDF de los datos JSON que muestra la función ML.PROCESS_DOCUMENT y, luego, escribir ese contenido en una tabla de BigQuery
  • Crear un modelo remoto que te permita usar el modelo de generación de incorporaciones text-embedding-004 de Vertex AI desde BigQuery.
  • Usar el modelo remoto con la función ML.GENERATE_EMBEDDING para generar incorporaciones a partir del contenido de PDF analizado y, luego, escribir esas incorporaciones en una tabla de BigQuery Las incorporaciones son representaciones numéricas del contenido de PDF que te permiten realizar búsquedas y recuperaciones semánticas en el contenido de PDF.
  • Usar la función VECTOR_SEARCH en las incorporaciones para identificar contenido de PDF semánticamente similar
  • Crear un modelo remoto que te permita usar el modelo de generación de texto gemini-1.5-flash de Vertex AI desde BigQuery.
  • Realizar la generación de aumento de recuperación (RAG) con el modelo remoto con la función ML.GENERATE_TEXT para generar texto, usando los resultados de la búsqueda vectorial para aumentar la entrada de instrucciones y mejorar los resultados.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

  • BigQuery: You incur costs for the data that you process in BigQuery.
  • Vertex AI: You incur costs for calls to Vertex AI models.
  • Document AI: You incur costs for calls to the Document AI API.
  • Cloud Storage: You incur costs for object storage in Cloud Storage.

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Para obtener más información, consulta las siguientes páginas de precios:

Antes de comenzar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery, BigQuery Connection, Vertex AI, Document AI, and Cloud Storage APIs.

    Enable the APIs

Roles obligatorios

  • Para crear objetos y buckets de Cloud Storage, debes tener membresía en el rol roles/storage.storageAdmin.

  • Para crear un procesador de Document AI, necesitas membresía en el rol roles/documentai.editor.

  • Para crear una conexión, necesitas membresía en el rol roles/bigquery.connectionAdmin.

  • Para otorgar permisos a la cuenta de servicio de la conexión, necesitas ser miembro del rol roles/resourcemanager.projectIamAdmin.

  • En este instructivo, los permisos de IAM necesarios para las operaciones de BigQuery restantes se incluyen en los siguientes dos roles:

    • Editor de datos de BigQuery (roles/bigquery.dataEditor) para crear modelos, índices y tablas
    • Usuario de BigQuery (roles/bigquery.user) para ejecutar trabajos de BigQuery.

Crea un conjunto de datos

Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA:

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

    Ir a la página de BigQuery

  2. En el panel Explorador, haz clic en el nombre de tu proyecto.

  3. Haz clic en Ver acciones > Crear conjunto de datos.

    Crea un conjunto de datos.

  4. En la página Crear conjunto de datos, haz lo siguiente:

    • En ID del conjunto de datos, ingresa bqml_tutorial.

    • En Tipo de ubicación, selecciona Multirregión y, luego, EE.UU. (varias regiones en Estados Unidos).

      Los conjuntos de datos públicos se almacenan en la multirregión US. Para que sea más simple, almacena tu conjunto de datos en la misma ubicación.

    • Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.

      Página Crear un conjunto de datos

Crear una conexión

Crea una conexión de recurso de Cloud y obtén la cuenta de servicio de la conexión. Crea la conexión en la misma ubicación.

Selecciona una de las siguientes opciones:

Console

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. Para crear una conexión, haz clic en Agregar y, luego, en Conexiones a fuentes de datos externas.

  3. En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).

  4. En el campo ID de conexión, escribe un nombre para tu conexión.

  5. Haz clic en Crear conexión (Create connection).

  6. Haz clic en Ir a la conexión.

  7. En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.

bq

  1. En un entorno de línea de comandos, crea una conexión:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    El parámetro --project_id anula el proyecto predeterminado.

    Reemplaza lo siguiente:

    • REGION: tu región de conexión
    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • CONNECTION_ID: Es un ID para tu conexión.

    Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.

    Solución de problemas: Si recibes el siguiente error de conexión, actualiza el SDK de Google Cloud:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    El resultado es similar a este:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Usa el recurso google_bigquery_connection.

.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

En el siguiente ejemplo, se crea una conexión de recursos de Cloud llamada my_cloud_resource_connection en la región US:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

Prepara el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    Copia el código de muestra en el main.tf recién creado.

    De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

Otorga acceso a la cuenta de servicio

Elige una de las opciones siguientes:

Console

  1. Ir a la página IAM y administración

    Ir a IAM y administración

  2. Haz clic en Otorgar acceso.

    Se abre el cuadro de diálogo Agregar principales.

  3. En el campo Principales nuevas, escribe el ID de la cuenta de servicio que copiaste antes.

  4. En el campo Elegir un rol, elige Document AI y, luego, Visualizador de Document AI.

  5. Haz clic en Agregar otro rol.

  6. En el campo Elige una función, elige Cloud Storage y, luego,Visualizador de objetos de Storage.

  7. Haz clic en Agregar otra función.

  8. En el campo Selecciona un rol, selecciona Vertex AI y, luego, Usuario de Vertex AI.

  9. Haz clic en Guardar.

gcloud

Usa el comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/documentai.viewer' --condition=None
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/storage.objectViewer' --condition=None
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
 

Reemplaza lo siguiente:

  • PROJECT_NUMBER: Es el número de tu proyecto.
  • MEMBER: Es el ID de la cuenta de servicio que copiaste antes.

Sube el PDF de ejemplo a Cloud Storage

Para subir el PDF de muestra a Cloud Storage, sigue estos pasos:

  1. Para descargar el PDF de muestra de scf23.pdf, ve a https://www.federalreserve.gov/publications/files/scf23.pdf y haz clic en Descargar .
  2. Crea buckets de Cloud Storage.
  3. Sube el archivo scf23.pdf al bucket.

Crea una tabla de objetos

Crea una tabla de objetos sobre el archivo PDF en Cloud Storage:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.pdf`
    WITH CONNECTION `LOCATION.CONNECTION_ID`
    OPTIONS(
      object_metadata = 'SIMPLE',
      uris = ['gs://BUCKET/scf23.pdf']);

    Reemplaza lo siguiente:

    • LOCATION: la ubicación de la conexión.
    • CONNECTION_ID: el ID de la conexión de BigQuery.

      Cuando veas los detalles de conexión en la consola de Google Cloud, el CONNECTION_ID es el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión, por ejemplo projects/myproject/locations/connection_location/connections/myconnection.

    • BUCKET: Es el bucket de Cloud Storage que contiene el archivo scf23.pdf. El valor completo de la opción uri debería ser similar a ['gs://mybucket/scf23.pdf'].

Crea un procesador de documentos

Crea un procesador de documentos basado en el procesador de analizador de diseño en la multirregión us.

Crea el modelo remoto para el procesador de documentos

Crea un modelo remoto para acceder al procesador de Document AI:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    CREATE OR REPLACE MODEL `bqml_tutorial.parser_model`
    REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID`
      OPTIONS(remote_service_type = 'CLOUD_AI_DOCUMENT_V1', document_processor = 'PROCESSOR_ID');

    Reemplaza lo siguiente:

    • LOCATION: la ubicación de la conexión.
    • CONNECTION_ID: el ID de la conexión de BigQuery.

      Cuando veas los detalles de conexión en la consola de Google Cloud, el CONNECTION_ID es el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión, por ejemplo projects/myproject/locations/connection_location/connections/myconnection.

    • PROCESSOR_ID: El ID del procesador de documentos. Para encontrar este valor, consulta los detalles del procesador y, luego, observa la fila ID en la sección Información básica.

Analiza el archivo PDF en fragmentos

Usa el procesador de documentos con la función ML.PROCESS_DOCUMENT para analizar el archivo PDF en fragmentos y, luego, escribe ese contenido en una tabla. La función ML.PROCESS_DOCUMENT muestra los fragmentos de PDF en formato JSON.

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    CREATE or REPLACE TABLE bqml_tutorial.chunked_pdf AS (
      SELECT * FROM ML.PROCESS_DOCUMENT(
      MODEL bqml_tutorial.parser_model,
      TABLE bqml_tutorial.pdf,
      PROCESS_OPTIONS => (JSON '{"layout_config": {"chunking_config": {"chunk_size": 250}}}')
      )
    );

Analiza los datos de los fragmentos de PDF en columnas separadas

Extrae el contenido del PDF y la información de metadatos de los datos JSON que muestra la función ML.PROCESS_DOCUMENT y, luego, escribe ese contenido en una tabla:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente sentencia para analizar el contenido del PDF:

    CREATE OR REPLACE TABLE bqml_tutorial.parsed_pdf AS (
    SELECT
      uri,
      JSON_EXTRACT_SCALAR(json , '$.chunkId') AS id,
      JSON_EXTRACT_SCALAR(json , '$.content') AS content,
      JSON_EXTRACT_SCALAR(json , '$.pageFooters[0].text') AS page_footers_text,
      JSON_EXTRACT_SCALAR(json , '$.pageSpan.pageStart') AS page_span_start,
      JSON_EXTRACT_SCALAR(json , '$.pageSpan.pageEnd') AS page_span_end
    FROM bqml_tutorial.chunked_pdf, UNNEST(JSON_EXTRACT_ARRAY(ml_process_document_result.chunkedDocument.chunks, '$')) json
    );

  3. En el editor de consultas, ejecuta la siguiente sentencia para ver un subconjunto del contenido del PDF analizado:

    SELECT *
    FROM `bqml_tutorial.parsed_pdf`
    ORDER BY id
    LIMIT 5;

    El resultado es similar a este:

    +-----------------------------------+------+------------------------------------------------------------------------------------------------------+-------------------+-----------------+---------------+
    |                uri                |  id  |                                                 content                                              | page_footers_text | page_span_start | page_span_end |
    +-----------------------------------+------+------------------------------------------------------------------------------------------------------+-------------------+-----------------+---------------+
    | gs://mybucket/scf23.pdf           | c1   | •BOARD OF OF FEDERAL GOVERN NOR RESERVE SYSTEM RESEARCH & ANALYSIS                                   | NULL              | 1               | 1             |
    | gs://mybucket/scf23.pdf           | c10  | • In 2022, 20 percent of all families, 14 percent of families in the bottom half of the usual ...    | NULL              | 8               | 9             |
    | gs://mybucket/scf23.pdf           | c100 | The SCF asks multiple questions intended to capture whether families are credit constrained, ...     | NULL              | 48              | 48            |
    | gs://mybucket/scf23.pdf           | c101 | Bankruptcy behavior over the past five years is based on a series of retrospective questions ...     | NULL              | 48              | 48            |
    | gs://mybucket/scf23.pdf           | c102 | # Percentiles of the Distributions of Income and Net Worth                                           | NULL              | 48              | 49            |
    +-----------------------------------+------+------------------------------------------------------------------------------------------------------+-------------------+-----------------+---------------+
     

Crea el modelo remoto para la generación de incorporaciones

Crea un modelo remoto que represente un modelo de generación de incorporación de texto de Vertex AI alojado:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    CREATE OR REPLACE MODEL `bqml_tutorial.embedding_model`
      REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID`
      OPTIONS (ENDPOINT = 'text-embedding-004');

    Reemplaza lo siguiente:

    • LOCATION: la ubicación de la conexión.
    • CONNECTION_ID: el ID de la conexión de BigQuery.

      Cuando veas los detalles de conexión en la consola de Google Cloud, el CONNECTION_ID es el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión, por ejemplo projects/myproject/locations/connection_location/connections/myconnection.

Genera embeddings

Genera incorporaciones para el contenido de PDF analizado y, luego, escríbelas en una tabla:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    CREATE OR REPLACE TABLE `bqml_tutorial.embeddings` AS
    SELECT * FROM ML.GENERATE_EMBEDDING(
      MODEL `bqml_tutorial.embedding_model`,
      TABLE `bqml_tutorial.parsed_pdf`
    );

Ejecuta una búsqueda vectorial en el contenido del PDF analizado.

La siguiente consulta toma la entrada de texto, crea una incorporación para esa entrada con la función ML.GENERATE_EMBEDDING y, luego, usa la función VECTOR_SEARCH para hacer coincidir la incorporación de entrada con las incorporaciones de contenido de PDF más similares. Los resultados son los diez fragmentos de PDF más similares semánticamente a la entrada.

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucción de SQL:

    SELECT query.query, base.id AS pdf_chunk_id, base.content, distance
    FROM
      VECTOR_SEARCH( TABLE `bqml_tutorial.embeddings`,
        'ml_generate_embedding_result',
        (
        SELECT
          ml_generate_embedding_result,
          content AS query
        FROM
          ML.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`,
            ( SELECT 'Did the typical family net worth increase? If so, by how much?' AS content)
          )
        ),
        top_k => 10,
        OPTIONS => '{"fraction_lists_to_search": 0.01}')
    ORDER BY distance DESC;

    El resultado es similar al siguiente:

    +-------------------------------------------------+--------------+------------------------------------------------------------------------------------------------------+---------------------+
    |                query                            | pdf_chunk_id |                                                 content                                              | distance            |
    +-------------------------------------------------+--------------+------------------------------------------------------------------------------------------------------+---------------------+
    | Did the typical family net worth increase? ,... | c9           | ## Assets                                                                                            | 0.31113668174119469 |
    |                                                 |              |                                                                                                      |                     |
    |                                                 |              | The homeownership rate increased slightly between 2019 and 2022, to 66.1 percent. For ...            |                     |
    +-------------------------------------------------+--------------+------------------------------------------------------------------------------------------------------+---------------------+
    | Did the typical family net worth increase? ,... | c50          | # Box 3. Net Housing Wealth and Housing Affordability                                                | 0.30973592073929113 |
    |                                                 |              |                                                                                                      |                     |
    |                                                 |              | For families that own their primary residence ...                                                    |                     |
    +-------------------------------------------------+--------------+------------------------------------------------------------------------------------------------------+---------------------+
    | Did the typical family net worth increase? ,... | c50          | 3 In the 2019 SCF, a small portion of the data collection overlapped with early months of            | 0.29270064592817646 |
    |                                                 |              | the COVID- ...                                                                                       |                     |
    +-------------------------------------------------+--------------+------------------------------------------------------------------------------------------------------+---------------------+
     

Crea el modelo remoto para la generación de texto

Crea un modelo remoto que represente un modelo de generación de texto de Vertex AI alojado:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    CREATE OR REPLACE MODEL `bqml_tutorial.text_model`
      REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID`
      OPTIONS (ENDPOINT = 'gemini-1.5-flash-002');

    Reemplaza lo siguiente:

    • LOCATION: la ubicación de la conexión.
    • CONNECTION_ID: el ID de la conexión de BigQuery.

      Cuando veas los detalles de conexión en la consola de Google Cloud, el CONNECTION_ID es el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión, por ejemplo projects/myproject/locations/connection_location/connections/myconnection.

Genera texto aumentado por resultados de la búsqueda vectorial

Realizar una búsqueda vectorial en las incorporaciones para identificar contenido de PDF similar semánticamente y, luego, usar la función ML.GENERATE_TEXT con los resultados de la búsqueda vectorial para aumentar la entrada de instrucciones y mejorar los resultados de la generación de texto En este caso, la consulta usa información de los fragmentos de PDF para responder una pregunta sobre el cambio en el patrimonio neto de la familia en la última década.

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    SELECT
      ml_generate_text_llm_result AS generated
      FROM
      ML.GENERATE_TEXT( MODEL `bqml_tutorial.text_model`,
        (
        SELECT
        CONCAT( 'Did the typical family net worth change? How does this compare the SCF survey a decade earlier? Be concise and use the following context:',
        STRING_AGG(FORMAT("context: %s and reference: %s", base.content, base.uri), ',\n')) AS prompt,
        FROM
          VECTOR_SEARCH( TABLE
            `bqml_tutorial.embeddings`,
            'ml_generate_embedding_result',
            (
            SELECT
              ml_generate_embedding_result,
              content AS query
            FROM
              ML.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`,
                (
                SELECT
                  'Did the typical family net worth change? How does this compare the SCF survey a decade earlier?' AS content
                )
              )
            ),
            top_k => 10,
            OPTIONS => '{"fraction_lists_to_search": 0.01}')
          ),
          STRUCT(512 AS max_output_tokens, TRUE AS flatten_json_output)
      );

    El resultado es similar al siguiente:

    +-------------------------------------------------------------------------------+
    |               generated                                                       |
    +-------------------------------------------------------------------------------+
    | Between the 2019 and 2022 Survey of Consumer Finances (SCF), real median      |
    | family net worth surged 37 percent to $192,900, and real mean net worth       |
    | increased 23 percent to $1,063,700.  This represents the largest three-year   |
    | increase in median net worth in the history of the modern SCF, exceeding the  |
    | next largest by more than double.  In contrast, between 2010 and 2013, real   |
    | median net worth decreased 2 percent, and real mean net worth remained        |
    | unchanged.                                                                    |
    +-------------------------------------------------------------------------------+
     

Limpia

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.