ניתוח קובצי PDF בצינור של Retrieval-Augmented Generation (יצירה משולבת-אחזור, RAG)
במדריך הזה מוסבר איך ליצור צינור עיבוד של יצירת תוכן משופרת באחזור (RAG) על סמך תוכן PDF מנותח.
יכול להיות שיהיה קשה להשתמש בקובצי PDF, כמו מסמכים פיננסיים, בצינורות RAG בגלל המבנה המורכב שלהם והשילוב של טקסט, נתונים וטבלאות. במדריך הזה מוסבר איך להשתמש ביכולות של BigQuery ML בשילוב עם כלי ניתוח הפריסה של Document AI כדי ליצור צינור RAG שמבוסס על מידע מרכזי שחולץ מקובץ PDF.
אפשר גם לבצע את המדריך הזה באמצעות notebook של Colab Enterprise.
מטרות
במדריך הזה מוסבר איך לבצע את הפעולות הבאות:
- יצירת קטגוריה של Cloud Storage והעלאה של קובץ PDF לדוגמה.
- יצירת חיבור למשאב Cloud כדי שתוכלו להתחבר ל-Cloud Storage ול-Vertex AI מ-BigQuery.
- יצירת טבלת אובייקטים על קובץ ה-PDF כדי להפוך את קובץ ה-PDF לזמין ב-BigQuery.
- יצירת מעבד Document AI שאפשר להשתמש בו כדי לנתח את קובץ ה-PDF.
- יצירת מודל מרוחק שמאפשר להשתמש ב-Document AI API כדי לגשת למעבד המסמכים מ-BigQuery.
- שימוש במודל מרוחק עם הפונקציה
ML.PROCESS_DOCUMENTכדי לנתח את התוכן של קובץ ה-PDF לחלקים, ואז לכתוב את התוכן הזה בטבלה ב-BigQuery. - שליפת תוכן PDF מנתוני ה-JSON שמוחזרים על ידי הפונקציה
ML.PROCESS_DOCUMENT, ואז כתיבת התוכן הזה לטבלה ב-BigQuery. - יצירת מודל מרוחק שמאפשר להשתמש במודל ליצירת הטבעות (embeddings) של Vertex AI
text-embedding-004מ-BigQuery. - שימוש במודל מרוחק עם הפונקציה
AI.GENERATE_EMBEDDINGכדי ליצור הטמעות מתוכן ה-PDF המנותח, ואז כתיבת ההטמעות האלה לטבלה ב-BigQuery. הטמעות הן ייצוגים מספריים של תוכן ה-PDF שמאפשרים לכם לבצע חיפוש סמנטי ואחזור של תוכן ה-PDF. - שימוש בפונקציה
VECTOR_SEARCHבהטמעות כדי לזהות תוכן PDF דומה מבחינה סמנטית. - יצירת מודל מרוחק שמאפשר להשתמש במודל ליצירת טקסט של Gemini מ-BigQuery.
- לבצע יצירה משופרת באמצעות אחזור (RAG) באמצעות המודל המרוחק עם הפונקציה
AI.GENERATE_TEXTכדי ליצור טקסט, תוך שימוש בתוצאות של חיפוש וקטורי כדי לשפר את קלט ההנחיה ואת התוצאות.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של 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.
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אפשר להשתמש במחשבון התמחור.
מידע נוסף זמין בדפי התמחור הבאים:
לפני שמתחילים
-
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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
התפקידים הנדרשים
כדי להפעיל את המדריך הזה, אתם צריכים את התפקידים הבאים בניהול הזהויות והרשאות הגישה (IAM):
- יצירת קטגוריות ואובייקטים ב-Cloud Storage: אדמין אחסון (
roles/storage.storageAdmin) - יצירת מעבד מסמכים: Document AI Editor
(
roles/documentai.editor) - יצירה ושימוש במערכי נתונים, בחיבורים ובמודלים של BigQuery:
ניהול BigQuery (
roles/bigquery.admin) - הענקת הרשאות לחשבון השירות של החיבור: אדמין IAM של פרויקט (
roles/resourcemanager.projectIamAdmin)
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לביצוע המשימות שמתוארות במסמך הזה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
- יצירת מערך נתונים:
bigquery.datasets.create - יצירה, הקצאה ושימוש בחיבור:
bigquery.connections.* - הגדרת החיבור המוגדר כברירת מחדל:
bigquery.config.* - מגדירים את ההרשאות לחשבון השירות:
resourcemanager.projects.getIamPolicyו-resourcemanager.projects.setIamPolicy - יצירת טבלת אובייקטים:
bigquery.tables.createו-bigquery.tables.update - יצירת קטגוריות ואובייקטים ב-Cloud Storage:
storage.buckets.*ו-storage.objects.* - יצירת מודל והרצת הסקה:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
- יוצרים מעבד מסמכים:
documentai.processors.createdocumentai.processors.updatedocumentai.processors.delete
יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
יצירת מערך נתונים
יוצרים מערך נתונים ב-BigQuery לאחסון מודל ה-ML.
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית Explorer, לוחצים על שם הפרויקט.
לוחצים על הצגת פעולות > יצירת מערך נתונים.
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID (מזהה מערך הנתונים), מזינים
bqml_tutorial.בקטע Location type, בוחרים באפשרות במספר אזורים ואז באפשרות US (multiple regions in United States).
משאירים את שאר הגדרות ברירת המחדל כמו שהן ולוחצים על Create dataset (יצירת מערך נתונים).
BQ
כדי ליצור מערך נתונים חדש, משתמשים בפקודה bq mk עם הדגל --location. רשימה מלאה של הפרמטרים האפשריים זמינה במאמר בנושא הפקודה bq mk --dataset.
יוצרים מערך נתונים בשם
bqml_tutorialעם מיקום הנתונים שמוגדר ל-USותיאור שלBigQuery ML tutorial dataset:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
במקום להשתמש בדגל
--dataset, הפקודה משתמשת בקיצור הדרך-d. אם לא מציינים את-dואת--dataset, ברירת המחדל של הפקודה היא יצירת מערך נתונים.בודקים שמערך הנתונים נוצר:
bq ls
API
מבצעים קריאה לשיטה datasets.insert עם משאב מוגדר של מערך נתונים.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
יצירת חיבור
יוצרים חיבור למשאב בענן ומקבלים את חשבון השירות של החיבור. יוצרים את החיבור באותו מיקום.
אם כבר הגדרתם חיבור ברירת מחדל או שיש לכם את תפקיד האדמין ב-BigQuery, אתם יכולים לדלג על השלב הזה.
בוחרים באחת מהאפשרויות הבאות:המסוף
עוברים לדף BigQuery.
בחלונית השמאלית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer מרחיבים את שם הפרויקט ואז לוחצים על Connections.
בדף Connections (חיבורים), לוחצים על Create connection (יצירת חיבור).
בקטע Connection type (סוג החיבור), בוחרים באפשרות Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource) (מודלים מרוחקים של Vertex AI, פונקציות מרוחקות, BigLake ו-Spanner (משאב בענן)).
בשדה מזהה החיבור, מזינים שם לחיבור.
בקטע Location type, בוחרים מיקום לחיבור. החיבור צריך להיות ממוקם יחד עם המשאבים האחרים שלכם, כמו מערכי נתונים.
לוחצים על יצירת קישור.
לוחצים על מעבר לחיבור.
בחלונית Connection info (פרטי התחברות), מעתיקים את מזהה חשבון השירות כדי להשתמש בו בשלב מאוחר יותר.
BQ
בסביבת שורת פקודה, יוצרים חיבור:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
הפרמטר
--project_idמבטל את פרויקט ברירת המחדל.מחליפים את מה שכתוב בשדות הבאים:
-
REGION: אזור החיבור -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
CONNECTION_ID: מזהה לחיבור
כשיוצרים משאב חיבור, מערכת BigQuery יוצרת חשבון שירות ייחודי ומקשרת אותו לחיבור.
פתרון בעיות: אם מופיעה שגיאת החיבור הבאה, צריך לעדכן את Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
-
מאחזרים ומעתיקים את מזהה חשבון השירות כדי להשתמש בו בשלב מאוחר יותר:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
הפלט אמור להיראות כך:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Terraform
משתמשים במשאב google_bigquery_connection.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
בדוגמה הבאה נוצר חיבור למשאב Cloud בשם my_cloud_resource_connection באזור US:
כדי להחיל את ההגדרות של Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
הענקת גישה לחשבון השירות
בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף IAM & Admin.
לוחצים על Grant Access.
תיבת הדו-שיח Add principals נפתחת.
בשדה New principals, מזינים את מזהה חשבון השירות שהעתקתם קודם.
בשדה Select a role, בוחרים באפשרות Document AI ואז באפשרות Document AI Viewer.
לוחצים על הוספת תפקיד נוסף.
בשדה Select a role, בוחרים באפשרות Cloud Storage ואז באפשרות Storage Object Viewer.
לוחצים על הוספת תפקיד נוסף.
בשדה Select a role (בחירת תפקיד), בוחרים באפשרות Vertex AI ואז באפשרות Vertex AI User (משתמש Vertex AI).
לוחצים על Save.
gcloud
משתמשים בפקודה 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
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט. -
MEMBER: המזהה של חשבון השירות שהעתקתם קודם.
העלאת קובץ ה-PDF לדוגמה ל-Cloud Storage
כדי להעלות את קובץ ה-PDF לדוגמה ל-Cloud Storage:
- מורידים את קובץ ה-PDF לדוגמה בכתובת https://www.federalreserve.gov/publications/files/scf23.pdf ולוחצים על סמל ההורדה .
scf23.pdf - יצירת קטגוריה של Cloud Storage
- מעלים את הקובץ
scf23.pdfלקטגוריה.
יצירת טבלת אובייקטים
יוצרים טבלת אובייקטים על קובץ ה-PDF ב-Cloud Storage:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.pdf` WITH CONNECTION `LOCATION.CONNECTION_ID` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://BUCKET/scf23.pdf']);
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: מיקום החיבור. -
CONNECTION_ID: המזהה של החיבור ל-BigQuery.כשמציגים את פרטי החיבור במסוף Google Cloud , הערך
CONNECTION_IDהוא הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור, לדוגמהprojects/myproject/locations/connection_location/connections/myconnection. -
BUCKET: קטגוריית Cloud Storage שמכילה את קובץscf23.pdf. הערך המלא של האפשרותuriצריך להיראות בערך כמו['gs://mybucket/scf23.pdf'].
-
יצירת מעבד מסמכים
יוצרים מעבד מסמכים על סמך המעבד Layout Parser בus מספר אזורים.
יצירת המודל המרוחק למעבד המסמכים
יוצרים מודל מרוחק כדי לגשת למעבד Document AI:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
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');
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: מיקום החיבור. -
CONNECTION_ID: המזהה של החיבור ל-BigQuery.כשמציגים את פרטי החיבור במסוף Google Cloud , הערך
CONNECTION_IDהוא הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור, לדוגמהprojects/myproject/locations/connection_location/connections/myconnection. -
PROCESSOR_ID: מזהה מעבד המסמכים. כדי למצוא את הערך הזה, צופים בפרטי המעבד ואז מחפשים את השורה מזהה בקטע מידע בסיסי.
-
ניתוח קובץ ה-PDF לחלקים
משתמשים במעבד המסמכים עם הפונקציה ML.PROCESS_DOCUMENT כדי לנתח את קובץ ה-PDF לחלקים, ואז כותבים את התוכן הזה בטבלה. הפונקציה ML.PROCESS_DOCUMENT מחזירה את חלקי ה-PDF בפורמט JSON.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
CREATE or REPLACE TABLE
bqml_tutorial.chunked_pdfAS ( SELECT * FROM ML.PROCESS_DOCUMENT( MODELbqml_tutorial.parser_model, TABLEbqml_tutorial.pdf, PROCESS_OPTIONS => (JSON '{"layout_config": {"chunking_config": {"chunk_size": 250}}}') ) );
ניתוח נתוני מקטע PDF לעמודות נפרדות
מחלקים את תוכן ה-PDF ואת פרטי המטא-נתונים מנתוני ה-JSON שמוחזרים על ידי הפונקציה ML.PROCESS_DOCUMENT, ואז כותבים את התוכן הזה לטבלה:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה כדי לנתח את תוכן ה-PDF:
CREATE OR REPLACE TABLE
bqml_tutorial.parsed_pdfAS ( 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 FROMbqml_tutorial.chunked_pdf, UNNEST(JSON_EXTRACT_ARRAY(ml_process_document_result.chunkedDocument.chunks, '$')) json );בעורך השאילתות, מריצים את ההצהרה הבאה כדי לראות קבוצת משנה של תוכן ה-PDF המנותח:
SELECT * FROM `bqml_tutorial.parsed_pdf` ORDER BY id LIMIT 5;
הפלט אמור להיראות כך:
+-----------------------------------+------+------------------------------------------------------------------------------------------------------+-------------------+-----------------+---------------+ | 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 | +-----------------------------------+------+------------------------------------------------------------------------------------------------------+-------------------+-----------------+---------------+
יצירת מודל מרוחק ליצירת הטמעה
יוצרים מודל מרוחק שמייצג מודל אירוח של Vertex AI ליצירת הטמעות טקסט:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
CREATE OR REPLACE MODEL `bqml_tutorial.embedding_model` REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID` OPTIONS (ENDPOINT = 'text-embedding-005');
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: מיקום החיבור. -
CONNECTION_ID: המזהה של החיבור ל-BigQuery.כשמציגים את פרטי החיבור במסוף Google Cloud , הערך
CONNECTION_IDהוא הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור, לדוגמהprojects/myproject/locations/connection_location/connections/myconnection.
-
יצירת הטמעות
יוצרים הטבעות לתוכן ה-PDF שנותח ואז כותבים אותן לטבלה:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
CREATE OR REPLACE TABLE `bqml_tutorial.embeddings` AS SELECT * FROM AI.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`, TABLE `bqml_tutorial.parsed_pdf` );
הפעלת חיפוש וקטורי
מריצים חיפוש וקטורי על תוכן ה-PDF שנותח.
השאילתה הבאה מקבלת קלט טקסט, יוצרת הטמעה של הקלט באמצעות הפונקציה AI.GENERATE_EMBEDDING, ואז משתמשת בפונקציה VECTOR_SEARCH כדי להתאים את הטמעת הקלט להטמעות של תוכן PDF הכי דומות. התוצאות הן עשרת חלקי ה-PDF הכי דומים מבחינה סמנטית לקלט.
עוברים לדף BigQuery.
בעורך השאילתות, מריצים את הצהרת ה-SQL הבאה:
SELECT query.query, base.id AS pdf_chunk_id, base.content, distance FROM VECTOR_SEARCH( TABLE `bqml_tutorial.embeddings`, 'embedding', ( SELECT embedding, content AS query FROM AI.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;
הפלט אמור להיראות כך:
+-------------------------------------------------+--------------+------------------------------------------------------------------------------------------------------+---------------------+ | 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- ... | | +-------------------------------------------------+--------------+------------------------------------------------------------------------------------------------------+---------------------+
יצירת המודל המרוחק ליצירת טקסט
יוצרים מודל מרוחק שמייצג מודל אירוח של Vertex AI ליצירת טקסט:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
CREATE OR REPLACE MODEL `bqml_tutorial.text_model` REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID` OPTIONS (ENDPOINT = 'gemini-2.0-flash-001');
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: מיקום החיבור. -
CONNECTION_ID: המזהה של החיבור ל-BigQuery.כשמציגים את פרטי החיבור במסוף Google Cloud , הערך
CONNECTION_IDהוא הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור, לדוגמהprojects/myproject/locations/connection_location/connections/myconnection.
-
יצירת טקסט עם תוצאות חיפוש וקטוריות
מבצעים חיפוש וקטורי בהטמעות כדי לזהות תוכן PDF דומה מבחינה סמנטית, ואז משתמשים בפונקציה AI.GENERATE_TEXT עם תוצאות החיפוש הווקטורי כדי להוסיף מידע לקלט של ההנחיה ולשפר את תוצאות יצירת הטקסט. במקרה הזה, השאילתה משתמשת במידע מהחלקים של ה-PDF כדי לענות על שאלה לגבי השינוי בשווי הנקי של המשפחה בעשור האחרון.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
SELECT result AS generated FROM AI.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`, 'embedding', ( SELECT embedding, content AS query FROM AI.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) );
הפלט אמור להיראות כך:
+-------------------------------------------------------------------------------+ | 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. | +-------------------------------------------------------------------------------+
הסרת המשאבים
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.