Analizar PDFs en una canalización de generación aumentada por recuperación

En este tutorial se explica cómo crear una canalización de generación aumentada de recuperación (RAG) basada en contenido PDF analizado.

Los archivos PDF, como los documentos financieros, pueden ser difíciles de usar en las cadenas de RAG debido a su estructura compleja y a la combinación de texto, cifras y tablas. En este tutorial se muestra cómo usar las funciones de BigQuery ML junto con Layout Parser de Document AI para crear una canalización de RAG basada en la información clave extraída de un archivo PDF.

También puedes seguir este tutorial con un cuaderno de Colab Enterprise.

Objetivos

En este tutorial se explican las siguientes tareas:

  • Crear un segmento de Cloud Storage y subir un archivo PDF de muestra.
  • Crear una conexión de recursos de Cloud para poder conectarse a Cloud Storage y Vertex AI desde BigQuery.
  • Crear una tabla de objetos a partir del archivo PDF para que esté disponible en BigQuery.
  • Crear un procesador de Document AI que puedas 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 del PDF en fragmentos y, a continuación, escribir ese contenido en una tabla de BigQuery.
  • Extraer contenido de PDF de los datos JSON devueltos por la función ML.PROCESS_DOCUMENT y, a continuación, escribir ese contenido en una tabla de BigQuery.
  • Crear un modelo remoto que te permita usar el modelo de text-embedding-004generación de embeddings de Vertex AI desde BigQuery.
  • Usar el modelo remoto con la función ML.GENERATE_EMBEDDING para generar incrustaciones a partir del contenido del PDF analizado y, a continuación, escribir esas incrustaciones en una tabla de BigQuery. Las inserciones son representaciones numéricas del contenido del PDF que te permiten realizar búsquedas semánticas y recuperar información del contenido del PDF.
  • Usar la función VECTOR_SEARCH en las inserciones para identificar contenido de PDF similar semánticamente.
  • Crear un modelo remoto que te permita usar un modelo de generación de texto de Gemini desde BigQuery.
  • Realiza la generación aumentada de recuperación (RAG) usando el modelo remoto con la función ML.GENERATE_TEXT para generar texto. Para ello, usa los resultados de la búsqueda vectorial para mejorar la entrada de la petición y los resultados.

Costes

En este documento, se utilizan 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 costes basada en el uso previsto, utiliza la calculadora de precios.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

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

Antes de empezar

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Roles obligatorios

Para completar este tutorial, necesitas los siguientes roles de Gestión de Identidades y Accesos (IAM):

  • Crear segmentos y objetos de Cloud Storage: administrador de Storage (roles/storage.storageAdmin)
  • Crear un procesador de documentos: editor de Document AI (roles/documentai.editor)
  • Crear y usar conjuntos de datos, conexiones y modelos de BigQuery: Administrador de BigQuery (roles/bigquery.admin)
  • Concede permisos a la cuenta de servicio de la conexión: administrador de gestión de identidades y accesos del proyecto (roles/resourcemanager.projectIamAdmin).

Estos roles predefinidos contienen los permisos necesarios para realizar las tareas descritas en este documento. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

  • Crea un conjunto de datos: bigquery.datasets.create
  • Crear, delegar y usar una conexión: bigquery.connections.*
  • Definir la conexión predeterminada: bigquery.config.*
  • Define los permisos de la cuenta de servicio: resourcemanager.projects.getIamPolicy y resourcemanager.projects.setIamPolicy
  • Crea una tabla de objetos: bigquery.tables.create y bigquery.tables.update
  • Crea segmentos y objetos de Cloud Storage: storage.buckets.* y storage.objects.*
  • Crea un modelo y ejecuta la inferencia:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Crea un procesador de documentos:
    • documentai.processors.create
    • documentai.processors.update
    • documentai.processors.delete

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Crear conjunto de datos

Crea un conjunto de datos de BigQuery para almacenar tu modelo de aprendizaje automático.

Consola

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

    Ir a la página de BigQuery

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

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

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

    • En ID del conjunto de datos, introduce bqml_tutorial.

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

    • Deje el resto de los ajustes predeterminados como están y haga clic en Crear conjunto de datos.

bq

Para crear un conjunto de datos, usa el comando bq mk con la marca --location. Para ver una lista completa de los parámetros posibles, consulta la referencia del comando bq mk --dataset.

  1. Crea un conjunto de datos llamado bqml_tutorial con la ubicación de los datos definida como US y la descripción BigQuery ML tutorial dataset:

    bq --location=US mk -d \
     --description "BigQuery ML tutorial dataset." \
     bqml_tutorial

    En lugar de usar la marca --dataset, el comando usa el acceso directo -d. Si omite -d y --dataset, el comando creará un conjunto de datos de forma predeterminada.

  2. Confirma que se ha creado el conjunto de datos:

    bq ls

API

Llama al método datasets.insert con un recurso de conjunto de datos definido.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

BigQuery DataFrames

Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

Crear una conexión

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

Puedes saltarte este paso si tienes una conexión predeterminada configurada o si tienes el rol Administrador de BigQuery.

Crea una conexión de recursos de Cloud para que la use el modelo remoto y obtén la cuenta de servicio de la conexión. Crea la conexión en la misma ubicación que el conjunto de datos que has creado en el paso anterior.

Selecciona una de las opciones siguientes:

Consola

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, haga clic en Añadir datos:

    El elemento de la interfaz de usuario para añadir datos.

    Se abrirá el cuadro de diálogo Añadir datos.

  3. En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Aplicaciones empresariales.

    También puede introducir Vertex AI en el campo Buscar fuentes de datos.

  4. En la sección Fuentes de datos destacadas, haga clic en Vertex AI.

  5. Haz clic en la tarjeta de solución Modelos de Vertex AI: federación de BigQuery.

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

  7. En el campo ID de conexión, introduce un nombre para la conexión.

  8. Haga clic en Crear conexión.

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

  10. 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.

    Haz los cambios siguientes:

    • REGION: tu región de conexión
    • PROJECT_ID: tu ID de proyecto Google Cloud
    • CONNECTION_ID: 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 a la conexión.

    Solución de problemas: si aparece 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. Obtén y copia el ID de la cuenta de servicio para usarlo en un paso posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    El resultado debería ser similar al siguiente:

    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. Para obtener más información, consulta Configurar la autenticación para bibliotecas de 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 la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

Preparar 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 en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

Conceder acceso a la cuenta de servicio

Selecciona una de las opciones siguientes:

Consola

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

    Ir a IAM y administración

  2. Haz clic en Conceder acceso.

    Se abrirá el cuadro de diálogo Añadir principales.

  3. En el campo Nuevos principales, introduce el ID de la cuenta de servicio que has copiado anteriormente.

  4. En el campo Selecciona un rol, elige Document AI y, a continuación, Lector de Document AI.

  5. Haz clic en Añadir otro rol.

  6. En el campo Selecciona un rol, elige Cloud Storage y, a continuación, Visor de objetos de Storage.

  7. Haz clic en Añadir otro rol.

  8. En el campo Selecciona un rol, selecciona Vertex AI y, a continuación, 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
 

Haz los cambios siguientes:

  • PROJECT_NUMBER: tu número de proyecto.
  • MEMBER: el ID de la cuenta de servicio que has copiado anteriormente.

Sube el PDF de muestra a Cloud Storage

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

  1. Descarga el PDF de muestra scf23.pdf en https://www.federalreserve.gov/publications/files/scf23.pdf y haz clic en descargar .
  2. Crea un segmento de Cloud Storage.
  3. Sube el archivo scf23.pdf al segmento.

Crear una tabla de objetos

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

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

    Ir a BigQuery

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

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

    Haz los cambios siguientes:

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

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

    • BUCKET: el contenedor de Cloud Storage que contiene el scf23.pdfarchivo. El valor completo de la opción uri debe ser similar a ['gs://mybucket/scf23.pdf'].

Crear un procesador de documentos

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

Crea el modelo remoto para el procesador de documentos

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

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucció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');

    Haz los cambios siguientes:

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

      Cuando consultas los detalles de la conexión en la consola de Google Cloud , el CONNECTION_ID es el valor de la última sección del ID de conexión completo 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, a continuación, busca la fila ID en la sección Información básica.

Analizar 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, a continuación, escribe ese contenido en una tabla. La función ML.PROCESS_DOCUMENT devuelve los fragmentos del PDF en formato JSON.

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucció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 del PDF en columnas independientes

Extrae el contenido del PDF y la información de los metadatos de los datos JSON devueltos por la función ML.PROCESS_DOCUMENT y, a continuación, escribe ese contenido en una tabla:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucción 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 instrucción para ver un subconjunto del contenido del PDF analizado:

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

    El resultado debería ser similar al siguiente:

    +-----------------------------------+------+------------------------------------------------------------------------------------------------------+-------------------+-----------------+---------------+
    |                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            |
    +-----------------------------------+------+------------------------------------------------------------------------------------------------------+-------------------+-----------------+---------------+
     

Crear el modelo remoto para generar inserciones

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

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

    Ir a BigQuery

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

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

    Haz los cambios siguientes:

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

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

Generar inserciones

Genera las inserciones del contenido del PDF analizado y, a continuación, escríbelas en una tabla:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucció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 texto como entrada, crea una inserción para esa entrada mediante la función ML.GENERATE_EMBEDDING y, a continuación, usa la función VECTOR_SEARCH para asociar la inserción de entrada con las inserciones de contenido de PDF más similares. Los resultados son los diez fragmentos de PDF que son más similares semánticamente a la entrada.

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucción 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 debería ser 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- ...                                                                                       |                     |
    +-------------------------------------------------+--------------+------------------------------------------------------------------------------------------------------+---------------------+
     

Crear 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 Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

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

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

    Haz los cambios siguientes:

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

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

Generar texto aumentado con resultados de búsqueda vectorial

Realiza una búsqueda vectorial en las incrustaciones para identificar contenido de PDF semánticamente similar y, a continuación, usa la función ML.GENERATE_TEXT con los resultados de la búsqueda vectorial para aumentar la entrada de la petición y mejorar los resultados de la generación de texto. En este caso, la consulta usa información de los fragmentos del PDF para responder a una pregunta sobre el cambio en el patrimonio neto familiar durante la última década.

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucció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 debería ser 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.                                                                    |
    +-------------------------------------------------------------------------------+
     

Limpieza

  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.