Los archivos PDF, como los documentos financieros, pueden ser difíciles de usar en las canalizaciones de RAG debido a su estructura compleja y a la combinación de texto, figuras y tablas. En este instructivo, se muestra cómo usar la
función AI.CHUNK_DOCUMENT
para compilar una canalización de RAG basada en la información clave extraída de un archivo PDF.
Objetivos
En este instructivo, se abarcan las siguientes tareas:- Crear un bucket de Cloud Storage y subir un archivo PDF de muestra
- Usa la
función
AI.CHUNK_DOCUMENTpara analizar el contenido del PDF en fragmentos y, luego, escribir ese contenido en una tabla de BigQuery. - Generar embeddings a partir del contenido del PDF dividido y, luego, escribirlos en una tabla de BigQuery Los embeddings son representaciones numéricas del contenido del PDF que te permiten realizar búsquedas semánticas y recuperaciones en el contenido del PDF.
- Usa la
función
VECTOR_SEARCHen los embeddings para identificar contenido de PDF semánticamente similar. - Realizar la generación mejorada por recuperación (RAG) con la
función
AI.GENERATEpara generar texto, usando los resultados de la búsqueda de vectores 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.
- Gemini Enterprise Agent Platform: You incur costs for calls to Agent Platform 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.
Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.
Antes de empezar
Console
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery, BigQuery Connection, Vertex AI, Document AI, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery, BigQuery Connection, Vertex AI, Document AI, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Asegúrate de tener los siguientes roles en el proyecto: Administrador de Storage, Editor de Document AI, Administrador de BigQuery, Administrador de IAM del proyecto
Verifica los roles
-
En la consola de Google Cloud , dirígete a la página IAM.
Ir a IAM - Selecciona el proyecto.
-
En la columna Principal, busca todas las filas que te identifiquen a ti o a un grupo en el que se te incluya. Para saber en qué grupos estás incluido, comunícate con tu administrador.
- Para todas las filas en las que se te especifique o se te incluya, verifica la columna Rol para ver si la lista de roles incluye los roles necesarios.
Otorga los roles
-
En la consola de Google Cloud , dirígete a la página IAM.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Otorgar acceso.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Esta suele ser la dirección de correo electrónico de una Cuenta de Google.
- Haz clic en Selecciona un rol y, luego, busca el rol.
- Para otorgar roles adicionales, haz clic en Agregar otro rol y agrega uno más.
- Haz clic en Guardar.
-
gcloud
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un proyecto de Google Cloud .
Roles necesarios para seleccionar o crear un proyecto
- Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crea un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos
(
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un proyecto de Google Cloud :
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto de Google Cloud que estás creando. -
Selecciona el proyecto de Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita las APIs de BigQuery, BigQuery Connection, Vertex AI, Document AI y Cloud Storage, si aún no están habilitadas:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.gcloud services enable bigquery.googleapis.com
bigqueryconnection.googleapis.com aiplatform.googleapis.com documentai.googleapis.com storage.googleapis.com -
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un proyecto de Google Cloud .
Roles necesarios para seleccionar o crear un proyecto
- Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crea un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos
(
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un proyecto de Google Cloud :
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto de Google Cloud que estás creando. -
Selecciona el proyecto de Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita las APIs de BigQuery, BigQuery Connection, Vertex AI, Document AI y Cloud Storage, si aún no están habilitadas:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.gcloud services enable bigquery.googleapis.com
bigqueryconnection.googleapis.com aiplatform.googleapis.com documentai.googleapis.com storage.googleapis.com -
Otorga roles a tu cuenta de usuario. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM:
roles/storage.admin, roles/documentai.editor, roles/bigquery.admin, roles/resourcemanager.projectIamAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoUSER_IDENTIFIER: Es el identificador de tu cuenta de usuario de . Por ejemplo,myemail@example.com. cuenta deROLE: Es el rol de IAM que otorgas a tu cuenta de usuario.
Crea un conjunto de datos
Para crear un conjunto de datos de BigQuery, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorar:

Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En Explorador, expande tu proyecto y, luego, haz clic en Conjuntos de datos.
En la página Conjuntos de datos, haz clic en Crear conjunto de datos.
En el panel Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, ingresa
bqml_tutorial.En Ubicación de los datos, selecciona US.
Deja el resto de la configuración predeterminada como está.
Haz clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos nuevo, usa el
comando bq mk --dataset.
Crea un conjunto de datos llamado
bqml_tutorialcon la ubicación de los datos establecida enUS:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Confirma que se haya 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" } }
Sube el documento PDF de muestra a Cloud Storage
Para subir el PDF de muestra a Cloud Storage, sigue estos pasos:
- Descarga el PDF de muestra de
scf23.pdf. Para ello, ve a https://www.federalreserve.gov/publications/files/scf23.pdf y haz clic en Descargar . - Crea buckets de Cloud Storage.
- Sube el archivo
scf23.pdfal bucket.
Analiza el archivo PDF en fragmentos
Usa el procesador de documentos con la función AI.CHUNK_DOCUMENT para analizar el
archivo PDF en fragmentos y, luego, escribe ese contenido en una tabla:
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente declaración:
CREATE or REPLACE TABLE bqml_tutorial.chunked_pdf AS ( SELECT * FROM AI.CHUNK_DOCUMENT('gs://BUCKET_NAME/scf23.pdf', chunk_size => 250) );
En el editor de consultas, ejecuta la siguiente consulta para ver un subconjunto del contenido del PDF analizado:
SELECT chunk_id, start_page, end_page, content FROM `bqml_tutorial.chunked_pdf` ORDER BY chunk_id LIMIT 3;
El resultado es similar a lo siguiente:
+----------+------------+----------+-------------------------------------------+ | chunk_id | start_page | end_page | content | +----------+------------+----------+-------------------------------------------+ | 1 | 1 | 1 | OF NORS. • BOARD OF GOVERNO FEDERAL | | | | | RESERVE SYSTEM RESEARCH & ANALYSIS | | 2 | 1 | 7 | # Changes in U.S. Family Finances from | | | | | 2019 to 2022 | | | | | | | | | | Evidence from the Survey of Consumer... | | 3 | 3 | 5 | # Changes in U.S. Family Finances from | | | | | 2019 to 2022 | | | | | | | | | | ## Contents... | +----------+------------+----------+-------------------------------------------+
Genera embeddings
Genera embeddings para el contenido del PDF analizado y, luego, escríbelos en una tabla:
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente declaración:
CREATE OR REPLACE TABLE `bqml_tutorial.embeddings` AS ( SELECT *, AI.EMBED(content, endpoint => 'text-embedding-005').result AS embedding FROM bqml_tutorial.chunked_pdf );
Ejecuta una búsqueda de vectores
Ejecutar una búsqueda de vectores 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 AI.EMBED 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 relacionados
con los cambios en el patrimonio neto familiar.
Ve a la página de BigQuery.
En el editor de consultas, ejecuta la siguiente instrucción de SQL:
SELECT distance, base.chunk_id AS chunk_id, base.start_page AS start_page, base.end_page AS end_page, base.content FROM VECTOR_SEARCH( TABLE `bqml_tutorial.embeddings`, 'embedding', query_value => AI.EMBED( 'Did the typical family net worth increase? If so, by how much?', endpoint => 'text-embedding-005').result, top_k => 3, OPTIONS => '{"fraction_lists_to_search": 0.01}') ORDER BY distance DESC;
El resultado es similar a lo siguiente:
+----------+----------+------------+----------+-----------------------------------+ | distance | chunk_id | start_page | end_page | content | +----------+----------+------------+----------+-----------------------------------+ | 0.608587 | 25 | 17 | 18 | # Net Worth | | | | | | | | | | | | 18 Between the first quarter of | | | | | | 2019 and the first quarter of... | +----------+----------+------------+----------+-----------------------------------+ | 0.606387 | 29 | 19 | 21 | ## Net Worth | | | | | | | | | | | | ## Net Worth by Family | | | | | | Characteristics... | +----------+----------+------------+----------+-----------------------------------+ | 0.599438 | 23 | 17 | 21 | # Net Worth | | | | | | | | | | | | The net improvements in... | +----------+----------+------------+----------+-----------------------------------+
Genera texto aumentado por resultados de la búsqueda vectorial
Realizar una búsqueda de vectores en los embeddings para identificar contenido de PDF
semánticamente similar y, luego, usar la función AI.GENERATE con los resultados de la búsqueda de vectores
para aumentar la entrada de la instrucció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
una pregunta sobre el cambio en el patrimonio neto familiar durante la última década.
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente declaración:
SELECT AI.GENERATE( 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", base.content), ',\n') ) ).result AS response FROM VECTOR_SEARCH( TABLE `bqml_tutorial.embeddings`, 'embedding', query_value => AI.EMBED( 'Did the typical family net worth increase? If so, by how much?', endpoint => 'text-embedding-005').result, top_k => 3, OPTIONS => '{"fraction_lists_to_search": 0.01}')
El resultado es similar al siguiente:
+-------------------------------------------------------------------------+ | response | +-------------------------------------------------------------------------+ | Yes, the typical family net worth changed significantly. Between 2019 | | and 2022, real median net worth surged by 37% to $192,900. | | | | This growth contrasts sharply with the period a decade earlier. Between | | the 2010 and 2013 SCF surveys, real median net worth actually decreased | | by 2%. | +-------------------------------------------------------------------------+
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
Borra un proyecto de Google Cloud :
gcloud projects delete PROJECT_ID
¿Qué sigue?
- Obtén más información sobre los embeddings y Vector Search.
- Obtén más información para realizar búsquedas semánticas y RAG.