ข้อมูลเชิงลึกจาก LLM ในสถานที่: BigQuery และ Gemini สำหรับการวิเคราะห์ Structured Data & Unstructured Data

1. บทนำ

ชุดข้อมูลขนาดใหญ่มีข้อมูลเชิงลึกที่มีคุณค่า แต่การดึงความเข้าใจที่มีความหมายอาจเป็นงานที่ท้าทาย เครื่องมือวิเคราะห์แบบเดิมๆ นั้นมักจะให้คำอธิบายที่เหมือนมนุษย์ไม่ละเอียดซึ่งช่วยให้เราเข้าใจเรื่องราวจากข้อมูลได้อย่างแท้จริง คลังข้อมูลกำลังเก็บข้อมูลที่ไม่มีโครงสร้างมากขึ้นเรื่อยๆ แต่ข้อมูลนั้นก็ไม่อาจเข้าถึงได้เสมอไปเพื่อให้ได้ข้อมูลเชิงลึก ข้อความ รูปภาพ และวิดีโอที่ไม่มีโครงสร้างมีข้อมูลที่เป็นประโยชน์ในการพัฒนาธุรกิจของคุณ LLM นำเสนอวิธีการใหม่ที่มีประสิทธิภาพในการทำความเข้าใจข้อมูลของคุณพร้อมคำอธิบาย การวิเคราะห์ความเห็น การตรวจจับวัตถุ และอื่นๆ การเกิดขึ้นของโมเดลแบบหลายโมดัล (และความสามารถในการเก็บข้อมูลออบเจ็กต์ เช่น รูปภาพและวิดีโอใน BigQuery ผ่านตารางออบเจ็กต์) การผสานรวม LLM ที่มีประสิทธิภาพ เช่น Gemini 1.0 Pro (สำหรับการวิเคราะห์แบบข้อความ) และ Gemini 1.0 Pro Vision (สำหรับการวิเคราะห์ข้อความและรูปภาพ/วิดีโอ) ด้วย BigQuery จะช่วยพลิกโฉมวิธีการวิเคราะห์ข้อมูล

ใน Codelab นี้ เราจะมาดู 2 วิธีต่อไปนี้ในการดึงข้อมูลเชิงลึก LLM จากข้อมูลองค์กรของคุณ และปรับขนาดข้อมูลเชิงลึกเหล่านั้นเป็นหลายพันแถวภายใน BigQuery

วิธีที่ 1: การเรียกใช้โมเดลระยะไกล

  • เรียก Gemini 1.0 Pro จากภายใน BigQuery โดยใช้ ML.GENERATE_TEXT ในการค้นหา SELECT
  • ใช้วิธีการนี้เมื่อรูปแบบพร้อมใช้งานในโมเดลระยะไกลใน BigQuery อยู่แล้ว และคุณต้องการใช้งานรูปแบบดังกล่าวได้ทันที ตรวจสอบสถานะของโมเดลที่ต้องการใช้ในเอกสารประกอบของ BigQuery

วิธีที่ 2: การใช้ฟังก์ชันระยะไกล

สิ่งที่คุณจะสร้าง

  • สำหรับเมธอดการเรียกใช้โมเดลระยะไกล คุณจะสร้างตัวสรุปตำแหน่งสำหรับชุดข้อมูลหนังสือที่เก็บถาวรในอินเทอร์เน็ต (ที่พร้อมใช้งานแบบสาธารณะใน BigQuery) ด้วยการเรียกใช้โมเดลระยะไกลสำหรับ Gemini 1.0 Pro ในโครงสร้าง ML.GENERATE_TEXT ใน BigQuery

แผนภาพสำหรับการเรียกใช้โมเดลระยะไกล

  • สำหรับเมธอดการใช้งานฟังก์ชันระยะไกล คุณจะได้สร้างโปรแกรมตรวจสอบอิมเมจสำหรับตรวจสอบความถูกต้องของรูปภาพทดสอบกับอิมเมจพื้นฐาน สำหรับกรณีนี้ คุณจะสร้างชุดข้อมูลที่มีภาพหน้าจอที่เป็นรูปภาพทดสอบในตารางภายนอก และขอให้ Gemini 1.0 Pro Vision ตรวจสอบเทียบกับรูปภาพพื้นฐาน จากนั้นจึงสร้าง Java Cloud Function ที่ใช้การเรียกใช้ Gemini Pro Vision และเรียกใช้เป็นฟังก์ชันระยะไกลใน BigQuery

แผนภาพโฟลว์สำหรับการติดตั้งใช้งานฟังก์ชันระยะไกล

หมายเหตุ

อาจมีโมเดล Vertex AI Generative AI อีกหลายโมเดลที่พร้อมใช้งานในฐานะโมเดลระยะไกลใน BigQuery ซึ่งหมายความว่าคุณจะเข้าถึงรูปแบบเหล่านี้ด้วยโครงสร้าง ML.GENERATE_TEXT จาก BigQuery ได้ทันที อย่างไรก็ตาม แม้ว่าจะใช้งานโมเดลระยะไกลได้ คุณก็ยังมีตัวเลือกในการสร้างการปรับแต่งขั้นสูงสำหรับ Use Case ของคุณด้วย Cloud Functions แล้วเข้าถึงโมเดลเหล่านี้เป็นฟังก์ชันระยะไกลจาก BigQuery

เหตุผลที่ควรใช้ BigQuery

BigQuery เป็นคลังข้อมูลในระบบมัลติคลาวด์แบบ Serverless ที่ปรับขนาดตั้งแต่ไบต์ไปจนถึงเพตะไบต์ได้โดยมีค่าใช้จ่ายในการดำเนินการน้อยที่สุด และจึงเป็นตัวเลือกที่ยอดเยี่ยมสำหรับการจัดเก็บข้อมูลการฝึก ML เมื่อใช้ความสามารถในการวิเคราะห์และแมชชีนเลิร์นนิงของ BigQuery ในตัว (BQML) คุณจะสร้างการคาดการณ์ที่ไม่ต้องใช้โค้ดได้โดยใช้เพียงการค้นหา SQL นอกจากนี้ คุณยังเข้าถึงข้อมูลจากแหล่งที่มาภายนอกด้วยการค้นหาแบบรวมศูนย์ได้ จึงไม่จำเป็นต้องใช้ไปป์ไลน์ ETL ที่ซับซ้อน

BigQuery คือคลังข้อมูลในระบบคลาวด์ที่มีการจัดการครบวงจรซึ่งช่วยให้ผู้ใช้วิเคราะห์ข้อมูลที่มีโครงสร้าง กึ่งมีโครงสร้าง และไม่มีโครงสร้าง

2. ข้อกำหนด

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน

3. ก่อนเริ่มต้น

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว ดูวิธีตรวจสอบว่าการเรียกเก็บเงินในโปรเจ็กต์เปิดอยู่หรือไม่
  3. คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานใน Google Cloud ที่มาพร้อมกับ bq ล่วงหน้า คลิก "เปิดใช้งาน Cloud Shell" ที่ด้านบนของคอนโซล Google Cloud

รูปภาพปุ่มเปิดใช้งาน Cloud Shell

  1. เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณต้องตรวจสอบว่าได้ตรวจสอบสิทธิ์แล้วและตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์โดยใช้คำสั่งต่อไปนี้
gcloud auth list
  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
  1. หากไม่ได้ตั้งค่าโปรเจ็กต์ไว้ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์
gcloud config set project <YOUR_PROJECT_ID>
  1. ไปที่ Gemini สำหรับ Google Cloud Marketplace เพื่อเปิดใช้ API คุณยังใช้คำสั่งต่อไปนี้ในเทอร์มินัล Cloud Shell ได้ด้วย
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
  1. ตรวจสอบว่าเปิดใช้ API ต่อไปนี้แล้ว
  • BigQuery
  • การเชื่อมต่อ BigQuery
  • Cloud Function
  • Cloud Run
  • Vertex AI
  • Cloud Build
  • Cloud Storage API

อีกทางเลือกหนึ่งนอกเหนือจากการใช้คำสั่ง gcloud คือการดำเนินการผ่านคอนโซลโดยใช้ลิงก์นี้

ดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

4. สร้างชุดข้อมูล BigQuery และการเชื่อมต่อภายนอก

เริ่มต้นด้วยการสร้างชุดข้อมูลและการเชื่อมต่อทรัพยากรระบบคลาวด์

ชุดข้อมูลใน BigQuery คือคอนเทนเนอร์สำหรับตารางและออบเจ็กต์ทั้งหมดสำหรับแอปพลิเคชันของคุณ

วิธีสร้างชุดข้อมูลมีดังนี้

  1. ไปที่หน้า BigQuery ในคอนโซล Google Cloud
  2. ในแผง Explorer ให้เลือกโปรเจ็กต์ที่ต้องการสร้างชุดข้อมูล
  3. ขยายตัวเลือกการดำเนินการ (ไอคอนจุดไข่ปลาแนวตั้ง) แล้วคลิกสร้างชุดข้อมูล

รูปภาพของเมนูการทำงานและตัวเลือกสร้างชุดข้อมูล

  1. คลิกสร้างชุดข้อมูล
  2. ป้อน gemini_bq_fn ในช่องรหัสชุดข้อมูล
  3. ตั้งค่าประเภทสถานที่ตั้งของคุณเป็น Multi-region และยอมรับค่าเริ่มต้นซึ่งก็คือ US(multiple regions in United States.
  4. คลิกสร้างชุดข้อมูล
  5. ตรวจสอบว่าสร้างชุดข้อมูลและแสดงอยู่ใต้รหัสโปรเจ็กต์ในแผงExplorer

ต้องเชื่อมต่อ BigQuery เพื่อโต้ตอบกับ Cloud Function หากต้องการสร้างฟังก์ชันระยะไกล คุณต้องสร้างการเชื่อมต่อ BigQuery ใน Codelab นี้ เราจะใช้การเชื่อมต่อ BigLake เพื่อเข้าถึงโมเดลจาก BigQuery ผ่าน Cloud Function การเชื่อมต่อ BigLake ช่วยในการเชื่อมต่อแหล่งข้อมูลภายนอกขณะที่ยังคงการควบคุมการเข้าถึงและการรักษาความปลอดภัยของ BigQuery ได้อย่างละเอียด ซึ่งในกรณีของเราคือ Vertex AI Gemini Pro API

วิธีสร้างการเชื่อมต่อ BigLake มีดังนี้

  1. คลิกเพิ่มในแผงสำรวจของหน้า BigQuery

คอนโซล BigQuery ที่ไฮไลต์ปุ่ม &quot;เพิ่ม&quot; เพื่อเพิ่มการเชื่อมต่อภายนอก

  1. คลิกการเชื่อมต่อกับแหล่งข้อมูลภายนอก
  2. จากเมนูประเภทการเชื่อมต่อ ให้เลือกโมเดลระยะไกล Vertex AI, ฟังก์ชันระยะไกล และ BigLake (Cloud Resource)
  3. ในช่องรหัสการเชื่อมต่อ ให้ป้อนชื่อการเชื่อมต่อเป็น gemini-bq-conn
  4. ตั้งค่าประเภทสถานที่ตั้งของคุณเป็น Multi-region และยอมรับค่าเริ่มต้นซึ่งก็คือ US(multiple regions in United States.
  5. คลิกสร้างการเชื่อมต่อ
  6. คลิกไปที่การเชื่อมต่อ แล้วคัดลอกรหัสบัญชีบริการในแผงข้อมูลการเชื่อมต่อ

ภาพหน้าจอของข้อมูลการเชื่อมต่อ

  1. ไปที่ IAM และ ผู้ดูแลระบบ แล้วคลิกให้สิทธิ์เข้าถึง
  2. วางรหัสบัญชีบริการในช่อง New principles
  3. เลือกบทบาท Vertex AI user จากรายการบทบาท แล้วคลิกบันทึก

ภาพหน้าจอให้สิทธิ์เข้าถึงบัญชีบริการ

ตอนนี้คุณสร้างชุดข้อมูลและการเชื่อมต่อ BigQuery เรียบร้อยแล้ว ถัดไปคุณจะต้องทำตามขั้นตอนที่จำเป็นสำหรับการเรียกใช้โมเดลระยะไกล

5. กรณีการใช้งานที่ 1 การเรียกใช้โมเดลระยะไกล: ตั้งค่าการเรียกใช้โมเดลระยะไกล

ตอนนี้คุณสร้างชุดข้อมูลและการเชื่อมต่อแล้ว มาสร้างโมเดลใน BigQuery ตามโมเดลพื้นฐานของ Vertex AI Gemini Pro กัน ในตอนท้ายของแบบฝึกหัดนี้ คุณจะทำให้แอปพลิเคชัน LLM พร้อมทำงานโดยใช้การค้นหา SQL เท่านั้น

ขั้นตอนที่ 1: สร้างตาราง BigQuery ที่มีข้อมูลอินพุตสำหรับรูปแบบระยะไกล

สร้างตารางชื่อ books ในชุดข้อมูลที่สามารถเก็บข้อมูลได้ประมาณ 50 ระเบียนจากตาราง bigquery-public-data.gdelt_internetarchivebooks.1905 ในชุดข้อมูล Internet Archive Books ที่ BigQuery ใช้แบบสาธารณะ

หากต้องการดำเนินการดังกล่าว ให้เรียกใช้คำสั่ง DDL (Data Definition Language) ต่อไปนี้จากแผงเครื่องมือแก้ไข BigQuery SQL

create or replace table gemini_bq_fn.books as (
select *
from
bigquery-public-data.gdelt_internetarchivebooks.1905 limit 50)

ขั้นตอนที่ 2 : สร้างโมเดล BigQuery

สร้างโมเดลในชุดข้อมูล ซึ่งทำได้โดยการเรียกใช้ DDL ต่อไปนี้จากแผง BigQuery SQL Editor

CREATE MODEL `gemini_bq_fn.gemini_remote_model`
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(ENDPOINT = 'gemini-pro');

สังเกตว่ามีการสร้างโมเดลพร้อมตัวเลือกในการดูโมเดล

ขั้นตอนที่ 3 : ทดสอบแอปพลิเคชัน Generative AI ใหม่

ใช้ฟังก์ชัน ML.GENERATE_TEXT ในการค้นหา SELECT เพื่อส่งคำขอไปยังโมเดลระยะไกล

SELECT ml_generate_text_llm_result as Gemini_Response, prompt as Prompt
FROM ML.GENERATE_TEXT(MODEL `gemini_bq_fn.gemini_remote_model`,
 (select 'You are a text summarizer and standardizer. From the following text that contains address locations, standardize and print one standardized, consolidated address. You cannot return empty because you know how to pick up sensible data from the text in this field: ' ||
substring(locations, 0, 200) as prompt
from `gemini_bq_fn.books`),
STRUCT(
 TRUE AS flatten_json_output));

คุณควรเห็นผลลัพธ์ต่อไปนี้

ผลลัพธ์การค้นหา ML.GENERATE_TEXT ใน BigQuery

ยินดีด้วย คุณได้สาธิตวิธีใช้โมเดลระยะไกล (ตามโมเดล gemini-pro) ด้วยฟังก์ชัน ML.GENERATE_TEXT เพื่อวิเคราะห์ข้อมูลข้อความในตาราง BigQuery แล้ว

ตอนนี้เรามาลองใช้โมเดล Vertex AI อื่นที่ใช้ฟังก์ชันระยะไกลของ BigQuery กัน สมมติว่าคุณต้องการเพิ่มการปรับแต่งและความยืดหยุ่นให้กับวิธีใช้โมเดลจากระยะไกลใน BigQuery ดูรุ่นที่รองรับได้ในเอกสารประกอบของ BigQuery

6. กรณีการใช้งานที่ 2 การใช้งานฟังก์ชันระยะไกล: ตั้งค่าการใช้งานฟังก์ชันระยะไกล

ในแบบฝึกหัดนี้ คุณจะสร้างฟังก์ชันใน BigQuery โดยอิงตาม Java Cloud Function ที่ใช้โมเดลพื้นฐานของ Gemini 1.0 Pro Vision ก่อนอื่น คุณจะต้องสร้างและทำให้ Java Cloud Function ใช้งานได้เพื่อเปรียบเทียบรูปภาพโดยใช้โมเดล Gemini 1.0 Pro Vision จากนั้นจึงสร้างฟังก์ชันระยะไกลใน BigQuery ซึ่งจะเรียกใช้ Cloud Function ที่ทำให้ใช้งานได้แล้ว โปรดทราบว่าคุณทำตามกระบวนการเดียวกันนี้สำหรับการดำเนินการของฟังก์ชันระยะไกลใน BigQuery ได้

มาเริ่มกันเลยดีกว่า

ขั้นตอนที่ 1: สร้าง Java Cloud Function

คุณจะสร้าง Cloud Function รุ่น 2 ใน Java เพื่อตรวจสอบความถูกต้องของรูปภาพทดสอบกับอิมเมจพื้นฐาน ระบบจะจัดเก็บอิมเมจพื้นฐานไว้ในชุดข้อมูลที่มีภาพหน้าจอของรูปภาพทดสอบในตารางภายนอกใน BigQuery คุณจะตรวจสอบรูปภาพโดยใช้โมเดล Gemini Pro Vision (Java SDK) จากนั้นคุณจะทำให้ Java Cloud Function ใช้งานได้ในปลายทาง REST

โปรดทำตามขั้นตอนต่อไปนี้

  1. เปิด Cloud Shell Editor
  2. หากคุณกำลังใช้เครื่องมือแก้ไขเดิม ให้คลิกลองใช้เครื่องมือแก้ไขใหม่
  3. ในแถบสถานะ ให้คลิก Cloud Code - Sign In
  4. หากมีข้อความแจ้งให้ให้สิทธิ์ Cloud Shell Editor ในการเรียก Google Cloud API ให้คลิกให้สิทธิ์ ทำตามข้อความแจ้งเพื่อลงชื่อเข้าใช้บัญชี Google คุณเชื่อมต่อกับ Google Cloud แล้ว
  5. หากไม่เห็นโปรเจ็กต์ในแถบสถานะ Cloud Code ให้คลิก Cloud Code - ลงชื่อเข้าใช้ > เลือกโปรเจ็กต์ Google Cloud เลือกโปรเจ็กต์ Google Cloud ที่ต้องการสร้าง Cloud Functions โปรเจ็กต์จะโหลดและกลายเป็นโปรเจ็กต์ที่ใช้งานอยู่ใน Cloud Shell Editor
  6. คลิกชื่อโปรเจ็กต์ที่ใช้งานอยู่ในแถบสถานะ Cloud Code ในเมนูเลือกด่วนที่ปรากฏขึ้น ให้เลือกแอปพลิเคชันใหม่
  7. เลือกแอปพลิเคชัน Cloud Functions ในกล่องโต้ตอบสร้างแอปพลิเคชันใหม่

ป๊อปอัปสร้างแอปพลิเคชันใหม่ หน้า 1

  1. เลือก Java: Hello World เมื่อได้รับแจ้งให้เลือกเทมเพลต

ป๊อปอัปสร้างแอปพลิเคชันใหม่ หน้า 2

  1. ป้อน Gemini-BQ-Function เป็นชื่อโปรเจ็กต์ในเส้นทางโปรเจ็กต์ โครงสร้างโปรเจ็กต์จะปรากฏในมุมมองเครื่องมือแก้ไข Cloud Shell ใหม่

โครงสร้างโปรเจ็กต์แอปพลิเคชัน Java Cloud Function ใหม่

  1. เพิ่มทรัพยากร Dependency ที่จำเป็นภายในแท็ก <dependencies>... </dependencies> หรือคัดลอกทรัพยากร Dependency จากตัวอย่างไฟล์ pom.xml
  2. เปลี่ยนชื่อชั้นเรียนจาก HelloWorld.java เป็นชื่อที่สื่อความหมายมากขึ้น สมมติว่า GeminiBigQueryFunction.java เปลี่ยนชื่อแพ็กเกจตามนั้น
  3. แทนที่โค้ดตัวยึดตำแหน่งในไฟล์ GeminiBigQueryFunction.Java ด้วยโค้ดตัวอย่างที่ให้ไว้ในที่เก็บของ GitHub ตรวจสอบว่าได้แทนที่ตัวแปร <YOUR_PROJECT_ID> พร้อมด้วยรหัสโปรเจ็กต์ในโค้ดตัวอย่าง
  4. ไปที่เทอร์มินัล Cloud Shell ตรวจสอบว่าคุณอยู่ในไดเรกทอรีของโปรเจ็กต์ หากไม่เห็น ให้ไปที่ไดเรกทอรีโปรเจ็กต์โดยเรียกใช้คำสั่งต่อไปนี้
cd Gemini-BQ-Function
  1. เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างและทำให้ Cloud Function ใช้งานได้
gcloud functions deploy gemini-bq-fn --gen2 --runtime java17 --trigger-http --entry-point cloudcode.helloworld.GeminiBigQueryFunction --allow-unauthenticated --source .

แทนที่จุดแรกเข้าในคำสั่งด้วยจุดแรกเข้าของฟังก์ชัน เอาต์พุตคือ URL ของ REST ในรูปแบบต่อไปนี้

https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-bq-fn
  1. ทดสอบ Cloud Function นี้โดยการเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล
gcloud functions call gemini-bq-fn --region=us-central1 --gen2 --data '{"calls":[["https://storage.googleapis.com/img_public_test/image_validator/baseline/1.JPG", "https://storage.googleapis.com/img_public_test/image_validator/test/2.JPG", "PROMPT_ABOUT_THE_IMAGES_TO_GEMINI"]]}'

คำตอบสำหรับพรอมต์ตัวอย่างแบบสุ่ม:

สตริงการตอบกลับ JSON จาก Cloud Function

ยอดเยี่ยม! การติดตั้งใช้งานโมเดล Cloud Function ทั่วไปสำหรับ Gemini Pro Vision พร้อมแล้ว มาใช้ปลายทางนี้โดยตรงในข้อมูล BigQuery จากภายในฟังก์ชันระยะไกลของ BigQuery

ขั้นตอนที่ 2: สร้างตารางออบเจ็กต์ BigQuery และฟังก์ชันระยะไกล

ข้อกำหนดเบื้องต้น

คุณจะต้องมีที่เก็บข้อมูล Cloud Storage สำหรับการออกกำลังกายส่วนนี้ โปรดทำตามขั้นตอนต่อไปนี้เพื่อสร้างที่เก็บข้อมูล Cloud Storage

  1. หากต้องการสร้างที่เก็บข้อมูล ให้ไปที่คอนโซล Cloud Storage แล้วคลิกสร้าง
  2. ป้อน demo-bq-gemini-public-image เป็นชื่อที่เก็บข้อมูล แล้วคลิกสร้าง
  3. ยกเลิกการเลือกตัวเลือก Enforce public access prevention on this bucket แม้ว่าคุณจะสร้างที่เก็บข้อมูลนี้สำหรับการเข้าถึงแบบสาธารณะในแบบฝึกหัดนี้ เราขอแนะนำให้คุณป้องกันการเข้าถึงแบบสาธารณะและให้สิทธิ์แก่บัญชีบริการเฉพาะที่จำเป็นในกรณีการใช้งานขององค์กร
  4. หลังจากสร้างที่เก็บข้อมูลแล้ว ให้ไปที่แท็บสิทธิ์เพื่อดูและเปลี่ยนสิทธิ์
  5. หากต้องการเพิ่มผู้ใช้หลัก ให้คลิกให้สิทธิ์เข้าถึง ระบุรหัสบัญชีบริการเพื่อให้สิทธิ์เข้าถึงบัญชีที่ต้องการ หรือระบุ allUsers เพื่อให้สิทธิ์เข้าถึงที่เก็บข้อมูลแบบสาธารณะ
  6. เลือกบทบาท Storage Object Viewer แล้วคลิกบันทึก หากได้รับข้อความแจ้ง ให้เลือกอนุญาตให้เข้าถึงแบบสาธารณะ
  7. ไปที่แท็บออบเจ็กต์ แล้วอัปโหลดรูปภาพพื้นฐานและรูปภาพทดสอบเพื่อเปรียบเทียบ สำหรับ Codelab นี้ คุณสามารถอัปโหลดออบเจ็กต์ต่อไปนี้ที่เผยแพร่ต่อสาธารณะ: baseline.JPG, TEST1.JPG และ TEST2.JPG

สร้างตารางออบเจ็กต์ BigQuery

สร้างตารางออบเจ็กต์ภายนอกจาก BigQuery เพื่อเข้าถึงข้อมูลที่ไม่มีโครงสร้างในที่เก็บข้อมูลโดยใช้การเชื่อมต่อและชุดข้อมูลที่คุณสร้างไว้ก่อนหน้านี้ หากต้องการดำเนินการดังกล่าว ให้เรียกใช้คำสั่ง DDL (Data Definition Language) ต่อไปนี้จากแผงตัวแก้ไขคำค้นหา BigQuery

CREATE OR REPLACE EXTERNAL TABLE `gemini_bq_fn.image_validation`
WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(object_metadata="SIMPLE", uris=["gs://demo-bq-gemini-public-image/*.JPG"]);

ตรวจสอบว่ามีการสร้างตารางออบเจ็กต์ใหม่ที่ชื่อ image_validation แล้วในชุดข้อมูล

สร้างฟังก์ชันระยะไกล BigQuery

สร้างฟังก์ชันระยะไกลใน BigQuery เพื่อเรียกใช้ Java Cloud Function ที่นำโมเดล Gemini Pro Vision ไปใช้ สร้างข้อมูลนี้ในชุดข้อมูลเดียวกัน ซึ่งทำได้โดยการเรียกใช้ DDL ต่อไปนี้จากแผงตัวแก้ไข SQL ของคอนโซล BigQuery

CREATE OR REPLACE FUNCTION `gemini_bq_fn.FN_IMAGE_VALIDATE` (baseline STRING, test STRING, prompt STRING) RETURNS STRING
 REMOTE WITH CONNECTION `us.gemini-bq-conn`
 OPTIONS (
   endpoint = 'https://us-central1-<your project id>.cloudfunctions.net/gemini-bq-fn',
   max_batching_rows = 1
 );

URL ปลายทางคือ URL ของ REST ที่แสดงผลก่อนหน้านี้ในแบบฝึกหัดนี้ การดำเนินการนี้จะสร้างฟังก์ชันระยะไกลใน BigQuery DDL ด้านบนมีพารามิเตอร์ 3 รายการ พารามิเตอร์ 2 รายการแรกคือ URL ไปยังรูปภาพที่จัดเก็บไว้ในตารางออบเจ็กต์ซึ่งสร้างขึ้นในขั้นตอนก่อนหน้า พารามิเตอร์สุดท้ายคือข้อความแจ้งไปยังโมเดล (Gemini Pro Vision) คุณอ้างอิงโค้ด Java Cloud Functions ที่ใช้ในการแยกวิเคราะห์ลายเซ็นนี้ได้

Gson().fromJson(request.getReader(), JsonObject.class);
JsonArray calls_array = requestJson.getAsJsonArray("calls");
JsonArray calls = (JsonArray) calls_array.get(0);
String baseline_url = calls.get(0).toString().replace("\"", "");
String test_url = calls.get(1).toString().replace("\"", "");
String prompt_string = calls.get(2).toString();

เรียกใช้ Gemini จาก BigQuery

ใช้ฟังก์ชันระยะไกลในการค้นหา SELECT เพื่อทดสอบฟังก์ชันสำหรับตรวจสอบความถูกต้องของรูปภาพกับข้อความแจ้ง

select gemini_bq_fn.FN_IMAGE_VALIDATE(
'https://storage.googleapis.com/demo-bq-gemini-public-image/Baseline.JPG',
REPLACE(uri, 'gs://', 'https://storage.googleapis.com/') ,
'You are an expert image validator who can respond with JSON result. Find 2 images here. The first one is the reference image. The second image is the test image. Compare the second image to see if the second image is similar to the first in terms of the text present in the image.  Respond ONLY in JSON Format with 3 attributes namely SIMILARITY which is a \"YES\" or \"NO\", SIMILARITY_SCORE which is a percentage and DIFFERENCE_COMMENT which is a string.' ) as IMAGE_VALIDATION_RESULT
from `gemini_bq_fn.image_validation`
where uri like '%TEST1%';  

ลองใช้การค้นหาด้านบนกับไฟล์ออบเจ็กต์ TEST1 และ TEST2 คุณจะเห็นผลลัพธ์ที่คล้ายกับข้อความต่อไปนี้

ภาพหน้าจอของผลลัพธ์ของฟังก์ชันระยะไกลของ BigQuery

ต่อไปนี้เป็นรูปภาพเพื่อใช้เป็นข้อมูลอ้างอิง

รูปภาพพื้นฐาน

รูปภาพอ้างอิงพื้นฐานสำหรับกรอบการทดสอบ

รูปภาพทดสอบ

รูปภาพทดสอบ 1 สำหรับกรอบการทดสอบ

โปรดสังเกตว่ารูปภาพทั้ง 2 รูปมีความคล้ายคลึงกันเนื่องจากมีมุมมองคอนโซลระบบคลาวด์ของ Duet AI แต่ข้อความของทั้ง 2 รูปนั้นแตกต่างกันเพราะมาจากโมเดลในรูปแบบ JSON

วิธีนี้ทำให้คุณทดสอบการใช้งานฟังก์ชันระยะไกลได้เป็นอย่างดี

7. ประโยชน์และกรณีการใช้งาน

มาดูประโยชน์บางส่วนของการผสานรวม BigQuery และ Gemini สำหรับการวิเคราะห์ข้อมูลแบบมีโครงสร้างและไม่มีโครงสร้างกัน

  • นำ GenAI ไปใช้กับข้อมูล: ไม่ต้องเคลื่อนย้ายข้อมูล ทำซ้ำ และซับซ้อนมากขึ้นอีกต่อไป คุณสามารถวิเคราะห์ข้อมูลและสร้างข้อมูลเชิงลึกภายในสภาพแวดล้อม BigQuery เดียวกันได้
  • การวิเคราะห์ที่มีประสิทธิภาพมากขึ้น: คำอธิบายภาษาที่เป็นธรรมชาติของ Gemini จะเพิ่มระดับความเข้าใจให้กับข้อมูลของคุณ และคุณสามารถทำได้โดยใช้การค้นหา SQL
  • ความสามารถในการปรับขนาด: โซลูชันนี้รองรับชุดข้อมูลขนาดใหญ่และการวิเคราะห์ที่ซับซ้อนได้อย่างง่ายดายและเขียนโค้ดไม่มาก

ซึ่งแอปพลิเคชันเหล่านี้มีมากมาย ลองพิจารณาสถานการณ์ต่างๆ ในด้านการเงิน (การวิเคราะห์แนวโน้มตลาด) การค้าปลีก (ความรู้สึกของลูกค้า) การดูแลสุขภาพ (สรุปรายงานทางการแพทย์) เป็นต้น ที่ซึ่งทีมวิเคราะห์และทีมธุรกิจของคุณสามารถนำไปใช้ได้จริง โดยใช้ความพยายามไม่มาก ใช้ทรัพยากร ตลอดจนใช้ภาษาและเครื่องมือที่คุ้นเคย

8. ล้างข้อมูล

โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโพสต์นี้

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร
  2. ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
  3. ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเครื่องเพื่อลบโปรเจ็กต์
  4. หากต้องการเก็บโปรเจ็กต์ไว้ ให้ข้ามขั้นตอนข้างต้นและลบ Cloud Function โดยไปที่ฟังก์ชันระบบคลาวด์ แล้วเลือกฟังก์ชันจากรายการที่ต้องการลบ แล้วคลิกลบ

9. ขอแสดงความยินดี

ยินดีด้วย ด้วยโมเดล Gemini ที่ผสานรวมเข้ากับ BigQuery คุณจะไม่เพียงแค่วิเคราะห์ข้อมูลอีกต่อไป แต่คุณเป็นผู้บอกเล่าเรื่องราวข้อมูลด้วย คุณสามารถสร้างเรื่องราวที่ซ่อนเร้นภายในชุดข้อมูลของคุณ และเปลี่ยนวิธีที่คุณทำความเข้าใจข้อมูลเชิงลึกได้ เริ่มการทดสอบ ใช้เทคนิคนี้กับชุดข้อมูลของคุณเองและค้นพบเรื่องราวในข้อมูล เนื่องจาก BigQuery รองรับข้อมูลที่ไม่มีโครงสร้างในตารางออบเจ็กต์ ( ตารางภายนอก) ให้ลองใช้ Gemini Pro Vision เพื่อสร้างข้อมูลเชิงลึกแบบ Generative เกี่ยวกับข้อมูลรูปภาพ ดูคำแนะนำโดยละเอียดได้ในเอกสารประกอบสำหรับ Vertex AI, BigQuery Remote Functions และ Cloud Functions นี่คือที่เก็บ GitHub สำหรับโปรเจ็กต์นี้ บอกให้เราทราบถึงสิ่งที่คุณสร้างขึ้นจากการเรียนรู้นี้