1. บทนำ
ในโค้ดแล็บนี้ ฉันได้แสดงขั้นตอนในการสรุปซอร์สโค้ดจากที่เก็บ GitHub และการระบุภาษาของการเขียนโปรแกรมในที่เก็บ โดยใช้โมเดลภาษาขนาดใหญ่ของ Vertex AI สำหรับการสร้างข้อความ ( text-bison) เป็นฟังก์ชันระยะไกลที่โฮสต์ใน BigQuery เรามีสแนปชอตที่สมบูรณ์ของที่เก็บ GitHub แบบโอเพนซอร์สกว่า 2.8 ล้านรายการในชุดข้อมูลสาธารณะของ Google BigQuery แล้วในตอนนี้ ต้องขอขอบคุณ Archive Project ของ GitHub รายการบริการที่ใช้มีดังนี้
- BigQuery ML
- Vertex AI PaLM API
สิ่งที่คุณจะสร้าง
คุณจะสร้าง
- ชุดข้อมูล BigQuery ที่มีโมเดล
- โมเดล BigQuery ที่โฮสต์ Vertex AI PaLM API เป็นฟังก์ชันระยะไกล
- การเชื่อมต่อภายนอกเพื่อสร้างการเชื่อมต่อระหว่าง BigQuery กับ Vertex AI
2. ข้อกำหนด
3. ก่อนเริ่มต้น
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าโปรเจ็กต์เปิดใช้การเรียกเก็บเงินแล้วหรือไม่
- ตรวจสอบว่าได้เปิดใช้ API ที่จำเป็นทั้งหมด (BigQuery API, Vertex AI API, BigQuery Connection API) แล้ว
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud และมาพร้อมกับ bq ที่โหลดไว้ล่วงหน้า ดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ
จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell ที่มุมขวาบน

หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project <YOUR_PROJECT_ID>
- ไปที่คอนโซล BigQuery โดยตรงโดยป้อน URL ต่อไปนี้ในเบราว์เซอร์ https://console.cloud.google.com/bigquery
4. กำลังเตรียมข้อมูล
ในกรณีการใช้งานนี้ เราใช้เนื้อหาซอร์สโค้ดจากชุดข้อมูล github_repos ในชุดข้อมูลสาธารณะของ Google BigQuery หากต้องการใช้ฟีเจอร์นี้ ให้ค้นหา "github_repos" ในคอนโซล BigQuery แล้วกด Enter คลิกดาวข้างชุดข้อมูลที่แสดงเป็นผลการค้นหา จากนั้นคลิกตัวเลือก "แสดงเฉพาะรายการที่ติดดาว" เพื่อดูเฉพาะชุดข้อมูลนั้นจากชุดข้อมูลสาธารณะ

ขยายตารางในชุดข้อมูลเพื่อดูสคีมาและตัวอย่างข้อมูล เราจะใช้ sample_contents ซึ่งมีเพียงตัวอย่าง (10%) ของข้อมูลทั้งหมดในตารางเนื้อหา ตัวอย่างข้อมูลมีดังนี้

5. การสร้างชุดข้อมูล BigQuery
ชุดข้อมูล BigQuery คือคอลเล็กชันของตาราง ตารางทั้งหมดในชุดข้อมูลจะจัดเก็บไว้ในตำแหน่งข้อมูลเดียวกัน นอกจากนี้ คุณยังแนบการควบคุมการเข้าถึงที่กำหนดเองเพื่อจำกัดการเข้าถึงชุดข้อมูลและตารางของชุดข้อมูลได้ด้วย
สร้างชุดข้อมูลในภูมิภาค "สหรัฐอเมริกา" (หรือภูมิภาคใดก็ได้ที่เราต้องการ) ชื่อ bq_llm

ชุดข้อมูลนี้จะเก็บโมเดล ML ที่เราจะสร้างในขั้นตอนถัดไป โดยปกติแล้ว เราจะจัดเก็บข้อมูลที่ใช้ในแอปพลิเคชัน ML ไว้ในตารางในชุดข้อมูลนี้ด้วย แต่ในกรณีการใช้งานของเรา ข้อมูลอยู่ในชุดข้อมูลสาธารณะของ BigQuery อยู่แล้ว เราจึงจะอ้างอิงข้อมูลดังกล่าวโดยตรงจากชุดข้อมูลที่สร้างขึ้นใหม่ตามที่จำเป็น หากต้องการทำโปรเจ็กต์นี้ในชุดข้อมูลของคุณเองที่อยู่ใน CSV (หรือไฟล์อื่นๆ) คุณสามารถโหลดข้อมูลลงในชุดข้อมูล BigQuery ลงในตารางได้โดยเรียกใช้คำสั่งด้านล่างจากเทอร์มินัล Cloud Shell
bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string
6. สร้างการเชื่อมต่อภายนอก
สร้างการเชื่อมต่อภายนอก (เปิดใช้ BQ Connection API หากยังไม่ได้ดำเนินการ) และจดรหัสบัญชีบริการจากรายละเอียดการกำหนดค่าการเชื่อมต่อ
- คลิกปุ่ม +เพิ่ม ในแผง BigQuery Explorer (ทางด้านซ้ายของคอนโซล BigQuery) แล้วคลิก "การเชื่อมต่อกับแหล่งข้อมูลภายนอก" ในแหล่งข้อมูลยอดนิยมที่แสดง
- เลือกประเภทการเชื่อมต่อเป็น "ฟังก์ชัน BigLake และฟังก์ชันระยะไกล" และระบุ "llm-conn" เป็นรหัสการเชื่อมต่อ

- เมื่อสร้างการเชื่อมต่อแล้ว ให้จดบันทึกบัญชีบริการที่สร้างขึ้นจากรายละเอียดการกำหนดค่าการเชื่อมต่อ
7. ให้สิทธิ์
ในขั้นตอนนี้ เราจะให้สิทธิ์แก่บัญชีบริการเพื่อเข้าถึงบริการ Vertex AI
เปิด IAM แล้วเพิ่มบัญชีบริการที่คุณคัดลอกหลังจากสร้างการเชื่อมต่อภายนอกเป็น Principal แล้วเลือกบทบาท "ผู้ใช้ Vertex AI"

8. สร้างโมเดล ML ระยะไกล
สร้างโมเดลระยะไกลที่แสดงถึงโมเดลภาษาขนาดใหญ่ของ Vertex AI ที่โฮสต์ไว้
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-conn`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
โดยจะสร้างโมเดลชื่อ llm_model ในชุดข้อมูล bq_llm ซึ่งใช้ประโยชน์จาก CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 API ของ Vertex AI เป็นฟังก์ชันระยะไกล ซึ่งอาจใช้เวลาหลายวินาทีจึงจะเสร็จสมบูรณ์
9. สร้างข้อความโดยใช้โมเดล ML
เมื่อสร้างโมเดลแล้ว ให้ใช้โมเดลเพื่อสร้าง สรุป หรือจัดหมวดหมู่ข้อความ
SELECT
ml_generate_text_result['predictions'][0]['content'] AS generated_text,
ml_generate_text_result['predictions'][0]['safetyAttributes']
AS safety_attributes,
* EXCEPT (ml_generate_text_result)
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens));
**คำอธิบาย:
ml_generate_text_result** คือการตอบกลับจากโมเดลการสร้างข้อความในรูปแบบ JSON ซึ่งมีทั้งแอตทริบิวต์เนื้อหาและความปลอดภัย ดังนี้ ก. เนื้อหาแสดงผลลัพธ์ข้อความที่สร้างขึ้น ข แอตทริบิวต์ความปลอดภัยแสดงถึงตัวกรองเนื้อหาในตัวที่มีเกณฑ์ที่ปรับได้ซึ่งเปิดใช้ใน Vertex AI Palm API เพื่อหลีกเลี่ยงการตอบกลับที่ไม่ตั้งใจหรือไม่คาดคิดจากโมเดลภาษาขนาดใหญ่ โดยระบบจะบล็อกการตอบกลับหากละเมิดเกณฑ์ความปลอดภัย
ML.GENERATE_TEXT คือโครงสร้างที่คุณใช้ใน BigQuery เพื่อเข้าถึง LLM ของ Vertex AI เพื่อทำงานสร้างข้อความ
CONCAT จะต่อท้ายข้อความ PROMPT และระเบียนฐานข้อมูล
github_repos คือชื่อชุดข้อมูล และ sample_contents คือชื่อของตารางที่เก็บข้อมูลที่เราจะใช้ในการออกแบบพรอมต์
อุณหภูมิคือพารามิเตอร์พรอมต์ที่ใช้ควบคุมความสุ่มของคำตอบ โดยยิ่งน้อยยิ่งดีในแง่ของความเกี่ยวข้อง
Max_output_tokens คือจำนวนคำที่คุณต้องการในคำตอบ
การตอบกลับการค้นหาจะมีลักษณะดังนี้

10. ทำให้ผลการค้นหาแบนราบ
มาทำให้ผลลัพธ์แบนราบเพื่อที่เราจะได้ไม่ต้องถอดรหัส JSON อย่างชัดเจนในคำค้นหา
SELECT *
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
**คำอธิบาย:
Flatten_json_output** แสดงค่าบูลีน ซึ่งหากตั้งค่าเป็นจริงจะแสดงข้อความที่เข้าใจได้ง่ายซึ่งดึงมาจากคำตอบ JSON
การตอบกลับการค้นหาจะมีลักษณะดังนี้

11. ล้างข้อมูล
โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโพสต์นี้
- ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร
- ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
- ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเพื่อลบโปรเจ็กต์
12. ขอแสดงความยินดี
ยินดีด้วย คุณใช้ LLM การสร้างข้อความของ Vertex AI โดยอัตโนมัติเพื่อทำการวิเคราะห์ข้อความในข้อมูลโดยใช้เฉพาะการค้นหา SQL ได้สำเร็จ ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่มีได้ในเอกสารประกอบของผลิตภัณฑ์ LLM ของ Vertex AI