PDF-Dateien wie Finanzdokumente können aufgrund ihrer komplexen Struktur und der Mischung aus Text, Abbildungen und Tabellen in RAG-Pipelines schwierig zu verwenden sein. In dieser Anleitung erfahren Sie, wie Sie mit der Funktion AI.CHUNK_DOCUMENT eine RAG-Pipeline basierend auf wichtigen Informationen erstellen, die aus einer PDF-Datei extrahiert wurden.
Ziele
In dieser Anleitung werden die folgenden Aufgaben behandelt:- Cloud Storage-Bucket erstellen und Beispiel-PDF-Datei hochladen
- Verwenden Sie die Funktion
AI.CHUNK_DOCUMENT, um die PDF-Inhalte in Blöcke zu parsen und diese Inhalte dann in eine BigQuery-Tabelle zu schreiben. - Generieren Sie Einbettungen aus den aufgeteilten PDF-Inhalten und schreiben Sie diese Einbettungen dann in eine BigQuery-Tabelle. Einbettungen sind numerische Darstellungen des PDF-Inhalts, mit denen Sie eine semantische Suche und einen Abruf des PDF-Inhalts durchführen können.
- Verwenden Sie die Funktion
VECTOR_SEARCHfür die Einbettungen, um semantisch ähnliche PDF-Inhalte zu identifizieren. - Führen Sie RAG (Retrieval Augmented Generation) durch, indem Sie mit der Funktion
AI.GENERATEText generieren und Vektorsuchergebnisse verwenden, um die Prompt-Eingabe zu erweitern und die Ergebnisse zu verbessern.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Cloud de Confiance by S3NS:
- 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.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
Console
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance 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.-
Sie benötigen die folgenden Rollen für das Projekt: Storage-Administrator, Document AI-Bearbeiter, BigQuery-Administrator, Project IAM Admin
Rollen prüfen
-
Rufen Sie in der Cloud de Confiance Console die Seite IAM auf.
IAM aufrufen - Wählen Sie das Projekt aus.
-
Suchen Sie in der Spalte Hauptkonto nach allen Zeilen, in denen Sie oder eine Gruppe, zu der Sie gehören, angegeben sind. Fragen Sie Ihren Administrator, zu welchen Gruppen Sie gehören.
- Prüfen Sie in allen Zeilen, in denen Sie angegeben oder enthalten sind, die Spalte Rolle, um zu sehen, ob die Liste der Rollen die erforderlichen Rollen enthält.
Rollen zuweisen
-
Rufen Sie in der Cloud de Confiance Console die Seite IAM auf.
IAM aufrufen - Wählen Sie das Projekt aus.
- Klicken Sie auf Zugriffsrechte erteilen.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Bei einem Nutzer in einem Mitarbeiteridentitätspool ist dies in der Regel dessen Kennung. Weitere Informationen erhalten Sie unter Mitarbeiteridentitätspool-Nutzer in IAM-Richtlinien darstellen oder von Ihrem Administrator.
- Klicken Sie auf Rolle auswählen und suchen Sie nach der Rolle.
- Klicken Sie auf Weitere Rolle hinzufügen, wenn Sie weitere Rollen zuweisen möchten.
- Klicken Sie auf Speichern.
-
gcloud
-
Installieren Sie die Google Cloud CLI.
-
Konfigurieren Sie die gcloud CLI für die Verwendung Ihrer föderierten Identität.
Weitere Informationen finden Sie unter Mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Cloud de Confiance -Projekt erstellen oder auswählen.
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Informationen zum Zuweisen von Rollen
-
Erstellen Sie ein Projekt in Cloud de Confiance :
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Cloud de Confiance -Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Projekt Cloud de Confiance aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Cloud de Confiance .
-
Prüfen Sie, ob die Abrechnung für Ihr Cloud de Confiance -Projekt aktiviert ist.
Aktivieren Sie die BigQuery API, die BigQuery Connection API, die Vertex AI API, die Document AI API und die Cloud Storage API, falls sie noch nicht aktiviert sind:
Erforderliche Rollen zum Aktivieren von APIs
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable bigquery.googleapis.com
bigqueryconnection.googleapis.com aiplatform.googleapis.com documentai.googleapis.com storage.googleapis.com -
Weisen Sie Ihrem Nutzerkonto Rollen zu. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus:
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
Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Projekt-ID.USER_IDENTIFIER: Die Kennung für Ihr Nutzerkonto. -Konto. Beispiele finden Sie unter Workforce-Pool-Nutzer in IAM-Richtlinien darstellen.ROLE: Die IAM-Rolle, die Sie Ihrem Nutzerkonto zuweisen.
Dataset erstellen
Wählen Sie eine der folgenden Optionen aus, um ein BigQuery-Dataset zu erstellen:
Console
Rufen Sie in der Cloud de Confiance Console die Seite BigQuery auf.
Klicken Sie im linken Bereich auf Explorer:

Wenn der linke Bereich nicht angezeigt wird, klicken Sie auf Linken Bereich maximieren, um ihn zu öffnen.
Maximieren Sie im Explorer Ihr Projekt und klicken Sie dann auf Datasets.
Klicken Sie auf der Seite Datasets auf Dataset erstellen.
Führen Sie im Bereich Dataset erstellen die folgenden Schritte aus:
Geben Sie unter Dataset-ID
bqml_tutorialein.Wählen Sie unter Speicherort der Daten die Option USA aus.
Übernehmen Sie die anderen Standardeinstellungen.
Klicken Sie auf Dataset erstellen.
bq
Wenn Sie ein neues Dataset erstellen möchten, verwenden Sie den Befehl bq mk --dataset.
Erstellen Sie ein Dataset mit dem Namen
bqml_tutorialund dem DatenspeicherortUS:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Prüfen Sie, ob das Dataset erstellt wurde:
bq ls
API
Rufen Sie die Methode datasets.insert mit einer definierten Dataset-Ressource auf:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Beispiel-PDF in Cloud Storage hochladen
So laden Sie die Beispiel-PDF-Datei in Cloud Storage hoch:
- Laden Sie die Beispiel-PDF
scf23.pdfherunter, indem Sie https://www.federalreserve.gov/publications/files/scf23.pdf aufrufen und auf „Herunterladen“ klicken. - Cloud Storage-Bucket erstellen
- Laden Sie die Datei
scf23.pdfin den Bucket hoch.
PDF-Datei in Blöcke parsen
Verwenden Sie den Dokumentprozessor mit der Funktion AI.CHUNK_DOCUMENT, um die PDF-Datei in Blöcke zu parsen, und schreiben Sie diesen Inhalt dann in eine Tabelle:
Rufen Sie in der Cloud de Confiance Console die Seite BigQuery auf.
Führen Sie im Abfrageeditor folgende Abfrage aus:
CREATE or REPLACE TABLE bqml_tutorial.chunked_pdf AS ( SELECT * FROM AI.CHUNK_DOCUMENT('gs://BUCKET_NAME/scf23.pdf', chunk_size => 250) );
Führen Sie im Abfrageeditor die folgende Abfrage aus, um eine Teilmenge des geparsten PDF-Inhalts aufzurufen:
SELECT chunk_id, start_page, end_page, content FROM `bqml_tutorial.chunked_pdf` ORDER BY chunk_id LIMIT 3;
Die Ausgabe sieht etwa so aus:
+----------+------------+----------+-------------------------------------------+ | 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... | +----------+------------+----------+-------------------------------------------+
Einbettungen generieren
Generieren Sie Einbettungen für den geparsten PDF-Inhalt und schreiben Sie sie dann in eine Tabelle:
Rufen Sie in der Cloud de Confiance Console die Seite BigQuery auf.
Führen Sie im Abfrageeditor folgende Abfrage aus:
CREATE OR REPLACE TABLE `bqml_tutorial.embeddings` AS ( SELECT *, AI.EMBED(content, endpoint => 'text-embedding-005').result AS embedding FROM bqml_tutorial.chunked_pdf );
Vektorsuche ausführen
Führen Sie eine Vektorsuche für den geparsten PDF-Inhalt aus.
Die folgende Abfrage nimmt eine Texteingabe entgegen, erstellt mit der Funktion AI.EMBED eine Einbettung für diese Eingabe und verwendet dann die Funktion VECTOR_SEARCH, um die Eingabeeinbettung mit den ähnlichsten PDF-Inhaltseinbettungen abzugleichen. Die Ergebnisse sind die zehn PDF-Blöcke, die am stärksten mit Änderungen des Nettovermögens von Familien zusammenhängen.
Rufen Sie die Seite BigQuery auf.
Führen Sie im Abfrageeditor folgende SQL-Anweisung aus:
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;
Die Ausgabe sieht etwa so aus:
+----------+----------+------------+----------+-----------------------------------+ | 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... | +----------+----------+------------+----------+-----------------------------------+
Durch Vektorsuchergebnisse erweiterten Text generieren
Führen Sie eine Vektorsuche für die Einbettungen durch, um semantisch ähnliche PDF-Inhalte zu identifizieren. Verwenden Sie dann die Funktion AI.GENERATE mit den Vektorsuchergebnissen, um die Prompt-Eingabe zu erweitern und die Ergebnisse der Textgenerierung zu verbessern. In diesem Fall verwendet die Abfrage Informationen aus den PDF-Blöcken, um eine Frage zur Veränderung des Nettovermögens von Familien im letzten Jahrzehnt zu beantworten.
Rufen Sie in der Cloud de Confiance Console die Seite BigQuery auf.
Führen Sie im Abfrageeditor folgende Abfrage aus:
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}')
Die Ausgabe sieht in etwa so aus:
+-------------------------------------------------------------------------+ | 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%. | +-------------------------------------------------------------------------+
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Projekt löschen
Cloud de Confiance -Projekt löschen:
gcloud projects delete PROJECT_ID