สร้างรากฐานข้อมูลด้วยข้อมูลเมตาของ Dataplex

1. บทนำ

โมเดล Generative AI เป็นเครื่องมือให้เหตุผลที่มีประสิทธิภาพ แต่ไม่มีบริบทของสถาบัน หากผู้บริหารถามเอเจนต์ AI ว่า "รายได้ในไตรมาสที่ 1 ของเราคือเท่าใด" เอเจนต์อาจพบตารางหลายสิบรายการที่มีชื่อว่า "รายได้" ใน Data Lake บางรายการเป็นรายงานทางการเงินที่เข้มงวด บางรายการเป็นการประมาณทางการตลาดแบบเรียลไทม์ และหลายรายการอาจเป็นแซนด์บ็อกซ์ที่เลิกใช้งานแล้ว

หากไม่มีการอ้างอิงที่ชัดเจน เอเจนต์ AI จะเลือกตารางตามความคล้ายคลึงของชื่ออย่างง่าย ซึ่งจะทำให้ได้คำตอบที่ "ผิดอย่างน่าเชื่อถือ" ซึ่งมาจากข้อมูลที่ยังไม่ได้รับการยืนยัน

Codelab นี้เป็นส่วนหนึ่งของชุดข้อมูล 2 ส่วนที่อธิบายวิธีสร้างเอเจนต์ GenAI ที่คำนึงถึงการกำกับดูแล

ในส่วนแรกนี้ คุณจะสร้างรากฐานข้อมูล คุณจะตั้งค่าทะเลสาบข้อมูลที่ "ไม่เป็นระเบียบ" ที่สมจริงใน BigQuery ใช้แท็กข้อมูลเมตาที่เข้มงวด (แง่มุมของ Dataplex) เพื่อแยกความแตกต่างระหว่างข้อมูลที่ถูกต้องกับข้อมูลที่ไม่เกี่ยวข้อง และใช้ Gemini CLI เพื่อทดสอบในเครื่องว่า LLM ปฏิบัติตามกฎการกำกับดูแลอย่างเคร่งครัดหรือไม่

(คุณสามารถอ่านส่วนที่ 2 ของชุดนี้ ซึ่งครอบคลุมวิธีติดตั้งใช้งานต้นแบบในเครื่องนี้กับเว็บแอปพลิเคชันระดับองค์กรที่ปลอดภัยโดยใช้ Model Context Protocol (MCP) และ Cloud Run 👉 อ่านตอนที่ 2)

be15d5f41f0d716c.png

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

  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • ความเข้าใจพื้นฐานและความคุ้นเคยกับ BigQuery, Dataplex Universal Catalog และ Terraform
  • สิทธิ์เข้าถึง Google Cloud Shell

สิ่งที่คุณจะได้เรียนรู้

  • ติดตั้งใช้งานที่เก็บข้อมูลขนาดใหญ่แบบหลายระดับที่สมจริงโดยใช้ Terraform
  • ออกแบบเทมเพลตข้อมูลเมตาที่เข้มงวด (ประเภทแง่มุม) ใน Dataplex เพื่อแยกความแตกต่างระหว่างผลิตภัณฑ์ข้อมูลอย่างเป็นทางการกับตารางแซนด์บ็อกซ์ดิบ
  • ยืนยันกฎการกำกับดูแลในเครื่องโดยใช้ Gemini CLI ก่อนเขียนโค้ดแอปพลิเคชัน

สิ่งที่คุณต้องมี

  • สิทธิ์เข้าถึง Google Cloud Shell
  • Terraform (ติดตั้งไว้ล่วงหน้าใน Cloud Shell)
  • Gemini CLI (ติดตั้งล่วงหน้าใน Cloud Shell)

แนวคิดหลัก

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

2. การตั้งค่าและข้อกำหนด

เริ่มต้น Cloud Shell

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

จาก Google Cloud Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

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

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

ภาพหน้าจอของเทอร์มินัล Google Cloud Shell ที่แสดงว่าสภาพแวดล้อมเชื่อมต่อแล้ว

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

เริ่มต้นสภาพแวดล้อม

เปิด Cloud Shell แล้วตั้งค่าตัวแปรโปรเจ็กต์เพื่อให้แน่ใจว่าคำสั่งทั้งหมดจะกำหนดเป้าหมายไปยังโครงสร้างพื้นฐานที่ถูกต้อง

export PROJECT_ID=$(gcloud config get-value project)
gcloud config set project $PROJECT_ID
export REGION="us-central1"

เปิดใช้ API

เปิดใช้บริการ Google Cloud ที่จำเป็นเพื่อดำเนินการตามวิธีการต่อไปนี้

gcloud services enable \
  artifactregistry.googleapis.com \
  bigqueryunified.googleapis.com \
  cloudaicompanion.googleapis.com \
  cloudbuild.googleapis.com \
  cloudresourcemanager.googleapis.com \
  datacatalog.googleapis.com \
  run.googleapis.com

โคลนที่เก็บ

ดาวน์โหลดโค้ดโครงสร้างพื้นฐานและสคริปต์การทำงานอัตโนมัติจากที่เก็บ GitHub เราจะดาวน์โหลดเฉพาะโฟลเดอร์ที่จำเป็นสำหรับแล็บนี้เพื่อประหยัดพื้นที่ดิสก์ใน Cloud Shell

# Perform a shallow clone to get only the latest repository structure without the full history
git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
# Specify and download only the folder we need for this lab
git sparse-checkout set data-analytics/governance-context
cd data-analytics/governance-context

สร้างที่เก็บข้อมูลขนาดใหญ่ที่ "ไม่เป็นระเบียบ"

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

เราจะใช้ Terraform เพื่อติดตั้งใช้งานสภาพแวดล้อมนี้ การกำหนดค่าจะจัดการ 2 งานต่อไปนี้

  • โครงสร้างพื้นฐาน: สร้างประเภทแง่มุม Dataplex และชุดข้อมูล/ตาราง BigQuery
  • การโหลดข้อมูล: เรียกใช้งาน BigQuery INSERT เพื่อป้อนข้อมูลตัวอย่างลงในตารางทันทีหลังจากสร้าง
  1. ไปที่ไดเรกทอรี terraform แล้วเริ่มต้นใช้งาน
cd terraform
terraform init
  1. ใช้การกำหนดค่า การดำเนินการนี้อาจใช้เวลาถึง 1 นาที
terraform apply -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve

จุดตรวจสอบ: ตอนนี้คุณมี Data Lake ที่มีข้อมูลครบถ้วน แต่ไม่มีการควบคุมใดๆ สำหรับ AI แล้ว ตารางทุกตารางจะดูเหมือนกันทุกประการ

3. การใช้การกำกับดูแล

นี่คือขั้นตอนด้านวิศวกรรมที่สำคัญ ปัจจุบันตาราง finance_mart.fin_monthly_closing_internal และ analyst_sandbox.tmp_data_dump_v2_final_real มีลักษณะเหมือนกับ LLM ซึ่งเป็นเพียงออบเจ็กต์ที่มีคอลัมน์

ในฐานะวิศวกรด้านการกำกับดูแล คุณต้องแนบ Aspect (ป้ายกำกับข้อมูลเมตาที่ได้รับการรับรอง) ไปกับตารางเหล่านี้เพื่อแยกความแตกต่าง ในองค์กรจริง คุณจะทำให้กระบวนการนี้เป็นแบบอัตโนมัติผ่านไปป์ไลน์ CI/CD เราจะจำลองการทำงานอัตโนมัตินั้นด้วยสคริปต์

สร้างเพย์โหลดการกำกับดูแล

คีย์ของ Dataplex Aspect ต้องไม่ซ้ำกันทั่วโลก (มีคำนำหน้าเป็นรหัสโปรเจ็กต์) ./generate_payloads.sh สคริปต์จะสร้างไฟล์ข้อมูลเมตา YAML แบบไดนามิก

cd ..
chmod +x ./generate_payloads.sh
./generate_payloads.sh

เอาต์พุต:

ซึ่งจะสร้างโฟลเดอร์ "./aspect_payloads" ที่มีไฟล์ YAML 4 ไฟล์ ซึ่งกำหนดสถานการณ์การกำกับดูแล (Gold/Internal, Gold/Public, Silver/Realtime, Bronze/Sandbox)

ใช้แง่มุมผ่าน CLI

ก่อนเรียกใช้สคริปต์ มาดูกันว่าเราจะใช้การดำเนินการใดเพื่ออธิบายกระบวนการนี้ เรียกใช้คำสั่งต่อไปนี้เพื่อดูโครงสร้างของเพย์โหลดการเงินภายใน

cat aspect_payloads/fin_internal.yaml

โดยจะแสดงเนื้อหาต่อไปนี้

your-project-id.us-central1.official-data-product-spec:
  data:
    product_tier: GOLD_CRITICAL
    data_domain: FINANCE
    usage_scope: INTERNAL_ONLY
    update_frequency: DAILY_BATCH
    is_certified: true

โปรดสังเกตว่า YAML นี้กำหนดบริบททางธุรกิจอย่างชัดเจน เช่น การตั้งค่าis_certified: true flag และการกำหนดระดับGOLD_CRITICAL การกำหนดกฎที่ชัดเจนและมีโครงสร้างให้ AI ประเมินแทนที่จะคาดเดาตามชื่อตาราง

ตอนนี้ให้เรียกใช้สคริปต์แอปพลิเคชัน ซึ่งจะวนซ้ำในตาราง BigQuery และเรียกใช้คำสั่ง gcloud dataplex entries update เพื่อแนบข้อมูลเมตาที่เข้มงวดนี้

chmod +x ./apply_governance.sh
./apply_governance.sh

การยืนยัน (ไม่บังคับ)

ก่อนดำเนินการต่อ ให้ตรวจสอบว่าได้ใช้ข้อมูลเมตาอย่างถูกต้องในคอนโซล

  1. เปิดหน้าแคตตาล็อกอเนกประสงค์ของ Dataplex ใน Google Cloud Console หากไม่เห็น "แคตตาล็อกสากลของ Dataplex" ในเมนูการนำทางด้านซ้ายมือ ให้ใช้แถบค้นหาที่ด้านบนของหน้าต่าง Google Cloud Console พิมพ์ Dataplex แล้วเลือกผลลัพธ์ในส่วน "ผลการค้นหาเด่น" หรือ "ผลิตภัณฑ์และหน้าเว็บ"
  2. ค้นหา fin_monthly_closing_internal คุณควรเห็นตาราง BigQuery แสดงอยู่ในผลลัพธ์ คลิกชื่อตารางเพื่อเข้าสู่หน้ารายละเอียด

13d068a8cd0bfda9.png

  1. ในหน้ารายละเอียดของตาราง ให้มองหาส่วน "แท็กและแง่มุมที่ไม่บังคับ" ที่ด้านล่าง
  2. คุณจะเห็นofficial-data-product-spec ยืนยันว่าค่าตรงกับสถานการณ์ "Gold Internal" ที่เราใช้

56726f62e1ac311a.png

ตอนนี้คุณได้ยืนยันแล้วว่าตาราง BigQuery ที่เหมือนกันในทางเทคนิค (fin_monthly_closing_internal และ tmp_data_dump_v2_final_real) จะแตกต่างกันในเชิงตรรกะด้วยข้อมูลเมตาที่เครื่องอ่านได้

4. กำหนดค่าและสร้างต้นแบบของเอเจนต์

ก่อนสร้างเว็บแอปพลิเคชัน (ซึ่งเราจะทำในส่วนที่ 2) เราจะยืนยันตรรกะการกำกับดูแลในเครื่อง เราต้องติดตั้งส่วนขยาย Dataplex และกำหนดค่าพรอมต์ของระบบ

ติดตั้งส่วนขยาย

ติดตั้งส่วนขยาย Dataplex ใน Cloud Shell โดยจะขอให้คุณยืนยันและระบุรายละเอียดการตั้งค่า

export DATAPLEX_PROJECT="${PROJECT_ID}"

gemini extensions install https://github.com/gemini-cli-extensions/dataplex

(พิมพ์ Y เพื่อยอมรับการติดตั้ง และป้อนรหัสโปรเจ็กต์เมื่อได้รับข้อความแจ้ง)

กำหนดไฟล์นโยบาย

ไฟล์ GEMINI.md มีตรรกะที่แปลกฎนามธรรมของมนุษย์ (เช่น "ฉันต้องการข้อมูลที่ปลอดภัย") เป็นการค้นหาทางเทคนิคที่เข้มงวด

ปัจจุบันไฟล์นี้เป็นไฟล์ทั่วไป เอเจนต์ต้องทราบว่าควรค้นหาโปรเจ็กต์ Google Cloud ใดเพื่อป้องกันไม่ให้เอเจนต์สร้างตารางจากอินเทอร์เน็ตสาธารณะหรือบริบทอื่นๆ

  1. แทรก PROJECT_ID ลงในไฟล์นโยบาย
envsubst < GEMINI.md > GEMINI.md.tmp && mv GEMINI.md.tmp GEMINI.md
  1. ตรวจสอบไฟล์เพื่อทำความเข้าใจอัลกอริทึมที่เราสอน AI
cat GEMINI.md

โปรดสังเกต 2 สิ่งในไฟล์นี้

  1. ขอบเขตของโปรเจ็กต์: ดูระยะที่ 2 ตรวจสอบว่าได้แทนที่ projectid:${PROJECT_ID} ด้วยรหัสโปรเจ็กต์จริง (e.g., projectid:my-lab-project) แล้ว หากไม่ได้แทนที่ตัวแปรนี้ เอเจนต์จะค้นหาในทุกโปรเจ็กต์ที่คุณมีสิทธิ์เข้าถึง ซึ่งจะทำให้ได้คำตอบที่ไม่ถูกต้อง
  2. อัลกอริทึม: สังเกตตรรกะของเฟส 1 / เฟส 2 เราสั่งให้โมเดลอย่างชัดเจนว่าอย่าเดา SQL โดยต้องค้นหานิยามแท็กที่ถูกต้องก่อน (เฟส 1) แล้วจึงค้นหาข้อมูล (เฟส 2)

เริ่มการทำงานของ Agent และทดสอบสถานการณ์

เริ่มเซสชัน Gemini CLI โดยคราวนี้ให้โหลดนโยบายการกำกับดูแลเป็นบริบทของระบบ

gemini

88dc6e826a34b033.png

หมายเหตุ: คุณอาจเห็นไฟล์บริบทหลายไฟล์กำลังโหลดอยู่ (เช่น GEMINI.md และอื่นๆ) ซึ่งเป็นเรื่องปกติ CLI จะโหลด GEMINI.md ในเครื่องสำหรับกฎเฉพาะของโปรเจ็กต์นี้ รวมถึงวิธีการเริ่มต้นสำหรับส่วนขยาย Dataplex เอง

ยืนยันการติดตั้ง

พิมพ์ /mcp desc เพื่อยืนยันว่าส่วนขยาย Dataplex ใช้งานอยู่ คุณควรเห็น dataplex แสดงเป็นเซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้พร้อมเครื่องมือที่ใช้ได้

169a5627263863ca.png

สถานการณ์การทดสอบ (การสร้างต้นแบบ)

วางพรอมต์ต่อไปนี้ลงในเซสชันของเอเจนต์ที่กำลังทำงานทีละรายการเพื่อยืนยันว่าพรอมต์เป็นไปตามกฎของคุณ

  • สถานการณ์ A (รับรองข้อมูลของ CFO):
"We are preparing the deck for an internal Board of Directors meeting next week. I need the numbers to be absolutely finalized, trustworthy, and kept strictly confidential. Which table is safe to use?"

คาดการณ์: คำค้นหา fin_monthly_closing_internal เนื่องจากตรงกับ GOLD_CRITICAL (ถูกต้อง) และ INTERNAL_ONLY (การประชุมคณะกรรมการ) ในแง่ของความหมาย

  • สถานการณ์ ข. (การเปิดเผยต่อสาธารณะ)
"I need to share our quarterly financial summary with an external consulting firm. It is critical that we do not leak any raw or internal metrics. Which dataset is officially scrubbed and explicitly approved for external sharing?"

สิ่งที่คาดหวัง: ตัวแทนต้องข้ามตารางภายในรายเดือนและเลือก fin_quarterly_public_report อย่างเคร่งครัด เนื่องจากเป็นชิ้นงานเดียวที่มีแท็ก EXTERNAL_READY

  • สถานการณ์ ค. (ความต้องการด้านการปฏิบัติงาน):
"My dashboard needs to show what's happening right now with our ad spend. I can't wait for the overnight load. What do you recommend?"

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

  • สถานการณ์ ง. (การทดลองในแซนด์บ็อกซ์)
"I'm just playing around with some new ML models and need a lot of raw data. It doesn't need to be perfect, just a sandbox environment."

คาดการณ์: เอเจนต์เลือก tmp_data_dump_v2_final_real เนื่องจากมีความหมายตรงกับ BRONZE_ADHOC (ข้อมูลดิบ) และ is_certified: false (สภาพแวดล้อมแซนด์บ็อกซ์) ในแง่มุมของเอเจนต์

(หากต้องการออกจากเซสชัน Gemini ให้พิมพ์ /quit)

5. ยินดีด้วย ขั้นตอนต่อไปคืออะไร

คุณสร้างรากฐานข้อมูลที่มีการควบคุมและพิสูจน์ได้สำเร็จว่า AI สามารถปฏิบัติตามกฎข้อมูลเมตาของคุณอย่างเคร่งครัดได้โดยใช้ต้นแบบ CLI ในเครื่อง

ตอนนี้คุณมาถึงจุดตรวจแล้ว โปรดเลือกขั้นตอนถัดไป

ตัวเลือก ก: ฉันต้องการไปที่ส่วนที่ 2 เลย

หากพร้อมที่จะเปลี่ยนต้นแบบในเครื่องนี้ให้เป็นเว็บแอปพลิเคชันระดับโปรดักชันที่ปลอดภัยโดยใช้ Model Context Protocol (MCP) และ Cloud Run ให้ทำดังนี้

👉 ลิงก์ไปยัง Codelab ส่วนที่ 2

ตัวเลือก ข: ฉันจะทำส่วนที่ 2 ในภายหลังหรือฉันต้องการทำเฉพาะส่วนที่ 1 เท่านั้น

หากต้องการหยุดใช้ในวันนี้และหลีกเลี่ยงค่าใช้จ่ายในระบบคลาวด์ คุณควรล้างข้อมูลทรัพยากร

ไม่ต้องกังวล ในส่วนที่ 2 เราจะให้ "สคริปต์เร่งด่วน" ที่จะสร้างสภาพแวดล้อมส่วนที่ 1 นี้ให้คุณใหม่ทั้งหมดในเวลาเพียง 2 นาที เพื่อให้คุณกลับมาทำงานต่อจากจุดที่ค้างไว้ได้

👉 ไปที่ส่วนล้างข้อมูล

6. ล้างข้อมูล (สำหรับตัวเลือก B เท่านั้น)

หากหยุดที่นี่ ให้ทำลายทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงิน

ทำลาย Data Lake (Terraform)

หากคุณอยู่ในสภาพแวดล้อม Gemini CLI ในขณะนี้ ให้ออกจากเซสชันโดยกด Ctrl+C 2 ครั้งหรือพิมพ์ /quit จากนั้นเรียกใช้คำสั่งต่อไปนี้

cd ~/devrel-demos/data-analytics/governance-context/terraform
terraform destroy -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve

ถอนการติดตั้งส่วนขยาย Gemini CLI และนำไฟล์ในเครื่องออก

gemini extensions uninstall dataplex
cd ~
rm -rf ~/devrel-demos