Lab 2: การวิเคราะห์ข้อมูลและข้อมูลเชิงลึกแบบมัลติโมดัล

1. บทนำ

ไม่มีคอนเทนเนอร์

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

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

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

  • สแกนรูปภาพความปลอดภัยของพอร์ตเพื่อระบุคอนเทนเนอร์ที่ถูกขโมยโดยใช้ BigQuery AI
  • ตรวจหาความผิดปกติของอุณหภูมิโดยใช้ BigQuery AI เพื่อยืนยันว่าตู้คอนเทนเนอร์ถูกขโมย ไม่ใช่แค่หาไม่เจอ
  • สร้างการฝังเวกเตอร์และโหลดลงใน AlloyDB เพื่อการค้นหาแบบเรียลไทม์
  • จับคู่สัญญาณบีคอนการวัดระยะไกลที่กระจัดกระจายเพื่อค้นหาคอนเทนเนอร์ที่ถูกขโมยโดยใช้การค้นหาเวกเตอร์
  • สํารวจข้อมูลการตรวจสอบด้วยภาษาธรรมชาติโดยใช้ข้อมูลวิเคราะห์เชิงสนทนา

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

  • เว็บเบราว์เซอร์ เช่น Chrome
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • มีความรู้พื้นฐานเกี่ยวกับ SQL และคอนโซล Google Cloud

Codelab นี้มีไว้สำหรับนักพัฒนาแอประดับกลาง

ทรัพยากรที่สร้างในโค้ดแล็บนี้ควรมีค่าใช้จ่ายน้อยกว่า $5

2. ก่อนที่คุณจะเริ่มต้น

เริ่มต้น Cloud Shell

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

  1. ในแท็บเบราว์เซอร์ใหม่ ให้เปิด Cloud Shell: shell.cloud.google.com
  2. เมื่อเชื่อมต่อแล้ว ให้ตั้งค่ารหัสโปรเจ็กต์และยืนยันสภาพแวดล้อม
gcloud config set project <<YOUR_PROJECT_ID>>
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1

คุณควรเห็นข้อความที่คล้ายกับข้อความต่อไปนี้

Your active configuration is: [cloudshell-####]
Updated property [core/project]

โคลนที่เก็บ

โคลนที่เก็บ Codelab ไปยังสภาพแวดล้อม Cloud Shell โดยทำดังนี้

cd ~/
git clone --filter=blob:none --no-checkout https://github.com/GoogleCloudPlatform/devrel-demos.git
cd ~/devrel-demos
git sparse-checkout init --cone
git sparse-checkout set codelabs/bigquery-alloydb-insights
git checkout main
cd codelabs/bigquery-alloydb-insights/

เปิดใช้ API

เรียกใช้คำสั่งนี้ใน Cloud Shell เพื่อเปิดใช้ API ที่จำเป็นทั้งหมดสำหรับ Lab นี้

gcloud services enable \
  aiplatform.googleapis.com \
  bigquery.googleapis.com \
  bigqueryconnection.googleapis.com \
  alloydb.googleapis.com

เมื่อดำเนินการสำเร็จ คุณควรเห็นข้อความที่คล้ายกับข้อความต่อไปนี้

Operation "operations/..." finished successfully.

3. ตั้งค่าสภาพแวดล้อม

ก่อนที่จะวิเคราะห์รูปภาพและข้อมูลการวัดและส่งข้อมูลได้ คุณต้องตั้งค่าโครงสร้างพื้นฐานสำหรับห้องทดลองนี้ คุณจะเรียกใช้สคริปต์ 2 รายการ โดยรายการหนึ่งจะเริ่มการจัดสรร AlloyDB ในเบื้องหลัง และอีกรายการจะสร้างทรัพยากร BigQuery ทั้งหมดที่คุณต้องการ

ขั้นตอนที่ 1: เริ่มการติดตั้งใช้งาน AlloyDB (เบื้องหลัง)

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

chmod +x scripts/setup_alloydb.sh
nohup ./scripts/setup_alloydb.sh > /dev/null 2>&1 &
echo "AlloyDB deployment started in background (PID: $!)"

ขั้นตอนที่ 2: เรียกใช้สคริปต์การตั้งค่า

สคริปต์นี้จะสร้างชุดข้อมูล BigQuery, การเชื่อมต่อทรัพยากรระบบคลาวด์, การให้สิทธิ์ IAM, ถังเก็บข้อมูล GCS และโหลดข้อมูลเซ็นเซอร์ทั้งหมดที่คุณจะวิเคราะห์ในแล็บนี้ นอกจากนี้ ยังจะอ่านและยืนยันตัวแปรสภาพแวดล้อมที่บันทึกไว้ในไฟล์ .env ด้วย

chmod +x scripts/setup_lab.sh
./scripts/setup_lab.sh

สคริปต์จะใช้เวลาประมาณ 1 นาทีในการเรียกใช้ เมื่อเสร็จแล้ว คุณจะเห็นสรุปทุกอย่างที่ AI สร้างขึ้น

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

source scripts/setenv.sh

ขั้นตอนที่ 3: เปิดใช้ Cloud Shell Editor

คุณใช้เทอร์มินัล Cloud Shell มาจนถึงตอนนี้แล้ว ตอนนี้ให้เปลี่ยนไปใช้ Cloud Shell Editor แบบเต็ม ซึ่งจะให้พื้นที่ทำงานที่คล้ายกับ VS Code พร้อมการรองรับ BigQuery ในตัว

  1. ในแผงเทอร์มินัล Cloud Shell ที่ด้านล่างของหน้าจอ ให้คลิกปุ่มเปิดตัวแก้ไขเพื่อเปิดพื้นที่ทำงานของ Cloud Shell Editor

เปิดเครื่องมือแก้ไข Cloud Shell

ขั้นตอนที่ 4: ติดตั้งส่วนขยาย Data Agent Kit

ส่วนขยายชุดเครื่องมือตัวแทนข้อมูล Google Cloud ช่วยให้ผสานรวมกับบริการข้อมูลของ Google Cloud ได้อย่างลึกซึ้งภายในเอดิเตอร์โดยตรง ซึ่งช่วยให้คุณโต้ตอบกับ BigQuery, AlloyDB, Cloud Storage และอื่นๆ ได้โดยไม่ต้องเปลี่ยนบริบท

  1. ใน Cloud Shell Editor ให้คลิกไอคอนส่วนขยายในแถบกิจกรรมทางด้านซ้ายสุดของหน้าจอ (มีลักษณะเป็นสี่เหลี่ยม 4 รูป)
  2. พิมพ์ googlecloudtools.datacloud ในแถบค้นหาที่ด้านบนของแผงส่วนขยาย
  3. ค้นหาส่วนขยายชื่อ Google Cloud Data Agent Kit ที่เผยแพร่โดย Google Cloud
  4. คลิกปุ่มติดตั้ง
  5. ข้อความแจ้งจะปรากฏขึ้นเพื่อถามว่า "คุณเชื่อถือผู้เผยแพร่'googlecloudtools' และส่วนขยายของผู้เผยแพร่รายนี้ไหม " คลิกเชื่อถือผู้เผยแพร่และติดตั้งเพื่อดำเนินการต่อ

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

ขั้นตอนที่ 5: ตรวจสอบสิทธิ์และกำหนดค่าส่วนขยาย

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

  1. หน้าเริ่มต้นใช้งานที่มีชื่อว่า "การเริ่มต้นใช้งานชุดเครื่องมือตัวแทนข้อมูล Google Cloud" ควรเปิดขึ้นโดยอัตโนมัติ คลิกลงชื่อเข้าใช้ Google Cloud ทำตามข้อความแจ้งของเบราว์เซอร์เพื่ออนุญาตการเข้าถึง
  2. โมดอล "การตั้งค่าอยู่ระหว่างดำเนินการ" จะปรากฏขึ้น ส่วนขยายจะตรวจสอบการขึ้นต่อกันที่จำเป็น เช่น Google Cloud CLI โดยอัตโนมัติ
  3. ในส่วนสรุปการกำหนดค่า ให้ค้นหาช่องโปรเจ็กต์ คลิกเมนูแบบเลื่อนลงแล้วเลือกโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ตั้งค่าภูมิภาคเป็น us-central1
  4. รอให้การตรวจสอบการตั้งค่าเสร็จสิ้น เมื่อเห็นข้อความ "ตั้งค่าเสร็จสมบูรณ์" ให้คลิกกำหนดค่าเซิร์ฟเวอร์ MCP

กำหนดค่าส่วนขยาย

  1. เลือก BigQuery และ AlloyDB ในส่วนการกำหนดค่า MCP แล้วคลิกเริ่มต้นใช้งาน

ขั้นตอนที่ 6: สำรวจตัวเลือกการกำหนดค่า

เมื่อตั้งค่าเสร็จแล้ว คุณจะเข้าสู่แดชบอร์ด "เริ่มต้นใช้งานชุดเครื่องมือ Data Agent ของ Google Cloud"

  1. คลิกเริ่มต้นใช้งานในส่วน "การตั้งค่าและการกำหนดค่า"
  2. ซึ่งจะเปิดแผงการกำหนดค่า Data Agent สำรวจแท็บต่างๆ ดังนี้
    • โปรเจ็กต์และภูมิภาค: ยืนยันรหัสโปรเจ็กต์ที่เลือกและตรวจสอบว่าได้เปิดใช้ API ที่จำเป็น (Cloud Storage API, BigQuery API, Catalog API และ AlloyDB API) แล้ว
    • BigQuery: กำหนดค่าตำแหน่งเริ่มต้นสำหรับการค้นหา BigQuery ใช้ภูมิภาค us-central1
    • กำหนดค่าเซิร์ฟเวอร์ MCP: ดูเซิร์ฟเวอร์ MCP ที่เปิดใช้ (BigQuery, Notebook, AlloyDB ฯลฯ) ซึ่งอนุญาตให้เอเจนต์ AI โต้ตอบกับข้อมูลของคุณได้อย่างปลอดภัย
    • ทักษะ: สำรวจทักษะที่สร้างไว้ล่วงหน้าซึ่งมอบความสามารถเฉพาะทางให้กับเอเจนต์สำหรับงานข้อมูลที่ซับซ้อน

แผงการกำหนดค่า Data Agent

ขั้นตอนที่ 7: ยืนยันด้วย BigQuery

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

  1. ในแผงชุดเครื่องมือ Data Agent ทางด้านซ้าย ให้ขยายส่วน BigQuery แล้วคลิกการค้นหาใหม่เพื่อเปิดแท็บตัวแก้ไขการค้นหาใหม่
  2. บันทึกไฟล์โดยกด Ctrl+S (Windows/Linux) หรือ Cmd+S (macOS) แล้วตั้งชื่อเป็น bigquery แท็บนี้จะใช้สำหรับการดำเนินการ BigQuery ทั้งหมด
  3. คลิกการตั้งค่าการค้นหาขณะที่แท็บ bigquery.sql เปิดอยู่ เลือก BigQuery เป็นแหล่งข้อมูล แล้วคลิกบันทึก

เปิดการตั้งค่าการค้นหา

  1. เรียกใช้การค้นหาต่อไปนี้กับชุดข้อมูลสาธารณะ
SELECT
  term,
  MIN(rank) AS peak_rank,
  ROUND(AVG(score)) AS avg_score
FROM `bigquery-public-data.google_trends.top_terms`
WHERE refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)
GROUP BY term
ORDER BY peak_rank ASC
LIMIT 10;
  1. คุณควรเห็นคำค้นหายอดนิยม 10 อันดับแรกใน Google Search จาก 2-3 วันที่ผ่านมา หากผลลัพธ์ปรากฏขึ้น แสดงว่าส่วนขยายเชื่อมต่อและพร้อมใช้งานแล้ว

ยืนยันผลการค้นหา BigQuery

ตอนนี้ลองใช้การค้นหาเทียบกับข้อมูลในห้องทดลองที่สคริปต์การตั้งค่าเพิ่งสร้างขึ้น แทนที่การค้นหาที่มีอยู่ด้วยการค้นหานี้

SELECT * FROM `lost_cargo_dataset.telemetry_data` LIMIT 5;

คุณควรเห็นรายการบันทึกการวัดและส่งข้อมูลทางไกลที่มีคอลัมน์ shipment_id และ telemetry_string นี่คือข้อมูลที่คุณจะวิเคราะห์ตลอดทั้งแล็บ

สรุปส่วน: คุณเริ่มการติดตั้งใช้งาน AlloyDB ในเบื้องหลัง เรียกใช้สคริปต์การตั้งค่า และกำหนดค่า Cloud Shell Editor ด้วยส่วนขยาย Data Agent Kit

4. การสแกนฟุตเทจความปลอดภัย

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

คุณจะสร้างตารางออบเจ็กต์ที่ช่วยให้ BigQuery "เห็น" รูปภาพความปลอดภัยใน Cloud Storage จากนั้นใช้ฟังก์ชัน AI.GENERATE เพื่อแจ้งให้ Gemini แยก Structured Data จากแต่ละรูปภาพ

ขั้นตอนที่ 1: สร้างตารางออบเจ็กต์

ตารางออบเจ็กต์คือตาราง BigQuery พิเศษที่ทำหน้าที่เป็นดัชนีสำหรับไฟล์ที่ไม่มีโครงสร้าง (รูปภาพ, PDF, เสียง) ที่จัดเก็บไว้ใน Cloud Storage โดยจะไม่คัดลอกไฟล์ลงใน BigQuery แต่จะสร้างการอ้างอิงที่ค้นหาได้เพื่อให้ฟังก์ชัน AI "เห็น" ไฟล์เหล่านั้น

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

SET @@location = 'us-central1';

EXECUTE IMMEDIATE CONCAT("""
  CREATE OR REPLACE EXTERNAL TABLE `lost_cargo_dataset.port_security_images`
  WITH CONNECTION `us-central1.lost_cargo_conn`
  OPTIONS (
    object_metadata = 'SIMPLE',
    uris = ['gs://""", @@project_id, """-lab2/images/*']
  );
""");

มาดูคร่าวๆ ว่าตอนนี้ BigQuery มองเห็นอะไรได้บ้าง

SELECT uri, content_type FROM `lost_cargo_dataset.port_security_images` LIMIT 5;

แต่ละแถวแสดงไฟล์รูปภาพ 1 ไฟล์ใน Cloud Storage ตอนนี้ BigQuery สามารถส่งต่อรูปภาพเหล่านี้ไปยังโมเดล AI ได้โดยตรง

ขั้นตอนที่ 2: วิเคราะห์รูปภาพความปลอดภัย

ตอนนี้ให้ใช้ฟังก์ชัน AI.GENERATE ของ BigQuery เพื่อวิเคราะห์รูปภาพความปลอดภัยแต่ละรูป การค้นหา SQL เดียวนี้จะแจ้งให้ Gemini ตรวจสอบทุกรูปภาพและแสดง Structured Data

SELECT
  uri,
  AI.GENERATE(
    (
      'Examine this port security image. Identify any shipping container IDs visible on the container and provide a one-word color of the container.',
      ref
    ),
    output_schema => 'detected_container_id STRING, color STRING'
  ).* EXCEPT (full_response, status)
FROM `lost_cargo_dataset.port_security_images`;

ขั้นตอนที่ 3: ระบุคอนเทนเนอร์เป้าหมาย

ตรวจสอบผลลัพธ์ มองหาแถวที่คอลัมน์ color แสดง "แดง" (หรือสีแดงรูปแบบใดรูปแบบหนึ่ง) จดdetected_container_id เป้าหมายของคุณคือ MV-CAPYBARA-003

ขั้นตอนที่ 4: ยืนยันการจับคู่ภาพ

หากต้องการดูรูปภาพจริงที่วิเคราะห์โดยไม่ต้องออกจากโปรแกรมแก้ไข ให้ทำดังนี้

  1. คลิก Cloud Storage ในแผงชุดเครื่องมือ Data Agent ทางด้านซ้าย
  2. ขยายที่เก็บข้อมูล (YOUR_PROJECT_ID-lab2/images/) แล้วคลิกไฟล์รูปภาพที่สอดคล้องกับคอนเทนเนอร์สีแดงเพื่อดูในเอดิเตอร์โดยตรง

ตัวอย่างรูปภาพใน Cloud Storage

สรุปส่วน: คุณสร้างตารางออบเจ็กต์เพื่อให้ BigQuery เข้าถึงรูปภาพความปลอดภัยของพอร์ต จากนั้นใช้ AI.GENERATE เพื่อดึงข้อมูลคอนเทนเนอร์ที่มีโครงสร้างจากแต่ละรูปภาพ คอนเทนเนอร์สีแดงได้รับการระบุเป็น MV-CAPYBARA-003

5. ยืนยันการขโมย

คุณระบุว่าคอนเทนเนอร์ที่หายไปคือ MV-CAPYBARA-003 แต่คอนเทนเนอร์ถูกขโมยหรือแค่หาไม่เจอ บันทึก Manifest ระบุว่าคอนเทนเนอร์นี้จอดอยู่ข้างเซ็นเซอร์สิ่งแวดล้อม SENS-99 หากขโมยตั้งใจปิดใช้ชุดทำความเย็นในตัวของตู้คอนเทนเนอร์ก่อนเคลื่อนย้าย SENS-99 อาจบันทึกการระบายความร้อนที่เพิ่มขึ้นอย่างฉับพลัน

มาใช้การตรวจจับความผิดปกติเพื่อพิสูจน์ว่ามีการดัดแปลงคอนเทนเนอร์กัน

  1. ก่อนอื่น ให้ดูที่เกณฑ์พื้นฐานในอดีต ค่าที่อ่านได้จาก SENS-99 ในช่วงหลายชั่วโมงที่ผ่านมาเป็นค่าปกติ ดังนี้
SELECT * FROM `lost_cargo_dataset.thermal_history`
ORDER BY reading_time DESC
LIMIT 50;

สังเกตว่าอุณหภูมิจะอยู่ในช่วงแคบๆ ประมาณ 75-78°F ซึ่งถือเป็นอุณหภูมิปกติ

  1. ตอนนี้มาดูค่าที่อ่านได้ชุดปัจจุบันจากเซ็นเซอร์เดียวกัน
SELECT * FROM `lost_cargo_dataset.thermal_current`
ORDER BY thermal_reading DESC
LIMIT 50;

คุณเห็นค่า 148.4°F ที่อยู่ใกล้ด้านบนไหม ส่วนอื่นๆ ดูปกติ การเพิ่มขึ้นอย่างรวดเร็วนี้อาจบ่งบอกว่าหน่วยทำความเย็นล้มเหลวหรือมีการดัดแปลงโดยเจตนา มาดูกัน

  1. เรียกใช้การตรวจหาความผิดปกติ AI.DETECT_ANOMALIES ของ BigQuery ใช้โมเดลพื้นฐาน TimesFM ที่ฝึกไว้ล่วงหน้าเพื่อวิเคราะห์รูปแบบอนุกรมเวลาและแจ้งค่าผิดปกติโดยอัตโนมัติ โดยไม่ต้องฝึกโมเดล
SELECT *
FROM AI.DETECT_ANOMALIES(
  TABLE `lost_cargo_dataset.thermal_history`,
  TABLE `lost_cargo_dataset.thermal_current`,
  data_col => 'thermal_reading',
  timestamp_col => 'reading_time',
  id_cols => ['sensor_id']
)
WHERE is_anomaly = TRUE;
  1. ตรวจสอบผลลัพธ์ ค่าที่อ่านได้ 148.4°F ควรได้รับการแจ้งว่าผิดปกติโดยมีความน่าจะเป็นสูงที่จะผิดปกติ ซึ่งยืนยันว่ามีสิ่งผิดปกติเกิดขึ้นใกล้กับพื้นที่คอนเทนเนอร์

สรุปส่วน: คุณใช้ฟังก์ชัน AI.DETECT_ANOMALIES ของ BigQuery เพื่อใช้ประโยชน์จากโมเดล TimesFM ที่ฝึกไว้ล่วงหน้า การเรียกใช้คำค้นหา SQL เพียงรายการเดียวจะช่วยให้คุณระบุค่าผิดปกติและแยกเหตุการณ์การดัดแปลงที่ผิดปกติได้โดยอัตโนมัติโดยไม่ต้องเขียนโค้ดแมชชีนเลิร์นนิงที่ซับซ้อนหรือฝึกโมเดลตั้งแต่ต้น

6. การเตรียมระบบติดตาม

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

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

คลัสเตอร์ AlloyDB ที่คุณเริ่มทำงานในเบื้องหลังก่อนหน้านี้ควรพร้อมใช้งานแล้ว มากำหนดค่าจากเอดิเตอร์โดยตรงกัน

ขั้นตอนที่ 1: เชื่อมต่อกับ AlloyDB จากตัวแก้ไข

คุณสามารถเชื่อมต่อกับ AlloyDB ได้โดยตรงโดยใช้ส่วนขยาย Data Agent Kit แทนที่จะเปลี่ยนไปใช้ Cloud Console

  1. ในแผงชุดเครื่องมือ Data Agent ทางด้านซ้ายในส่วน BigQuery ให้คลิกคำค้นหาใหม่เพื่อเปิดแท็บตัวแก้ไขคำค้นหาใหม่
  2. บันทึกไฟล์โดยกด Ctrl+S (Windows/Linux) หรือ Cmd+S (macOS) และตั้งชื่อเป็น alloydb แท็บนี้จะใช้สำหรับคำค้นหา AlloyDB ทั้งหมด
  3. คลิกไอคอนรูปเฟืองเพื่อเปิดโมดอลการตั้งค่าการค้นหา

เปิดการตั้งค่าการค้นหาสำหรับ AlloyDB

  1. ในโมดอลการตั้งค่าคําค้นหา ให้เลือกฐานข้อมูลในส่วนแหล่งข้อมูล
  2. ในส่วนฐานข้อมูล ให้เลือก AlloyDB
  3. กรอกรายละเอียดการเลือกทรัพยากร
    • รหัสโปรเจ็กต์: ป้อนรหัสโปรเจ็กต์ Google Cloud
    • คลัสเตอร์: เลือก lost-cargo-cluster
    • อินสแตนซ์: เลือก lost-cargo-instance
    • ฐานข้อมูล: เลือก postgres
  4. คลิกบันทึก

การตั้งค่าการค้นหา AlloyDB Modal

ขั้นตอนที่ 2: เปิดใช้ส่วนขยาย Vector และสร้างตาราง

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

  1. ในแท็บ .sql ที่ใช้งานอยู่ ให้วางคำสั่งต่อไปนี้เพื่อเปิดใช้ส่วนขยายที่จำเป็น
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
  1. ไฮไลต์ข้อความ แล้วคลิกปุ่มเรียกใช้คําค้นหา (ไอคอนเล่น) ที่ด้านขวาบนของตัวแก้ไข
  2. ตรวจสอบแผงเทอร์มินัลผลการค้นหาที่ด้านล่างของหน้าจอ โดยควรระบุว่า Statement executed successfully

สร้างส่วนขยาย AlloyDB

  1. จากนั้น ให้แทนที่ข้อความในเอดิเตอร์ด้วยข้อความต่อไปนี้เพื่อสร้างตารางการวัดและส่งข้อมูล
CREATE TABLE IF NOT EXISTS vessel_telemetry (
    entry_id SERIAL PRIMARY KEY,
    shipment_id VARCHAR(50),
    telemetry_string TEXT,
    embedding_vector vector(768)
);
  1. เรียกใช้การค้นหานี้เหมือนกับการค้นหาครั้งล่าสุด ยืนยันว่าดำเนินการสำเร็จในแผงด้านล่าง

vector(768) ประเภทมาจากส่วนขยาย pgvector ที่คุณเพิ่งเปิดใช้ มิติข้อมูล 768 รายการตรงกับเอาต์พุตของโมเดล text-embedding-005 ของ Google ซึ่งคุณจะใช้ใน BigQuery เพื่อสร้างการฝัง

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

7. การสร้างดัชนีของ Search

ตอนนี้คุณต้องนำข้อมูลการวัดและส่งข้อมูลไปยัง AlloyDB เพื่อให้ระบบสามารถจับคู่บีคอนแบบเรียลไทม์ได้ บันทึกการวัดและส่งข้อมูลดิบนั้นไม่เป็นระเบียบและมีความยาวที่แตกต่างกัน ซึ่งไม่เหมาะสำหรับการค้นหาความคล้ายคลึง คุณจะใช้ฟังก์ชัน AI ของ BigQuery เพื่อสรุปแต่ละบันทึกด้วย Gemini และแปลงแต่ละสรุปเป็นการฝังเวกเตอร์ 768 มิติ จากนั้นคุณจะส่งออกข้อมูลที่เพิ่มคุณค่าไปยัง Cloud Storage และนำเข้าข้อมูลไปยัง AlloyDB

ขั้นตอนที่ 1: สร้างการฝังใน BigQuery

เปลี่ยนแท็บเอดิเตอร์กลับไปเป็น bigquery.sql (ซึ่งยังคงเชื่อมต่อกับ BigQuery)

ตอนนี้ ให้เรียกใช้การค้นหาต่อไปนี้เพื่อสรุปบันทึกการวัดระยะไกลแต่ละรายการด้วย Gemini และสร้างการฝังเวกเตอร์

CREATE OR REPLACE TABLE `lost_cargo_dataset.telemetry_embeddings_export` AS
WITH summarized_telemetry AS (
  SELECT
    shipment_id,
    telemetry_string,
    AI.GENERATE(
      CONCAT('Summarize this telemetry log for vector search: ', telemetry_string)
    ).result AS summary
  FROM `lost_cargo_dataset.telemetry_data`
),
telemetry_embeddings AS (
  SELECT
    shipment_id,
    telemetry_string,
    AI.EMBED(summary, endpoint => 'text-embedding-005').result AS embedding
  FROM summarized_telemetry
)
SELECT
  shipment_id,
  telemetry_string,
  TO_JSON_STRING(embedding) AS embedding_vector
FROM telemetry_embeddings;

ขั้นตอนที่ 2: ดูตัวอย่างข้อมูลที่เพิ่มคุณค่า

โปรดดูสิ่งที่คุณสร้างขึ้นก่อนส่งออก คําค้นหานี้แสดงรหัสการจัดส่งและอักขระ 80 ตัวแรกของข้อมูลสรุปและการฝังแต่ละรายการ

SELECT
  shipment_id,
  SUBSTR(telemetry_string, 1, 80) AS telemetry_preview,
  SUBSTR(embedding_vector, 1, 80) AS embedding_preview
FROM `lost_cargo_dataset.telemetry_embeddings_export`
LIMIT 5;

ตอนนี้แต่ละแถวจะมีรหัสการจัดส่ง บันทึกการวัดและส่งข้อมูลเดิม และเวกเตอร์การฝังแบบ 768 มิติ นี่คือข้อมูลที่คุณจะพุชไปยัง AlloyDB

ขั้นตอนที่ 3: ส่งออกการฝังไปยัง Cloud Storage

ใช้คำสั่ง EXPORT DATA ของ BigQuery เพื่อเขียนตารางการฝังไปยังที่เก็บข้อมูล GCS ของห้องทดลองเป็นไฟล์ CSV

EXECUTE IMMEDIATE CONCAT("""
  EXPORT DATA OPTIONS (
    uri = 'gs://""", @@project_id, """-lab2/data/embeddings_export/*.csv',
    format = 'CSV',
    overwrite = true,
    header = false
  ) AS
  SELECT
    shipment_id,
    telemetry_string,
    embedding_vector
  FROM `lost_cargo_dataset.telemetry_embeddings_export`;
""");

ขั้นตอนที่ 4: นำเข้าไปยัง AlloyDB จาก Cloud Storage

  1. ใน Cloud Shell Editor ให้คลิกแท็บเทอร์มินัลที่ด้านล่างของหน้าจอเพื่อเปิดเซสชันเทอร์มินัล
  2. เรียกใช้คำสั่งต่อไปนี้เพื่อโหลดสภาพแวดล้อมและนำเข้าไฟล์ CSV ลงในตาราง vessel_telemetry ใน AlloyDB โดยตรง
source devrel-demos/codelabs/bigquery-alloydb-insights/scripts/setenv.sh

gcloud alloydb clusters import lost-cargo-cluster \
  --region=$REGION \
  --gcs-uri="gs://${PROJECT_ID}-lab2/data/embeddings_export/000000000000.csv" \
  --database=postgres \
  --user=postgres \
  --table=vessel_telemetry \
  --columns=shipment_id,telemetry_string,embedding_vector \
  --csv

แท็บเทอร์มินัลที่แสดงคำสั่งนำเข้าคลัสเตอร์ gcloud alloydb

สรุปส่วน: คุณใช้ฟังก์ชัน AI ของ BigQuery เพื่อสรุปและฝังข้อมูลการวัดและส่งข้อมูล ใช้ฟังก์ชัน AI ของ BigQuery เพื่อสรุปและฝังข้อมูลการวัดและส่งข้อมูล ส่งออกผลลัพธ์ไปยัง Cloud Storage เป็น CSV จากนั้นนำเข้าผลลัพธ์ไปยัง AlloyDB โดยใช้ gcloud ตอนนี้ระบบได้โหลดฐานข้อมูลการติดตามการปฏิบัติงานและพร้อมใช้งานแล้ว

8. การจับคู่สัญญาณบีคอน

ทีมภาคสนามที่อยู่ใกล้ซิดนีย์ตรวจพบสัญญาณบีคอนการตรวจวัดระยะไกลที่ขาดหายไป บันทึกบางส่วนระบุว่า

"หน่วยทำความเย็นออฟไลน์ การลบล้างด้วยตนเอง"

หากมาจากคอนเทนเนอร์ที่ถูกขโมย Vector Search ของ AlloyDB ควรจะจับคู่ได้แม้ว่าสัญญาณจะไม่สมบูรณ์ นี่คือการค้นหาการดำเนินงานแบบเรียลไทม์ที่ AlloyDB สร้างขึ้นมาเพื่อสิ่งนี้โดยเฉพาะ

ขั้นตอนที่ 1: ยืนยันข้อมูลที่นำเข้า

เปลี่ยนแท็บเอดิเตอร์กลับไปเป็น alloydb.sql (ซึ่งยังคงเชื่อมต่อกับ AlloyDB)

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

SELECT shipment_id, LEFT(telemetry_string, 80) AS telemetry_preview
FROM vessel_telemetry
LIMIT 10;

คุณควรเห็นแถวที่มีค่า shipment_id และข้อความการวัดและส่งข้อมูล ซึ่งเป็นลายเซ็นเทเลเมทรีของกลุ่มยานพาหนะที่พร้อมสำหรับการจับคู่แบบเรียลไทม์แล้ว

ขั้นตอนที่ 2: ค้นหาคอนเทนเนอร์ที่หายไป

ตอนนี้ให้ใช้ส่วนขยาย google_ml_integration ของ AlloyDB เพื่อค้นหารายการที่ตรงกันโดยใช้ข้อมูลสัญญาณที่ดักไว้

SELECT
    shipment_id,
    telemetry_string,
    1 - (embedding_vector <=> embedding('text-embedding-005', 'Refrigeration unit offline. Manual override.')::vector) AS search_relevance_score
FROM vessel_telemetry
ORDER BY embedding_vector <=> embedding('text-embedding-005', 'Refrigeration unit offline. Manual override.')::vector
LIMIT 5;

ฟังก์ชัน embedding() ซึ่งจัดทำโดยส่วนขยาย google_ml_integration ของ AlloyDB จะเรียกใช้ Agent Platform โดยตรงจาก SQL เพื่อสร้างการฝังเวกเตอร์แบบอินไลน์ โอเปอเรเตอร์ <=> จะคำนวณระยะทางโคไซน์ระหว่างเวกเตอร์ 2 ตัว (ยิ่งใกล้ 0 มากเท่าใด เวกเตอร์ 2 ตัวก็จะยิ่งเหมือนกันมากขึ้นเท่านั้น) เราจะนำค่าจาก 1 มาลบออกเพื่อแสดงผลลัพธ์เป็นคะแนนความเกี่ยวข้อง โดยคะแนนที่สูงกว่าจะดีกว่า

ขั้นตอนที่ 3: ยืนยันการจับคู่

ตรวจสอบผลลัพธ์ ผลการค้นหาแรกควรเป็น MV-CAPYBARA-003 ซึ่งมีคะแนนความเกี่ยวข้องสูงสุด

ซึ่งเป็นคอนเทนเนอร์เดียวกันกับที่คุณติดตามในทุกขั้นตอนของการตรวจสอบนี้

  • 📷 ฟุตเทจจากกล้องวงจรปิดระบุว่าเรือออกจากท่าเรือรีโอเดจาเนโรในตอนกลางคืน
  • 🌡️ การตรวจจับความผิดปกติของความร้อนยืนยันว่ามีการปิดใช้ชุดทำความเย็นโดยเจตนา
  • 📡 การจับคู่สัญญาณบีคอนเพิ่งระบุลายเซ็นการตรวจวัดระยะไกลใกล้ซิดนีย์

หลักฐาน 3 บรรทัดที่แยกจากกัน ความสามารถของ AI ใน Google Cloud 3 อย่างที่แตกต่างกัน คอนเทนเนอร์ที่ถูกขโมย 1 รายการ

🎯 ปิดเคส: พบ MV-CAPYBARA-003 ใกล้ซิดนีย์แล้ว

นักสืบ Bugdroid ไฮไฟว์กับคาปิบาราที่ท่าเรือซิดนีย์ โดยมีตู้คอนเทนเนอร์ MV-CAPYBARA-003 ที่มีเครื่องหมายว่าพบแล้วอยู่เบื้องหลัง

สรุปส่วน: คุณใช้การผสานรวม AI ในตัวของ AlloyDB เพื่อสร้างการฝังการค้นหาและทำการค้นหาความคล้ายคลึงกันของโคไซน์ในคำค้นหา SQL เดียว การจับคู่บีคอนยืนยันตำแหน่งของตู้คอนเทนเนอร์ที่ถูกขโมย ทำให้การสืบสวนเสร็จสมบูรณ์

9. การตรวจสอบหลักฐาน

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

ขั้นตอนที่ 1: ค้นหาข้อมูลในแคตตาล็อกความรู้

ชุดเครื่องมือ Data Agent มีฟีเจอร์ Universal Search ที่ช่วยให้คุณค้นหาและสำรวจชิ้นงานข้อมูลในสภาพแวดล้อม Google Cloud ได้

  1. ในแผงชุดเครื่องมือ Data Agent ทางด้านซ้าย ให้ขยายส่วนแคตตาล็อก
  2. คลิกการค้นหาสากล
  3. พิมพ์ telemetry_data ในแถบค้นหา
  4. คลิกtelemetry_dataตาราง (ในส่วนlost_cargo_dataset) จากผลการค้นหา

ค้นหาตาราง telemetry_data ในแคตตาล็อก

ขั้นตอนที่ 2: เปิดตัว Conversational Analytics

การคลิกผลการค้นหาจะเปิดแท็บโปรแกรมดูข้อมูล ซึ่งคุณสามารถดูตัวอย่างข้อมูลดิบ ดูสคีมา และตรวจสอบคุณภาพของข้อมูลได้

  1. ที่แผงด้านซ้าย คุณจะเห็นชุดข้อมูลและตาราง BigQuery คลิกปุ่มแชทเพื่อเปิดหน้าต่างแชทใหม่

คลิกปุ่มแชท

ขั้นตอนที่ 3: ถามคำถามด้วยภาษาง่ายๆ

แท็บแชทใหม่ "ยินดีต้อนรับสู่การวิเคราะห์เชิงสนทนา!" จะเปิดขึ้น Agent มีบริบทเกี่ยวกับสคีมาและเนื้อหาของตาราง

  1. ในหน้าต่างแชท ให้พิมพ์ว่า "แสดงสถานะการวัดและบันทึกสำหรับการจัดส่งคาปิบารา"
  2. กด Enter

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

ผลลัพธ์และข้อมูลเชิงลึกของ Conversational Analytics

ขั้นตอนที่ 4: ถามคำถามติดตามผล

ตัวแทนจะจดจำบริบทของการสนทนาของคุณ ลองถามคำถามติดตามผล

  • "ข้อมูลการวัดระยะไกลมีการจัดส่งที่ไม่ซ้ำกันกี่รายการ"
  • "ขณะนี้การจัดส่งอื่นๆ ในกองยานมีสถานะ "วิกฤต" จำนวนเท่าใด"

สรุปส่วน: คุณใช้ฟีเจอร์การค้นหาสากลของแคตตาล็อกความรู้เพื่อค้นหาชุดข้อมูล และเปิดใช้ Analytics แบบสนทนาเพื่อสืบค้นข้อมูลการตรวจสอบด้วยภาษาธรรมชาติ AI Agent แปลคำถามของคุณเป็น SQL และให้ข้อมูลเชิงลึกที่ยืนยันผลการค้นพบของคุณ

10. ล้าง

โปรดลบทรัพยากรที่คุณสร้างในแล็บนี้เพื่อหลีกเลี่ยงการเรียกเก็บเงินอย่างต่อเนื่องในบัญชี Google Cloud คุณสามารถเรียกใช้คำสั่งเหล่านี้ในเทอร์มินัลแบบผสานรวมภายใน Cloud Shell Editor (ที่คุณใช้ Data Agent Kit) เพื่อล้างข้อมูลสภาพแวดล้อม

ก่อนอื่น ให้โหลดตัวแปรสภาพแวดล้อมโดยทำดังนี้

source scripts/setenv.sh
  1. ลบทรัพยากร BigQuery (เฉพาะในกรณีที่คุณไม่ดำเนินการต่อใน Lab 3)

หากวางแผนที่จะไปที่แล็บ 3 ต่อ ให้ข้ามขั้นตอนนี้ Lab 3 ใช้ชุดข้อมูลและการเชื่อมต่อ BigQuery เดียวกันสําหรับการวิเคราะห์กราฟพร็อพเพอร์ตี้

วิธีลบชุดข้อมูลและการเชื่อมต่อ BigQuery

# Drop the dataset
bq rm -r -f $PROJECT_ID:lost_cargo_dataset

# Delete the connections
bq rm --connection --location=us-central1 $PROJECT_ID.us-central1.lost_cargo_conn
bq rm --connection --location=us-central1 $PROJECT_ID.us-central1.lost_cargo_alloydb_conn
  1. ลบ Bucket ของ Cloud Storage:
gcloud storage rm --recursive gs://${PROJECT_ID}-lab2
  1. ลบอินสแตนซ์และคลัสเตอร์ AlloyDB

Lab 3 ไม่ได้ใช้ AlloyDB คุณจึงหยุดทำงานได้เลย

gcloud alloydb instances delete lost-cargo-instance \
  --region=$REGION \
  --cluster=lost-cargo-cluster \
  --quiet

gcloud alloydb clusters delete lost-cargo-cluster \
  --region=$REGION \
  --force \
  --quiet
  1. ลบการตั้งค่าสภาพแวดล้อมภายใน

สุดท้าย ให้ล้างไฟล์การตั้งค่าสภาพแวดล้อมภายในออกจากพื้นที่ทำงานโดยทำดังนี้

rm -f .env

11. ยินดีด้วย

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

สิ่งที่คุณทำสำเร็จ

  1. สแกนฟุตเทจ: คุณใช้ AI.GENERATE ของ BigQuery เพื่อวิเคราะห์รูปภาพความปลอดภัยของท่าเรือและระบุคอนเทนเนอร์ MV-CAPYBARA-003 ในสีแดงเข้ม
  2. ยืนยันการขโมย: คุณได้ตรวจสอบข้อมูลเซ็นเซอร์ความร้อน พบว่าอุณหภูมิพุ่งสูงขึ้นอย่างน่าสงสัยถึง 148.4°F และใช้ AI.DETECT_ANOMALIES เพื่อพิสูจน์ว่าเป็นการดัดแปลงโดยเจตนา
  3. เตรียมระบบติดตาม: คุณกำหนดค่า AlloyDB ด้วย pgvector และ google_ml_integration เพื่อการจับคู่บีคอนแบบเรียลไทม์
  4. สร้างดัชนีการค้นหา: คุณใช้ AI.GENERATE และ AI.EMBED ใน BigQuery เพื่อสร้างการฝัง จากนั้นส่งออกไปยัง Cloud Storage และนำเข้าไปยัง AlloyDB
  5. จับคู่สัญญาณบีคอน: คุณใช้การค้นหาเวกเตอร์ของ AlloyDB เพื่อจับคู่สัญญาณการวัดและส่งข้อมูลที่กระจัดกระจาย ซึ่งระบุตำแหน่งคอนเทนเนอร์ที่ถูกขโมยใกล้กับซิดนีย์
  6. สำรวจหลักฐาน: คุณใช้ Conversational Analytics โดยตรงจากเอดิเตอร์เพื่อค้นหาข้อมูลการตรวจสอบด้วยภาษาธรรมชาติ

พบคอนเทนเนอร์แล้ว

ขั้นตอนถัดไป

คุณทราบตำแหน่งของคอนเทนเนอร์แล้ว ตอนนี้คุณต้องหาผู้ที่อยู่เบื้องหลัง

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