เกี่ยวกับ Codelab นี้
1 บทนำ
ในชั้นเรียนนี้ คุณจะได้เรียนรู้วิธีใช้ แมชชีนเลิร์นนิงของ BigQuery เพื่อการอนุมานด้วยโมเดลระยะไกล ( โมเดล Gemini) เพื่อวิเคราะห์รูปภาพโปสเตอร์ภาพยนตร์และสร้างข้อมูลสรุปของภาพยนตร์ตามโปสเตอร์โดยตรงในคลังข้อมูล BigQuery
รูปภาพด้านบน: ตัวอย่างรูปภาพโปสเตอร์ภาพยนตร์ที่คุณจะต้องวิเคราะห์
BigQuery เป็นแพลตฟอร์มข้อมูลวิเคราะห์ที่พร้อมใช้งาน AI และได้รับการจัดการอย่างเต็มรูปแบบ ซึ่งจะช่วยให้คุณได้รับคุณค่าสูงสุดจากข้อมูล ทั้งยังออกแบบมาให้รองรับหลายเครื่องมือ หลายรูปแบบ และหลายระบบคลาวด์ ฟีเจอร์สําคัญอย่างหนึ่งคือ แมชชีนเลิร์นนิงของ BigQuery สําหรับการอนุมาน ซึ่งช่วยให้คุณสร้างและเรียกใช้โมเดลแมชชีนเลิร์นนิง (ML) โดยใช้การค้นหา GoogleSQL ได้
Gemini คือกลุ่มโมเดล Generative AI ที่พัฒนาโดย Google ซึ่งออกแบบมาเพื่อกรณีการใช้งานแบบหลายรูปแบบ
การเรียกใช้โมเดล ML โดยใช้การค้นหา GoogleSQL
โดยทั่วไป การใช้ ML หรือปัญญาประดิษฐ์ (AI) ในชุดข้อมูลขนาดใหญ่ต้องใช้การเขียนโปรแกรมและความรู้เกี่ยวกับเฟรมเวิร์ก ML อย่างมาก ซึ่งจะจำกัดการพัฒนาโซลูชันไว้เฉพาะกลุ่มผู้เชี่ยวชาญเล็กๆ ภายในแต่ละบริษัท เมื่อใช้แมชชีนเลิร์นนิงของ BigQuery เพื่อการอนุมาน ผู้ปฏิบัติงาน SQL สามารถใช้ทักษะและเครื่องมือ SQL ที่มีอยู่เพื่อสร้างโมเดล และสร้างผลลัพธ์จาก LLM และ Cloud AI API
ข้อกำหนดเบื้องต้น
- ความเข้าใจพื้นฐานเกี่ยวกับ Google Cloud Console
- มีประสบการณ์เกี่ยวกับ BigQuery จะเป็นประโยชน์
สิ่งที่คุณจะได้เรียนรู้
- วิธีกําหนดค่าสภาพแวดล้อมและบัญชีเพื่อใช้ API
- วิธีสร้างการเชื่อมต่อทรัพยากรในระบบคลาวด์ใน BigQuery
- วิธีสร้างชุดข้อมูลและตารางออบเจ็กต์ใน BigQuery สำหรับรูปภาพโปสเตอร์ภาพยนตร์
- วิธีสร้างโมเดลระยะไกลของ Gemini ใน BigQuery
- วิธีแจ้งให้โมเดล Gemini แสดงข้อมูลสรุปภาพยนตร์สำหรับโปสเตอร์แต่ละรายการ
- วิธีสร้างการฝังข้อความสำหรับภาพยนตร์ที่แสดงในโปสเตอร์แต่ละใบ
- วิธีใช้ BigQuery
VECTOR_SEARCH
เพื่อจับคู่รูปภาพโปสเตอร์ภาพยนตร์กับภาพยนตร์ที่เกี่ยวข้องอย่างใกล้ชิดในชุดข้อมูล
สิ่งที่ต้องมี
- บัญชี Google Cloud และโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
- เว็บเบราว์เซอร์ เช่น Chrome
2 การตั้งค่าและข้อกําหนด
การตั้งค่าสภาพแวดล้อมด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะต้องไม่ซ้ำกันสำหรับโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) คอนโซล Cloud จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นจะเป็นอะไร ในโค้ดแล็บส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (ปกติจะระบุเป็น
PROJECT_ID
) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสอื่นแบบสุ่มได้ หรือจะลองใช้อุปกรณ์ของคุณเองเพื่อดูว่าอุปกรณ์พร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงชื่อหลังจากขั้นตอนนี้ไม่ได้ และชื่อดังกล่าวจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ามีค่าที่ 3 ซึ่งเป็นหมายเลขโปรเจ็กต์ที่ API บางรายการใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 รายการนี้ได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตามโค้ดแล็บนี้จะไม่เสียค่าใช้จ่ายมากนัก หากต้องการปิดใช้ทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินหลังจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างไว้หรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่ม Cloud Shell
แม้ว่า Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ในโค้ดแล็บนี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อดำเนินการเสร็จแล้ว คุณควรเห็นข้อมูลดังต่อไปนี้
เครื่องเสมือนนี้โหลดเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ ซึ่งจะมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานบน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพเครือข่ายและการรับรองได้อย่างมีประสิทธิภาพ คุณทํางานทั้งหมดในโค้ดแล็บนี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไรเลย
3 ก่อนเริ่มต้น
การตั้งค่าเพื่อทํางานกับโมเดล Gemini ใน BigQuery มี 2-3 ขั้นตอน ซึ่งรวมถึงการเปิดใช้ API, การสร้างการเชื่อมต่อทรัพยากร Cloud และการให้สิทธิ์บางอย่างแก่บัญชีบริการสําหรับการเชื่อมต่อทรัพยากร Cloud ขั้นตอนเหล่านี้เป็นแบบครั้งเดียวต่อโปรเจ็กต์และจะอธิบายในส่วนถัดไป
เปิดใช้ API
ใน Cloud Shell ให้ตรวจสอบว่าได้ตั้งค่ารหัสโปรเจ็กต์แล้ว โดยทำดังนี้
gcloud config set project [YOUR-PROJECT-ID]
ตั้งค่าตัวแปรสภาพแวดล้อม PROJECT_ID
PROJECT_ID=$(gcloud config get-value project)
กำหนดค่าภูมิภาคเริ่มต้นที่จะใช้กับโมเดล Vertex AI อ่านเพิ่มเติมเกี่ยวกับประเทศที่ Vertex AI พร้อมให้บริการ ในตัวอย่างนี้ เราใช้ภูมิภาค us-central1
gcloud config set compute/region us-central1
ตั้งค่าตัวแปรสภาพแวดล้อม REGION
REGION=$(gcloud config get-value compute/region)
เปิดใช้บริการที่จำเป็นทั้งหมด
gcloud services enable bigqueryconnection.googleapis.com \
aiplatform.googleapis.com
ผลลัพธ์ที่คาดไว้หลังจากเรียกใช้คําสั่งทั้งหมดข้างต้น
student@cloudshell:~ (test-project-001-402417)$ gcloud config set project test-project-001-402417 Updated property [core/project]. student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-14650] student@cloudshell:~ (test-project-001-402417)$ student@cloudshell:~ (test-project-001-402417)$ gcloud services enable bigqueryconnection.googleapis.com \ aiplatform.googleapis.com Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.
4 สร้างการเชื่อมต่อทรัพยากรระบบคลาวด์
ในขั้นตอนนี้ คุณจะต้องสร้างการเชื่อมต่อทรัพยากรในระบบคลาวด์ ซึ่งจะช่วยให้ BigQuery เข้าถึงไฟล์รูปภาพใน Cloud Storage และเรียกใช้ Vertex AI ได้
- ในคอนโซล Google Cloud ให้คลิก BigQuery ในเมนูการนำทาง (
)
- หากต้องการสร้างการเชื่อมต่อ ให้คลิก + เพิ่ม แล้วคลิกการเชื่อมต่อกับแหล่งข้อมูลภายนอก
- ในรายการประเภทการเชื่อมต่อ ให้เลือกโมเดลระยะไกล ฟังก์ชันระยะไกล และ BigLake ของ Vertex AI (ทรัพยากรระบบคลาวด์)
- ในช่องรหัสการเชื่อมต่อ ให้ป้อน gemini_conn สำหรับการเชื่อมต่อ
- สําหรับประเภทสถานที่ตั้ง ให้เลือกหลายภูมิภาค จากนั้นเลือกหลายภูมิภาคในสหรัฐอเมริกาจากเมนูแบบเลื่อนลง
- ใช้ค่าเริ่มต้นสำหรับการตั้งค่าอื่นๆ
- คลิกสร้างการเชื่อมต่อ
- คลิกไปที่การเชื่อมต่อ
- ในแผงข้อมูลการเชื่อมต่อ ให้คัดลอกรหัสบัญชีบริการไปยังไฟล์ข้อความเพื่อใช้ในขั้นตอนถัดไป นอกจากนี้ คุณจะเห็นการเชื่อมต่อที่เพิ่มในส่วนการเชื่อมต่อภายนอกของโปรเจ็กต์ใน BigQuery Explorer ด้วย
5 ให้สิทธิ์ IAM แก่บัญชีบริการของการเชื่อมต่อ
ในงานนี้ คุณจะให้สิทธิ์ IAM ของบัญชีบริการการเชื่อมต่อทรัพยากร Cloud ผ่านบทบาทเพื่อให้เข้าถึงบริการ Vertex AI ได้
- ในคอนโซล Google Cloud ให้คลิก IAM และผู้ดูแลระบบในเมนูการนำทาง
- คลิกให้สิทธิ์เข้าถึง
- ป้อนรหัสบัญชีบริการที่คัดลอกไว้ก่อนหน้านี้ในช่องผู้ใช้หลักรายใหม่
- ในช่อง "เลือกบทบาท" ให้ป้อน Vertex AI แล้วเลือกบทบาทผู้ใช้ Vertex AI
- คลิกบันทึก ผลลัพธ์ที่ได้คือตอนนี้รหัสบัญชีบริการมีบทบาทผู้ใช้ Vertex AI แล้ว
6 สร้างชุดข้อมูลและตารางออบเจ็กต์ใน BigQuery สําหรับรูปภาพโปสเตอร์ภาพยนตร์
ในงานนี้ คุณจะได้สร้างชุดข้อมูลสําหรับโปรเจ็กต์และตารางออบเจ็กต์ภายในเพื่อจัดเก็บรูปภาพโปสเตอร์
ชุดข้อมูลรูปภาพโปสเตอร์ภาพยนตร์ที่ใช้ในบทแนะนำนี้จัดเก็บอยู่ในที่เก็บข้อมูล Google Cloud Storage สาธารณะ: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters
สร้างชุดข้อมูล
คุณจะต้องสร้างชุดข้อมูลเพื่อจัดเก็บออบเจ็กต์ฐานข้อมูล ซึ่งรวมถึงตารางและโมเดลที่ใช้ในบทแนะนำนี้
- ในคอนโซล Google Cloud ให้เลือกเมนูการนำทาง (
) แล้วเลือก BigQuery
- ในแผง Explorer ข้างชื่อโปรเจ็กต์ ให้เลือกดูการดำเนินการ (
) แล้วเลือกสร้างชุดข้อมูล
- ในแผงสร้างชุดข้อมูล ให้ป้อนข้อมูลต่อไปนี้
- รหัสชุดข้อมูล: gemini_demo
- ประเภทสถานที่ตั้ง: เลือกหลายภูมิภาค
- หลายภูมิภาค: เลือก US
- ปล่อยช่องอื่นๆ เป็นค่าเริ่มต้น
- คลิกสร้างชุดข้อมูล
ผลลัพธ์ที่ได้คือระบบจะสร้างชุดข้อมูล gemini_demo
และแสดงไว้ใต้โปรเจ็กต์ของคุณใน BigQuery Explorer
สร้างตารางออบเจ็กต์
BigQuery ไม่เพียงเก็บ Structured Data เท่านั้น แต่ยังเข้าถึง Unstructured Data (เช่น รูปภาพโปสเตอร์) ผ่านตารางออบเจ็กต์ได้ด้วย
คุณสร้างตารางออบเจ็กต์โดยชี้ไปที่ที่เก็บข้อมูล Cloud Storage และตารางออบเจ็กต์ที่ได้จะมีแถวสำหรับออบเจ็กต์แต่ละรายการจากที่เก็บข้อมูลพร้อมเส้นทางพื้นที่เก็บข้อมูลและข้อมูลเมตา
คุณจะใช้การค้นหา SQL เพื่อสร้างตารางออบเจ็กต์
- คลิก + เพื่อสร้างคําค้นหา SQL ใหม่
- วางคําค้นหาด้านล่างในตัวแก้ไขคําค้นหา
CREATE OR REPLACE EXTERNAL TABLE
`gemini_demo.movie_posters`
WITH CONNECTION `us.gemini_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']
);
- เรียกใช้การค้นหา ผลลัพธ์ที่ได้คือตารางออบเจ็กต์
movie_posters
ที่เพิ่มลงในชุดข้อมูลgemini_demo
และโหลดด้วยURI
(ตำแหน่ง Cloud Storage) ของรูปภาพโปสเตอร์ภาพยนตร์แต่ละรูป - ในเครื่องมือสำรวจ ให้คลิก
movie_posters
แล้วตรวจสอบสคีมาและรายละเอียด โปรดค้นหาตารางเพื่อตรวจสอบระเบียนที่ต้องการ
7 สร้างโมเดลระยะไกล Gemini ใน BigQuery
เมื่อสร้างตารางออบเจ็กต์แล้ว คุณก็เริ่มทํางานกับตารางได้ ในขั้นตอนนี้ คุณจะต้องสร้างโมเดลระยะไกลสําหรับ Gemini 1.5 Flash เพื่อให้พร้อมใช้งานใน BigQuery
สร้างโมเดลระยะไกล Gemini 1.5 Flash
- คลิก + เพื่อสร้างคําค้นหา SQL ใหม่
- วางคําค้นหาด้านล่างและเรียกใช้ในตัวแก้ไขคําค้นหา
CREATE OR REPLACE MODEL `gemini_demo.gemini_1_5_flash`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'gemini-1.5-flash')
ผลลัพธ์ที่ได้คือระบบจะสร้างรูปแบบ gemini_1_5_flash
และคุณจะเห็นรูปแบบดังกล่าวเพิ่มลงในชุดข้อมูล gemini_demo
ในส่วนรูปแบบ
- ในเครื่องมือสํารวจ ให้คลิกรุ่น
gemini_1_5_flash
แล้วตรวจสอบรายละเอียด
8 แจ้งให้โมเดล Gemini แสดงข้อมูลสรุปภาพยนตร์สำหรับโปสเตอร์แต่ละใบ
ในงานนี้ คุณจะใช้โมเดลระยะไกลของ Gemini ที่เพิ่งสร้างขึ้นเพื่อวิเคราะห์รูปภาพโปสเตอร์ภาพยนตร์และสร้างข้อมูลสรุปสำหรับภาพยนตร์แต่ละเรื่อง
คุณส่งคําขอไปยังโมเดลได้โดยใช้ฟังก์ชัน ML.GENERATE_TEXT
โดยอ้างอิงโมเดลในพารามิเตอร์
วิเคราะห์รูปภาพด้วยโมเดล Gemini 1.5 Flash
- สร้างและเรียกใช้การค้นหาใหม่ด้วยคำสั่ง SQL ต่อไปนี้
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results` AS (
SELECT
uri,
ml_generate_text_llm_result
FROM
ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_1_5_flash`,
TABLE `gemini_demo.movie_posters`,
STRUCT( 0.2 AS temperature,
'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer. Do not use JSON decorators.' AS PROMPT,
TRUE AS FLATTEN_JSON_OUTPUT)));
เมื่อการค้นหาทํางาน BigQuery จะแสดงพรอมต์รูปแบบ Gemini สําหรับแต่ละแถวของตารางออบเจ็กต์ โดยรวมรูปภาพเข้ากับพรอมต์แบบคงที่ที่ระบุ ผลลัพธ์คือระบบจะสร้างตาราง movie_posters_results
- มาดูผลลัพธ์กัน สร้างและเรียกใช้การค้นหาใหม่ด้วยคำสั่ง SQL ต่อไปนี้
SELECT * FROM `gemini_demo.movie_posters_results`
ผลลัพธ์คือแถวของโปสเตอร์ภาพยนตร์แต่ละรายการที่มี URI
(ตำแหน่งในระบบพื้นที่เก็บข้อมูลระบบคลาวด์ของรูปภาพโปสเตอร์ภาพยนตร์) และผลลัพธ์ JSON ที่มีชื่อภาพยนตร์และปีที่ภาพยนตร์ออกฉายจากรูปแบบ Flash ของ Gemini 1.5
คุณสามารถเรียกดูผลลัพธ์เหล่านี้ในรูปแบบที่อ่านง่ายขึ้นได้โดยใช้การค้นหาถัดไป การค้นหานี้ใช้ SQL เพื่อดึงชื่อภาพยนตร์และปีที่เผยแพร่จากคำตอบเหล่านี้ไปยังคอลัมน์ใหม่
- สร้างและเรียกใช้การค้นหาใหม่ด้วยคำสั่ง SQL ต่อไปนี้
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results_formatted` AS (
SELECT
uri,
JSON_VALUE(ml_generate_text_llm_result, "$.title") AS title,
JSON_VALUE(ml_generate_text_llm_result, "$.year") AS year
FROM
`gemini_demo.movie_posters_results` results )
ผลลัพธ์คือระบบจะสร้างตาราง movie_posters_result_formatted
- คุณสามารถค้นหาตารางด้วยข้อความค้นหาด้านล่างเพื่อดูแถวที่สร้าง
SELECT * FROM `gemini_demo.movie_posters_results_formatted`
โปรดสังเกตว่าผลลัพธ์ในคอลัมน์ URI
ยังคงเหมือนเดิม แต่ตอนนี้ระบบได้แปลง JSON ไปยังคอลัมน์ title
และ year
สำหรับแต่ละแถวแล้ว
แจ้งให้โมเดล Gemini 1.5 Flash แสดงสรุปภาพยนตร์
ในกรณีที่คุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับภาพยนตร์แต่ละเรื่อง เช่น สรุปแบบข้อความของภาพยนตร์แต่ละเรื่อง กรณีการใช้งานการสร้างเนื้อหานี้เหมาะอย่างยิ่งสําหรับโมเดล LLM เช่น โมเดล Gemini 1.5 Flash
- คุณสามารถใช้ Gemini 1.5 Flash เพื่อแสดงข้อมูลสรุปของภาพยนตร์สำหรับโปสเตอร์แต่ละรายการได้โดยเรียกใช้การค้นหาด้านล่าง
SELECT
uri,
title,
year,
prompt,
ml_generate_text_llm_result
FROM
ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_1_5_flash`,
(
SELECT
CONCAT('Provide a short summary of movie titled ',title, ' from the year ',year,'.') AS prompt,
uri,
title,
year
FROM
`gemini_demo.movie_posters_results_formatted`
LIMIT
20 ),
STRUCT(0.2 AS temperature,
TRUE AS FLATTEN_JSON_OUTPUT));
สังเกตฟิลด์ ml_generate_text_llm_result
ของผลลัพธ์ ซึ่งจะมีข้อมูลสรุปสั้นๆ ของภาพยนตร์
9 สร้างการฝังข้อความโดยใช้โมเดลระยะไกล
ตอนนี้คุณสามารถรวม Structured Data ที่คุณสร้างขึ้นกับ Structured Data อื่นๆ ในคลังข้อมูลได้แล้ว ชุดข้อมูลสาธารณะของ IMDB ที่มีอยู่ใน BigQuery มีข้อมูลเกี่ยวกับภาพยนตร์มากมาย รวมถึงการให้คะแนนโดยผู้ชมและตัวอย่างรีวิวแบบอิสระของผู้ใช้ด้วย ข้อมูลนี้จะช่วยให้คุณวิเคราะห์โปสเตอร์ภาพยนตร์ได้ละเอียดยิ่งขึ้นและเข้าใจว่าผู้คนรับรู้ภาพยนตร์เหล่านี้อย่างไร
คุณต้องมีคีย์จึงจะรวมข้อมูลได้ ในกรณีนี้ ชื่อภาพยนตร์ที่โมเดล Gemini สร้างขึ้นอาจไม่ตรงกับชื่อในชุดข้อมูล IMDB ทั้งหมด
ในขั้นตอนนี้ คุณจะต้องสร้าง การฝังข้อความของชื่อภาพยนตร์และปีจากทั้ง 2 ชุดข้อมูล จากนั้นใช้ระยะห่างระหว่างการฝังเหล่านี้เพื่อรวมชื่อ IMDB ที่ใกล้เคียงที่สุดเข้ากับชื่อโปสเตอร์ภาพยนตร์จากชุดข้อมูลที่สร้างขึ้นใหม่
สร้างโมเดลระยะไกล
หากต้องการสร้างการฝังข้อความ คุณจะต้องสร้างโมเดลระยะไกลใหม่ซึ่งชี้ไปยังปลายทาง text-multilingual-embedding-002
- สร้างและเรียกใช้การค้นหาใหม่ด้วยคำสั่ง SQL ต่อไปนี้
CREATE OR REPLACE MODEL `gemini_demo.text_embedding`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'text-multilingual-embedding-002')
ผลลัพธ์คือระบบจะสร้างรูปแบบ text_embedding
และปรากฏในโปรแกรมสํารวจใต้ชุดข้อมูล gemini_demo
สร้างการฝังข้อความสำหรับชื่อและปีที่เชื่อมโยงกับโปสเตอร์
ตอนนี้คุณจะใช้โมเดลระยะไกลนี้กับฟังก์ชัน ML.GENERATE_EMBEDDING
เพื่อสร้างการฝังสำหรับชื่อและปีที่แสดงในโปสเตอร์ภาพยนตร์แต่ละรายการ
- สร้างและเรียกใช้การค้นหาใหม่ด้วยคำสั่ง SQL ต่อไปนี้
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results_embeddings` AS (
SELECT
*
FROM
ML.GENERATE_EMBEDDING(
MODEL `gemini_demo.text_embedding`,
(
SELECT
CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content,
title,
year,
uri
FROM
`gemini_demo.movie_posters_results_formatted` ),
STRUCT(TRUE AS flatten_json_output)));
ผลลัพธ์ที่ได้คือระบบจะสร้างตาราง movie_poster_results_embeddings
ที่มีการฝังเนื้อหาข้อความที่ต่อเชื่อมกันสำหรับแต่ละแถวของตาราง gemini_demo.movie_posters_results_formatted
- คุณดูผลการค้นหาได้โดยใช้การค้นหาใหม่ด้านล่าง
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`
ในส่วนนี้ คุณจะเห็นการฝัง (เวกเตอร์ที่แสดงด้วยตัวเลข) สําหรับภาพยนตร์แต่ละเรื่องซึ่งโมเดลสร้างขึ้น
สร้างการฝังข้อความสําหรับชุดข้อมูล IMDB ชุดย่อย
คุณจะต้องสร้างข้อมูลพร็อพเพอร์ตี้ใหม่จากชุดข้อมูล IMDB สาธารณะซึ่งมีเฉพาะภาพยนตร์ที่เผยแพร่ก่อนปี 1935 (ระยะเวลาที่ทราบของภาพยนตร์จากภาพโปสเตอร์)
- สร้างและเรียกใช้การค้นหาใหม่ด้วยคำสั่ง SQL ต่อไปนี้
CREATE OR REPLACE VIEW
`gemini_demo.imdb_movies` AS (
WITH
reviews AS (
SELECT
reviews.movie_id AS movie_id,
title.primary_title AS title,
title.start_year AS year,
reviews.review AS review
FROM
`bigquery-public-data.imdb.reviews` reviews
LEFT JOIN
`bigquery-public-data.imdb.title_basics` title
ON
reviews.movie_id = title.tconst)
SELECT
DISTINCT(movie_id),
title,
year
FROM
reviews
WHERE
year < 1935)
ผลลัพธ์ที่ได้คือมุมมองใหม่ที่มีรายการรหัส ภาพยนตร์ ชื่อ และปีเผยแพร่ที่ต่างกันจากตาราง bigquery-public-data.imdb.reviews
สำหรับภาพยนตร์ทั้งหมดในชุดข้อมูลที่เผยแพร่ก่อนปี 1935
- ตอนนี้คุณจะต้องสร้างการฝังสำหรับภาพยนตร์ชุดย่อยจาก IMDB โดยใช้กระบวนการที่คล้ายกับส่วนก่อนหน้า สร้างและเรียกใช้การค้นหาใหม่ด้วยคำสั่ง SQL ต่อไปนี้
CREATE OR REPLACE TABLE
`gemini_demo.imdb_movies_embeddings` AS (
SELECT
*
FROM
ML.GENERATE_EMBEDDING( MODEL `gemini_demo.text_embedding`,
(
SELECT
CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content,
title,
year,
movie_id
FROM
`gemini_demo.imdb_movies` ),
STRUCT(TRUE AS flatten_json_output) )
WHERE
ml_generate_embedding_status = '' );
ผลการค้นหาคือตารางที่มีการฝังสําหรับเนื้อหาข้อความของตาราง gemini_demo.imdb_movies
จับคู่รูปภาพโปสเตอร์ภาพยนตร์กับ IMDB movie_id
โดยใช้ BigQuery VECTOR_SEARCH
ตอนนี้คุณสามารถรวม 2 ตารางเข้าด้วยกันโดยใช้ฟังก์ชัน VECTOR_SEARCH
- สร้างและเรียกใช้การค้นหาใหม่ด้วยคำสั่ง SQL ต่อไปนี้
SELECT
query.uri AS poster_uri,
query.title AS poster_title,
query.year AS poster_year,
base.title AS imdb_title,
base.year AS imdb_year,
base.movie_id AS imdb_movie_id,
distance
FROM
VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`,
'ml_generate_embedding_result',
TABLE `gemini_demo.movie_posters_results_embeddings`,
'ml_generate_embedding_result',
top_k => 1,
distance_type => 'COSINE');
คําค้นหาใช้ฟังก์ชัน VECTOR_SEARCH
เพื่อค้นหาเพื่อนบ้านที่ใกล้ที่สุดในตาราง gemini_demo.imdb_movies_embeddings
สําหรับแต่ละแถวในตาราง gemini_demo.movie_posters_results_embeddings
ระบบจะค้นหาเพื่อนบ้านที่ใกล้ที่สุดโดยใช้เมตริกระยะทางโคไซน์ ซึ่งจะระบุความคล้ายคลึงกันของข้อมูลเชิงลึก 2 รายการ
การค้นหานี้สามารถใช้เพื่อค้นหาภาพยนตร์ที่คล้ายกันที่สุดจากชุดข้อมูล IMDB สำหรับภาพยนตร์แต่ละเรื่องที่ Gemini 1.5 Flash ระบุในโปสเตอร์ภาพยนตร์ ตัวอย่างเช่น คุณอาจใช้ข้อความค้นหานี้เพื่อค้นหารายการที่ตรงกับภาพยนตร์ "Au Secours!" มากที่สุดในชุดข้อมูลสาธารณะของ IMDB ซึ่งอ้างอิงภาพยนตร์เรื่องนี้โดยใช้ชื่อภาษาอังกฤษว่า "Help!"
- สร้างและเรียกใช้การค้นหาใหม่เพื่อรวมข้อมูลเพิ่มเติมเกี่ยวกับการจัดประเภทภาพยนตร์ที่ระบุไว้ในชุดข้อมูลสาธารณะของ IMDB
SELECT
query.uri AS poster_uri,
query.title AS poster_title,
query.year AS poster_year,
base.title AS imdb_title,
base.year AS imdb_year,
base.movie_id AS imdb_movie_id,
distance,
imdb.average_rating,
imdb.num_votes
FROM
VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`,
'ml_generate_embedding_result',
TABLE `gemini_demo.movie_posters_results_embeddings`,
'ml_generate_embedding_result',
top_k => 1,
distance_type => 'COSINE') DATA
LEFT JOIN
`bigquery-public-data.imdb.title_ratings` imdb
ON
base.movie_id = imdb.tconst
ORDER BY
imdb.average_rating DESC
การค้นหานี้คล้ายกับคำค้นหาก่อนหน้า ระบบยังคงใช้การนำเสนอตัวเลขพิเศษที่เรียกว่าการฝังเวกเตอร์เพื่อค้นหาภาพยนตร์ที่คล้ายกับโปสเตอร์ภาพยนตร์หนึ่งๆ อย่างไรก็ตาม ระบบจะรวมคะแนนเฉลี่ยและจำนวนโหวตสำหรับภาพยนตร์ใกล้เคียงที่สุดแต่ละเรื่องจากตารางแยกต่างหากจากชุดข้อมูลสาธารณะของ IMDB ด้วย
10 ขอแสดงความยินดี
ขอแสดงความยินดีที่ทํา Codelab จนเสร็จสมบูรณ์ คุณสร้างตารางออบเจ็กต์สําหรับรูปภาพโปสเตอร์ใน BigQuery, สร้างโมเดล Gemini ระยะไกล, ใช้โมเดลเพื่อแจ้งให้โมเดล Gemini วิเคราะห์รูปภาพและสร้างสรุปภาพยนตร์, สร้างการฝังข้อความสําหรับชื่อภาพยนตร์ และใช้การฝังเหล่านั้นเพื่อจับคู่รูปภาพโปสเตอร์ภาพยนตร์กับชื่อภาพยนตร์ที่เกี่ยวข้องในชุดข้อมูล IMDB เรียบร้อยแล้ว
สิ่งที่เราได้พูดถึง
- วิธีกําหนดค่าสภาพแวดล้อมและบัญชีเพื่อใช้ API
- วิธีสร้างการเชื่อมต่อทรัพยากรในระบบคลาวด์ใน BigQuery
- วิธีสร้างชุดข้อมูลและตารางออบเจ็กต์ใน BigQuery สำหรับรูปภาพโปสเตอร์ภาพยนตร์
- วิธีสร้างโมเดลระยะไกลของ Gemini ใน BigQuery
- วิธีแจ้งให้โมเดล Gemini แสดงข้อมูลสรุปภาพยนตร์สำหรับโปสเตอร์แต่ละรายการ
- วิธีสร้างการฝังข้อความสำหรับภาพยนตร์ที่แสดงในโปสเตอร์แต่ละใบ
- วิธีใช้ BigQuery
VECTOR_SEARCH
เพื่อจับคู่รูปภาพโปสเตอร์ภาพยนตร์กับภาพยนตร์ที่เกี่ยวข้องอย่างใกล้ชิดในชุดข้อมูล
ขั้นตอนถัดไป / ดูข้อมูลเพิ่มเติม