Analytics สำหรับชั้นวางหนังสือ: ใช้ Gemini เพื่อสร้างแอปพลิเคชัน SQL ด้วย BigQuery และ Generative AI

1. บทนำ

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

ภาพรวมของโปรเจ็กต์

กรณีการใช้งานของเรามุ่งเน้นที่องค์ประกอบสำคัญ 4 อย่างต่อไปนี้

  • ฐานข้อมูลหนังสือ: ชุดข้อมูลสาธารณะ BigQuery ขนาดใหญ่ของหนังสือใน Internet Archive จะเป็นแคตตาล็อกหนังสือที่ครอบคลุมของเรา
  • เครื่องมือสรุปโดย AI: Google Cloud Functions ที่มาพร้อมโมเดลภาษา Gemini 1.0 Pro จะสร้างข้อมูลสรุปเชิงลึกที่ปรับให้เหมาะกับคำขอของผู้ใช้
  • การผสานรวม BigQuery: ฟังก์ชันระยะไกลภายใน BigQuery ที่เรียกใช้ Cloud Function ของเราเพื่อแสดงข้อมูลสรุปและธีมของหนังสือตามต้องการ
  • อินเทอร์เฟซผู้ใช้: เว็บแอปที่โฮสต์ใน Cloud Run ซึ่งจะนำเสนอเว็บแอปพลิเคชันให้ผู้ใช้ดูผลลัพธ์

เราจะแบ่งการติดตั้งใช้งานออกเป็น 3 โค้ดแล็บ ดังนี้

Codelab 1: ใช้ Gemini เพื่อสร้าง Cloud Function ของ Java สำหรับแอปพลิเคชัน Gemini

Codelab 2: ใช้ Gemini เพื่อสร้างแอป SQL ด้วย BigQuery และ Generative AI

Codelab 3: ใช้ Gemini เพื่อสร้างเว็บแอปพลิเคชัน Java Spring Boot ที่โต้ตอบกับ BigQuery

2. ใช้ Gemini เพื่อสร้างแอป SQL ด้วย BigQuery และ Generative AI

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

คุณจะสร้าง

  • โมเดลระยะไกลใน BigQuery ที่เรียกใช้ปลายทาง text-bison-32k ของ Vertex AI เพื่อระบุประเภท (หรือธีม) ของหนังสือจากรายการคีย์เวิร์ดที่คั่นด้วย ";" ในตาราง
  • ฟังก์ชันระยะไกลใน BigQuery ที่จะเรียกใช้ Cloud Functions ของ Generative AI ที่ติดตั้งใช้งานจากระยะไกล
  • ใช้โมเดลและฟังก์ชันระยะไกลเพื่อสรุปธีมและข้อความของหนังสือด้วยการค้นหา SQL และเขียนผลลัพธ์ลงในตารางใหม่ในชุดข้อมูลชั้นวางหนังสือ
  • คุณจะทำตามขั้นตอนเหล่านี้ได้ด้วยความช่วยเหลือจาก Gemini

3. ข้อกำหนด

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • ซึ่งจะเป็นประโยชน์หากคุณได้ติดตั้งใช้งาน Cloud Function เป็นส่วนหนึ่งของ Codelab ส่วนที่ 1 ใช้ Gemini เพื่อสร้าง Java Cloud Function สำหรับแอปพลิเคชัน Gemini Codelab
  • แบบมีเงื่อนไข: หากคุณมีสิทธิ์เข้าถึงลิงก์เครดิต Google Cloud ฟรีในขณะนี้ (ซึ่งอาจได้รับการจัดสรรจากผู้จัดเวิร์กช็อป) ให้ทำตามวิธีการในหน้าด้านล่างเพื่อทำขั้นตอนการเปิดใช้งานเครดิตและการสร้างโปรเจ็กต์ให้เสร็จสมบูรณ์ล่วงหน้า หากไม่มีลิงก์นี้ ให้ทำตามขั้นตอนข้อกำหนดเบื้องต้นของโปรเจ็กต์และการเรียกเก็บเงินด้านล่าง

สร้างโปรเจ็กต์

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

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่

เปิดใช้งาน Cloud Shell

  1. คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud และมาพร้อมกับ bq ที่โหลดไว้ล่วงหน้า

จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell ที่มุมขวาบน 6757b2fb50ddcc2d.png

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

gcloud auth list

  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ

gcloud config list project

  1. หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า

gcloud config set project <YOUR_PROJECT_ID>

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

4. การเปิดใช้ Gemini สำหรับ Google Cloud และ API ที่จำเป็น

เปิดใช้ Gemini

  1. ไปที่ Gemini สำหรับ Marketplace ของ Google Cloud เพื่อเปิดใช้ API คุณยังใช้คำสั่งต่อไปนี้ได้ด้วย

gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID

  1. ไปที่หน้า Gemini แล้วคลิก "เริ่มแชท"

เปิดใช้ API อื่นๆ ที่จำเป็น

เราจะทำเช่นนั้นได้อย่างไร มาถาม Gemini กันดีกว่า แต่ก่อนอื่น โปรดทราบสิ่งต่อไปนี้

หมายเหตุ: LLM เป็นแบบไม่กำหนด ดังนั้นขณะที่คุณลองใช้พรอมต์เหล่านี้ คำตอบที่คุณได้รับอาจแตกต่างจากคำตอบในภาพหน้าจอของฉัน

ไปที่คอนโซลแชทของ Gemini โดยคลิกไอคอน "เปิด Gemini" ที่มุมขวาบนซึ่งอยู่ติดกับแถบค้นหาในคอนโซล Google Cloud

พิมพ์คำถามนี้ในส่วน "ป้อนพรอมต์ที่นี่"

ฉันจะเปิดใช้ BigQuery และ Vertex AI API โดยใช้คำสั่ง gcloud ได้อย่างไร

คุณจะได้รับคำตอบดังที่เห็นในรูปภาพต่อไปนี้

19c3fd78530794d9.png

คัดลอกคำสั่งดังกล่าว (คุณใช้ไอคอนคัดลอกที่ด้านบนของข้อมูลโค้ดคำสั่งได้) แล้วเรียกใช้ในเทอร์มินัล Cloud Shell เพื่อเปิดใช้บริการที่เกี่ยวข้อง

  • bigquery.googleapis.com
  • aiplatform.googleapis.com

5. สำรวจชุดข้อมูลสาธารณะของ BigQuery สำหรับข้อมูลหนังสือ

เริ่มต้นด้วยการทำความคุ้นเคยกับชุดข้อมูลสาธารณะของ BigQuery ซึ่งมีข้อมูลเกี่ยวกับหนังสือในอินเทอร์เน็ตอาร์ไคฟ์จำนวนมาก

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

39e2ac03cc99cbac.png

พิมพ์ "gdelt-bq" หรือ "internetarchivebooks" ในแถบค้นหา แล้วคลิกค้นหาทุกโปรเจ็กต์ ขยายผลการค้นหาและติดดาวหนังสือใน Internet Archive ดังที่แสดงในรูปภาพด้านล่าง

68dba68a79cddfc9.png

ขยายชุดข้อมูล คลิก gdelt-bq.internetarchivebooks แล้วดูตัวอย่างข้อมูลในตาราง 1920 ตารางนี้มีหนังสือตั้งแต่ปี 1920 ที่เก็บถาวรไว้

หากต้องการดูสคีมาที่เราจะใช้ในส่วนต่อๆ ไป ให้เรียกใช้การค้นหาต่อไปนี้

select * from  `gdelt-bq.internetarchivebooks.1920` limit 5;

เราจะใช้ฟิลด์ 3 รายการต่อไปนี้สำหรับ Codelab

  • BookMeta_Title (title)
  • ธีม (ธีมที่คั่นด้วย ";')
  • BookMeta_FullText (ข้อความทั้งหมดของหนังสือ)

6. สร้างชุดข้อมูล BigQuery ใหม่ชื่อ bookshelf

เราต้องการสร้างชุดข้อมูลภายใต้โปรเจ็กต์เพื่อจัดเก็บออบเจ็กต์ฐานข้อมูลและการวิเคราะห์ทั้งหมดที่เราจะสร้างในแล็บนี้ มาถาม Gemini ถึงวิธีสร้างชุดข้อมูล BigQuery กัน คุณควรเปิดแชท Gemini ในอีกแท็บหนึ่งในเบราว์เซอร์ไว้แล้วจากขั้นตอนการเปิดใช้ API หากยังไม่ได้ทำ คุณสามารถทำได้เลย ไปที่ Google Cloud Console โดยไปที่ https://console.cloud.google.com แล้วคุณจะเห็นไอคอน Gemini อยู่ข้างแถบค้นหาที่ด้านบน คลิกที่แชทนั้น แล้วแชทจะเปิดขึ้น

26e1491322855614.png

ป้อนพรอมต์ตามที่แสดงด้านล่าง

พรอมต์ของฉันมีดังนี้

How to create a BigQuery dataset?

คำตอบมีดังนี้

f7a989cc9a01009.png

มาทำตามขั้นตอนที่ระบุไว้ในการตอบกลับเพื่อสร้างชุดข้อมูลชื่อ "bookshelf" ในโปรเจ็กต์ที่ใช้งานอยู่

หากต้องการสร้างชุดข้อมูล BigQuery ให้ทำตามขั้นตอนต่อไปนี้

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

ระบบจะสร้างชุดข้อมูลและแสดงในแผง Explorer คุณดูชุดข้อมูล "ชั้นหนังสือ" ได้ดังนี้

7. สร้างโมเดลระยะไกลเพื่อเรียกใช้ LLM ของ Vertex AI (text-bison-32k)

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

มาถามคำถามนี้กับ Gemini กัน โดยไปที่แท็บที่คุณเปิดคอนโซลแชทของ Gemini ไว้ แล้วพิมพ์พรอมต์ด้านล่าง

คุณจะเชื่อมต่อ BigQuery กับ Vertex AI เพื่อเรียกใช้ปลายทาง LLM (text-bison-32k) ใน BigQuery ได้อย่างไร

การตอบกลับมีดังนี้

41904e30ce92b436.png

คำตอบประกอบด้วยข้อมูลที่ถูกต้อง เช่น ขั้นตอนที่รวมถึงการใช้คำสั่ง CREATE MODEL, การใช้การเชื่อมต่อ BigQuery และการกำหนดปลายทาง คำสั่งค้นหาถูกต้องสำหรับฉัน แต่ไม่ได้หมายความว่าคุณจะได้รับเอาต์พุตที่เหมือนกันทุกประการ เนื่องจากนี่คือโมเดลภาษาขนาดใหญ่ คุณอาจได้รับคำตอบในรูปแบบ ปริมาณ และความลึกที่แตกต่างกัน หากคุณไม่เห็นรายละเอียดทั้งหมดที่ฉันได้รับ โปรดถามคำถามติดตามผลในแชท เช่น ให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีสร้างทรัพยากรการเชื่อมต่อ หรือเหตุผลที่ไม่มีแอตทริบิวต์การเชื่อมต่อ หรือฉันจะเชื่อมต่อจาก BigQuery ไปยัง Vertex AI ได้อย่างไร เป็นต้น

นี่คือตัวอย่างพรอมต์ติดตามผล (ใช้เฉพาะในกรณีที่คุณต้องการติดตามผล หากการตอบกลับแรกที่คุณได้รับเพียงพอแล้ว ให้ดำเนินการต่อ)

What about the connection? How will I connect from BigQuery to Vertex AI?

คำตอบมีดังนี้

2ed9b3ed96b11bc9.png

มาทำตามขั้นตอนจากคำตอบเพื่อสร้างการเชื่อมต่อ BigQuery กัน

  1. ไปที่คอนโซล BigQuery
  2. ในแผง BigQuery Explorer ให้คลิกปุ่ม "+เพิ่ม" แล้วคลิก "การเชื่อมต่อกับแหล่งข้อมูลภายนอก"
  3. ในขั้นตอนนี้ ระบบจะขอให้คุณเปิดใช้ BigQuery Connection API คลิกเปิดใช้ API

ded96126495ffe9.png

  1. คลิก "การเชื่อมต่อกับแหล่งข้อมูลภายนอก" แล้วคุณจะเห็นสไลด์แหล่งข้อมูลภายนอกดังที่แสดงด้านล่าง เลือกแหล่งที่มา "Vertex AI" จากรายการแหล่งที่มาภายนอก

434cdbbb3a9436f2.png

  1. พิมพ์รหัสการเชื่อมต่อ (คุณสามารถเลือกใช้รหัสใดก็ได้ แต่ตอนนี้ให้ตั้งค่าเป็น "bq-vx") และภูมิภาค (หลายภูมิภาค "สหรัฐอเมริกา")
  2. คลิก "สร้างการเชื่อมต่อ"

d3a2aeebc3ecdfae.png

  1. หลังจากสร้างการเชื่อมต่อแล้ว ให้คลิก "ไปที่การเชื่อมต่อ"
  2. ในหน้าข้อมูลการเชื่อมต่อ ให้คัดลอกรหัสบัญชีบริการเนื่องจากเราจะใช้รหัสนี้ในขั้นตอนถัดไป
  3. เมื่อสร้างการเชื่อมต่อแล้ว ให้กำหนดสิทธิ์ให้กับรหัสบัญชีบริการที่เราคัดลอกไว้เพื่อใช้ Vertex AI
  4. จากหน้า Google Cloud Console ให้เปิด Google Cloud IAM หรือไปที่ลิงก์
  5. คลิกให้สิทธิ์เข้าถึงในส่วนดูตามผู้ใช้หลัก

5317eed5da0bb8c5.png

  1. ในกล่องโต้ตอบให้สิทธิ์เข้าถึง ให้ป้อนรหัสบัญชีบริการที่เราจดไว้ก่อนหน้านี้ภายในกล่องข้อความหลักการใหม่
  2. ตั้งค่าบทบาทเป็น "ผู้ใช้ Vertex AI"

f213db33d220aa5f.png

ระบบจะสร้างการเชื่อมต่อที่จำเป็น ระบบจะให้สิทธิ์ที่จำเป็นแก่ผู้ใช้หลัก (บัญชีบริการของการเชื่อมต่อ) เพื่อใช้ Vertex AI จาก BigQuery

เรียกใช้คำสั่ง DDL(Data Definition Language) ต่อไปนี้ซึ่งแสดงถึงการสร้างออบเจ็กต์ DB ในกรณีนี้คือ MODEL ในตัวแก้ไขคำค้นหา BigQuery

CREATE OR REPLACE MODEL bookshelf.llm_model
  REMOTE WITH CONNECTION `us.bq-vx`
  OPTIONS (ENDPOINT = 'text-bison-32k');

คุณลองใช้สิ่งต่อไปนี้แทนขั้นตอนข้างต้นได้ โดยขอให้ Gemini แนะนำคำค้นหาเพื่อสร้างโมเดลสำหรับการเรียกใช้โมเดล "text-bison-32k"

หมายเหตุ: หากคุณใช้ชื่ออื่นสำหรับการเชื่อมต่อ ให้แทนที่ "us.bq-vx" ด้วยชื่อนั้นในคำสั่ง DDL ก่อนหน้า คําค้นหานี้จะสร้างโมเดลระยะไกลในชุดข้อมูล "bookshelf" ที่เราสร้างไว้ก่อนหน้านี้

8. สร้างฟังก์ชันระยะไกลที่เรียกใช้ Java Cloud Function

ตอนนี้เราจะสร้างฟังก์ชันระยะไกลใน BigQuery โดยใช้ฟังก์ชัน Cloud ของ Java ที่เราสร้างขึ้นใน codelab 1 ของชุดนี้เพื่อใช้โมเดล Gemini ระบบจะใช้ฟังก์ชันระยะไกลนี้เพื่อสรุปเนื้อหาของหนังสือ

หมายเหตุ: หากพลาดโค้ดแล็บนี้หรือยังไม่ได้ติดตั้งใช้งาน Cloud Function นี้ คุณสามารถข้ามขั้นตอนนี้และไปยังหัวข้อถัดไปได้ (ซึ่งก็คือสรุปธีมของหนังสือโดยใช้โมเดลระยะไกล)

ไปที่คอนโซล BigQuery แล้ววางคำสั่ง DDL ต่อไปนี้ในตัวแก้ไขคำค้นหา (คุณสร้างแท็บตัวแก้ไขคำค้นหาใหม่ได้โดยคลิกปุ่ม +)

a54c0b0014666cac.png

ด้านล่างนี้คือ DDL ที่คุณคัดลอกได้ อย่าลืมแทนที่ปลายทางด้วยปลายทาง Cloud Functions ที่คุณติดตั้งใช้งาน (สร้างจาก codelab 1) หากไม่มีปลายทาง คุณสามารถแทนที่อักขระที่มาสก์ใน DDL ด้านล่างด้วย "abis-345004" เพื่อวัตถุประสงค์ในการสาธิต

CREATE OR REPLACE FUNCTION
  `bookshelf.GEMINI_REMOTE_CALL` (context STRING) RETURNS STRING
  REMOTE WITH CONNECTION `us.bq-vx`
  OPTIONS (
    endpoint = 'https://us-central1-****-******.cloudfunctions.net/remote-gemini-call'  );

ไปที่คอนโซล BigQuery ในแพลตฟอร์ม Google Cloud แล้วเปิดแท็บตัวแก้ไขคำค้นหาใหม่ ในเครื่องมือแก้ไขคำค้นหาของ BigQuery ให้วางคำสั่ง DDL ด้านบน คุณจะเห็นการตอบกลับต่อไปนี้หลังจากเรียกใช้การค้นหา

a023d5691acf6f.png

เมื่อสร้างโมเดลและฟังก์ชันแล้ว มาทดสอบออบเจ็กต์ BigQuery ทั้ง 2 รายการนี้โดยเรียกใช้ในการค้นหา SELECT กัน

9. สรุปธีมโดยใช้โมเดลระยะไกล

มาใช้โมเดลระยะไกลที่เราสร้างขึ้น "bookshelf.llm_model" เพื่อสร้างคีย์เวิร์ดแบบรวมสำหรับหนังสือจากรายการธีมที่กำหนดกัน

SELECT * FROM ML.GENERATE_TEXT(MODEL `bookshelf.llm_model`,
(
SELECT
     CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` LIMIT 1
));

ขั้นตอนที่ไม่บังคับ: ผลลัพธ์สำหรับฟิลด์ผลลัพธ์ที่ LLM สร้างขึ้นจะซ้อนกัน มาเพิ่มพารามิเตอร์ LLM และแอตทริบิวต์ "flatten_json_output" ลงในคำค้นหา การใช้แอตทริบิวต์ "flatten_json_output" จะช่วยนำโครงสร้างที่ซ้อนกันออกจากฟิลด์ผลลัพธ์ที่ LLM สร้างขึ้น

SELECT * FROM ML.GENERATE_TEXT ( MODEL `bookshelf.llm_model`, (
 SELECT CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt FROM `gdelt-bq.internetarchivebooks.1920` limit 1),
    STRUCT( 0.2 AS temperature, 100 AS max_output_tokens, TRUE AS flatten_json_output));

ตอนนี้ ให้เรียกใช้การค้นหา SELECT ในเครื่องมือแก้ไข BigQuery และยืนยันผลลัพธ์ เราจำกัดผลการค้นหาไว้ที่ 1 รายการเพื่อการทดสอบ ผลลัพธ์จะแสดงดังนี้

9b0d33eca61a73d2.png

10. สรุปข้อความแบบเต็มของหนังสือโดยใช้ฟังก์ชันระยะไกล

ตอนนี้เราจะลองสรุปหนังสือโดยเรียกใช้ฟังก์ชัน Cloud bookshelf.GEMINI_REMOTE_CALL ที่เราสร้างไว้ก่อนหน้านี้

หมายเหตุ: หากคุณข้ามการสร้างฟังก์ชันระยะไกล (หัวข้อก่อนหน้าใน Codelab นี้) โปรดอย่าลืมข้ามการเรียกฟังก์ชัน bookshelf.GEMINI_REMOTE_CALL ในคำสั่ง SELECT ด้วย

ใช้คำสั่ง SELECT ที่เรียกฟังก์ชันระยะไกล (GEMINI_REMOTE_CALL) ที่เราสร้างไว้ก่อนหน้านี้ การเรียกใช้ฟังก์ชันนี้ GEMINI_REMOTE_CALL จะมีพรอมต์ที่ขอสรุปข้อความในหนังสือ

select BookMeta_Title, `bookshelf.GEMINI_REMOTE_CALL` (
  CONCAT('This is about a book. The title of the book is this: ', BookMeta_Title,  ' . The theme of the book is as follows: ', Themes, 'The following text contains an excerpt from the book. Summarize it in less than 5 lines to create the gist. If you do not have a summary, use the title and themes to make up a short summary. DO NOT RETURN EMPTY RESPONSE. ', SUBSTR(BookMeta_FullText, 5000, 10000))) Summary 
  from `gdelt-bq.internetarchivebooks.1920` where Themes like '%EDUCATION%' limit 1;

โปรดทราบว่าเราได้นำสตริงย่อยของข้อความแบบเต็มของหนังสือมาใช้เพื่อสร้างข้อมูลสรุป

ผลลัพธ์ของการค้นหามีดังนี้

658bb0a9c9cf0938.png

11. จัดเก็บข้อมูลหนังสือในตาราง

ตอนนี้เราได้ทดสอบทั้งการเรียก LLM (โมเดลและฟังก์ชันระยะไกล) จาก BigQuery โดยใช้เฉพาะคำค้นหา SQL แล้ว มาสร้างตาราง BigQuery เพื่อจัดเก็บข้อมูล "ชั้นวางหนังสือ" พร้อมข้อมูลเชิงลึกของธีมในชุดข้อมูลเดียวกันกับโมเดลและฟังก์ชันระยะไกลกัน

ในขั้นตอนนี้ เราสามารถรวมทั้งการเรียกใช้โมเดล LLM และการเรียกใช้ฟังก์ชันระยะไกลได้ แต่เนื่องจากเราได้ทําเครื่องหมายการเรียกฟังก์ชันระยะไกล (ที่เรียกใช้ Cloud Functions) เป็นขั้นตอนที่ไม่บังคับ เราจึงจะใช้ข้อมูลเชิงลึกจากโมเดลระยะไกลเท่านั้น

คำค้นหาที่เราจะใช้มีดังนี้

SELECT
  BookMeta_Title, Themes, ml_generate_text_llm_result Context 
   FROM
  ML.GENERATE_TEXT (
    MODEL `bookshelf.llm_model`,
    (
 SELECT
      BookMeta_Title,
      Themes,BookMeta_FullText,
      CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

เมื่อเรียกใช้การค้นหาในเครื่องมือแก้ไข BigQuery ผลลัพธ์จะเป็นดังนี้

2c6e08e75a680867.png

ตอนนี้เรามาขอให้ Gemini สร้างตารางชื่อ "bookshelf.books" จากการค้นหาข้างต้นกัน ไปที่คอนโซล Gemini Chat ใน Google Cloud Console แล้วป้อนพรอมต์ต่อไปนี้

พรอมต์ที่เราจะใช้มีดังนี้

Create a BigQuery table named bookshelf.books from this SELECT query: 
SELECT
  BookMeta_Title, Themes, ml_generate_text_llm_result Context 
   FROM
  ML.GENERATE_TEXT (
    MODEL `bookshelf.llm_model`,
    (
 SELECT
      BookMeta_Title,
      Themes,BookMeta_FullText,
      CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

คำตอบของ Gemini Chat มีดังนี้

df6595a4b14f7b9.png

นี่คือคำค้นหาในกรณีที่คุณต้องการคัดลอกจากที่นี่โดยตรง

CREATE TABLE bookshelf.books (
  BookMeta_Title STRING,
  Themes STRING,
  ml_generate_text_llm_result STRING
) AS (
  SELECT
    BookMeta_Title,
    Themes,
    ml_generate_text_llm_result Context
  FROM
    ML.GENERATE_TEXT (
      MODEL `bookshelf.llm_model`,
      (
        SELECT
          BookMeta_Title,
          Themes,
          BookMeta_FullText,
          CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
        FROM `gdelt-bq.internetarchivebooks.1920`
        LIMIT 5
      ),
      STRUCT(
        0.2 AS temperature,
        100 AS max_output_tokens,
        TRUE AS flatten_json_output
      )
    )
);

หลังจากเรียกใช้การค้นหาในเครื่องมือแก้ไข BigQuery แล้ว ผลลัพธ์จะเป็นดังนี้

2d1ce716f844b7ad.png

เท่านี้ก็เรียบร้อย ตอนนี้ให้ค้นหาตารางและลองใช้ข้อมูลเพื่อดูข้อมูลเชิงลึกเพิ่มเติม

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

ยินดีด้วย เราได้ดำเนินการต่อไปนี้เสร็จสมบูรณ์แล้ว และใช้ Gemini ในบางขั้นตอนของกระบวนการด้วย

  • สร้างโมเดลระยะไกลใน BigQuery ที่เรียกใช้ปลายทาง "text-bison-32k" ของ Vertex AI เพื่อระบุประเภท (หรือธีม) ของหนังสือจากรายการคีย์เวิร์ดที่คั่นด้วย ";" ในตาราง
  • สร้างฟังก์ชันระยะไกลใน BigQuery ที่จะเรียกใช้ Cloud Functions ของ Generative AI ที่ติดตั้งใช้งานนี้จากระยะไกล ฟังก์ชันนี้จะรับพรอมต์เป็นอินพุตและแสดงผลสตริงที่สรุปหนังสือใน 5 บรรทัด
  • ใช้โมเดลและฟังก์ชันระยะไกลเพื่อสรุปธีมและข้อความของหนังสือด้วยการค้นหา SQL และเขียนผลลัพธ์ลงในตารางใหม่ในชุดข้อมูลชั้นวางหนังสือ
  • ในงานที่มอบหมายถัดไป ให้ลองใช้ Gemini เพื่อรับ SQL สำหรับลบออบเจ็กต์ที่สร้างใน BigQuery ซึ่งจะครอบคลุมขั้นตอนการล้างข้อมูล