1. ก่อนเริ่มต้น
สิ่งที่ควรทราบก่อนดำเนินการต่อใน Codelab นี้มีดังนี้
ข้อกำหนดเบื้องต้น
- ความเข้าใจพื้นฐานเกี่ยวกับ LLM
- ความเข้าใจพื้นฐานเกี่ยวกับระบบ RAG
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างเครื่องมือค้นหาคุณภาพระดับ Google ที่ตอบคำถามจากข้อมูลที่คุณอัปโหลดได้
- วิธีสร้าง Vertex AI Datastore
- วิธีสร้างเอเจนต์ Vertex AI
- วิธีใช้ประโยชน์จาก Cloud Run เพื่อนำแอปพลิเคชันไปใช้งาน
สิ่งที่คุณต้องมี
- บัญชี Google Cloud
- โปรเจ็กต์ Google Cloud
- IDE ที่มีเทอร์มินัล
บทนำ
Google Search เป็นเครื่องมือทรงประสิทธิภาพที่ใช้ดัชนีขนาดใหญ่ของหน้าเว็บและเนื้อหาอื่นๆ เพื่อให้ผลการค้นหาที่เกี่ยวข้องกับคำค้นหาของผู้ใช้ เทคนิคนี้เรียกว่า Retrieval Augmented Generation (RAG) ซึ่งเป็นเทคนิคสำคัญใน AI ยุคใหม่
RAG ทำงานโดยดึงข้อความที่เกี่ยวข้องจากคลังเอกสารก่อน โดยใช้วิธีการต่างๆ เช่น การจับคู่คีย์เวิร์ด ความคล้ายคลึงเชิงความหมาย และแมชชีนเลิร์นนิง เมื่อดึงข้อความที่เกี่ยวข้องแล้ว ระบบจะใช้ข้อความเหล่านั้นเพื่อสร้างสรุปหรือคำตอบสำหรับคำค้นหาของผู้ใช้
ประโยชน์หลักของ RAG คือการช่วยให้โมเดลภาษาหลีกเลี่ยงการสร้างข้อมูลที่ไม่ถูกต้อง การหลอนเป็นคำที่ใช้อธิบายการสร้างข้อความที่ไม่ได้รับการสนับสนุนจากหลักฐานในคลังเอกสาร ซึ่งอาจเกิดขึ้นเมื่อโมเดลภาษาไม่สามารถแยกแยะระหว่างข้อมูลที่เกี่ยวข้องกับไม่เกี่ยวข้อง
RAG ช่วยหลีกเลี่ยงการหลอนด้วยการตรวจสอบว่าข้อความที่สร้างขึ้นอิงตามหลักฐานจากคลังเอกสารเสมอ ซึ่งทำให้เป็นแหล่งข้อมูลที่เชื่อถือได้มากขึ้น
RAG เป็นเทคนิคที่มีประสิทธิภาพซึ่งใช้ในแอปพลิเคชันต่างๆ รวมถึงเครื่องมือค้นหา แชทบอท และระบบตอบคำถาม และมีแนวโน้มที่จะมีบทบาทสำคัญมากขึ้นใน AI ในอีกไม่กี่ปีข้างหน้า
ตัวอย่างการใช้ RAG ในทางปฏิบัติมีดังนี้
- ระบบการค้นหาจำนวนมากใช้ RAG เพื่อสร้างผลการค้นหาที่เกี่ยวข้องกับคำค้นหาของผู้ใช้
- แชทบ็อตใช้ RAG เพื่อสร้างคำตอบสำหรับคำถามของผู้ใช้ซึ่งให้ข้อมูลและน่าสนใจ
- ระบบตอบคำถามใช้ RAG เพื่อสร้างคำตอบสำหรับคำถามของผู้ใช้ที่ถูกต้องและครอบคลุม
RAG เป็นเทคนิคอเนกประสงค์ที่ใช้สร้างข้อความในโดเมนและแอปพลิเคชันต่างๆ ได้ ซึ่งเป็นเครื่องมือที่มีประสิทธิภาพที่ช่วยให้ AI ฉลาดและให้ข้อมูลมากขึ้น
ในโค้ดแล็บนี้ เราจะสร้างระบบ RAG ที่ช่วยตอบคำถามของคุณได้โดยใช้คลังข้อมูลที่อัปโหลด แพลตฟอร์ม RAG ที่พร้อมใช้งานที่เรียกว่า Vertex AI Search/Agent Builder ช่วยให้คุณสร้างระบบ RAG ได้เร็วขึ้น จึงไม่ต้องเสียเวลาในการรวบรวมเอกสาร แยกวิเคราะห์ แบ่งเป็นกลุ่ม สร้างการฝังตัว การขยายการค้นหา การดึงข้อมูลผู้สมัคร และการจัดอันดับด้วยตนเอง แม้ว่าระบบ RAG ที่พร้อมใช้งานจะช่วยให้คุณเริ่มต้นได้อย่างรวดเร็ว แต่ Google Cloud ก็มี API แยกต่างหากสำหรับทุกกระบวนการในการสร้างระบบ RAG แบบ DIY ของคุณเอง ซึ่งจะช่วยในการปรับแต่งระบบ RAG ให้เหมาะกับข้อกำหนดทางธุรกิจ
สิ่งที่คุณจะสร้าง
เมื่อสิ้นสุด Codelab นี้ คุณจะมีระบบ RAG ที่ใช้งานได้ซึ่งช่วยตอบคำถามด้วยข้อมูลข้อเท็จจริงที่อ้างอิงและอ้างอิงด้วยข้อมูลอ้างอิงที่ถูกต้อง
นอกจากนี้ คุณยังจะเข้าใจวิธีใช้ Vertex AI Search API เพื่อสร้างสถาปัตยกรรม RAG นี้ใน Google Cloud ได้ดียิ่งขึ้นด้วย นอกจากนี้ คุณยังจะได้เรียนรู้วิธีการติดตั้งใช้งานแอปพลิเคชันสถาปัตยกรรม RAG นี้ (พร้อมส่วนหน้าและส่วนหลัง) ใน Cloud Run ซึ่งเป็นแพลตฟอร์มแบบไร้เซิร์ฟเวอร์สำหรับการติดตั้งใช้งานแอปพลิเคชันเป็นคอนเทนเนอร์ใน Google Cloud

วิธีการทำงานของแอปพลิเคชัน
- อัปโหลดข้อมูล: ผู้ใช้สามารถอัปโหลดคลังข้อมูลของตนเอง เช่น ไฟล์ PDF เป็นอินพุต
- ถามคำถามในแถบค้นหา: ผู้ใช้สามารถถามคำถามในแถบค้นหาโดยอิงตามคลังข้อมูลที่อัปโหลด
- ดึงคำตอบ: ผู้ใช้สามารถดึงผลการค้นหา/คำตอบที่เป็นไปได้ และตรวจสอบความถูกต้อง/ความน่าเชื่อถือของคำตอบที่ดึงมาตามความเกี่ยวข้องของคำค้นหา
2. การตั้งค่าสภาพแวดล้อม
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud แล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud หากต้องการเข้าถึง ให้คลิก "เปิดใช้งาน Cloud Shell" ที่ด้านบนของคอนโซล Google Cloud

- เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์โดยใช้คำสั่งต่อไปนี้
gcloud auth list
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
- หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project <YOUR_PROJECT_ID>
- ตรวจสอบว่าได้เปิดใช้ API ต่อไปนี้แล้ว
- Cloud Run
- Vertex AI
- Cloud Storage
อีกวิธีหนึ่งนอกเหนือจากการใช้คำสั่ง gcloud คือการไปที่คอนโซลโดยใช้ลิงก์นี้ โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ
3. ขั้นตอนที่ 1: สร้าง Bucket ของ GCP
- ไปที่คอนโซลและพิมพ์ Cloud Storage ในแถบค้นหา
- เลือก Cloud Storage จากผลการค้นหาที่แนะนำ

- คลิกสร้าง Bucket

- ระบุชื่อที่ไม่ซ้ำกันทั่วโลกสำหรับ Bucket
- คลิกดำเนินการต่อ
- เลือกหลายภูมิภาคในประเภทสถานที่
- ในเมนูแบบเลื่อนลง ให้เลือกตัวเลือก
us (multiple regions in United States)

- คลิกสร้าง Bucket

- เมื่อสร้าง Bucket แล้ว ให้อัปโหลด
alphabet-metadata.jsonจากที่เก็บ
4. ขั้นตอนที่ 2: สร้าง Vertex AI Datastore
- ในแถบค้นหาของหน้าคอนโซล ให้พิมพ์ "Vertex AI Agent Builder"
- เลือกผลิตภัณฑ์แรก "Agent Builder"

- ในหน้า Agent Builder ให้คลิก "ที่เก็บข้อมูล" ตามที่แสดงในแถบนำทางด้านซ้าย

- คลิก "สร้างพื้นที่เก็บข้อมูล"

- เลือก Cloud Storage เป็นที่เก็บข้อมูล
- คลิก "เลือก" ใต้ไอคอน Cloud Storage

- ในแท็บด้านล่างตัวเลือก "โฟลเดอร์" ให้คลิกปุ่ม "เรียกดู"
- เลือก Bucket ที่คุณสร้างในขั้นตอนที่ 1
- ในตัวเลือกด้านล่าง โปรดเลือก "เอกสารที่ไม่มีโครงสร้างที่ลิงก์ (JSONL ที่มีข้อมูลเมตา)"
- คลิกดำเนินการต่อ

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

บราวนี:
- คุณจะเห็นตัวเลือกการประมวลผลเอกสารเหนือปุ่ม "สร้าง"
- คุณสามารถลองใช้ตัวแยกวิเคราะห์ต่างๆ เช่น ตัวแยกวิเคราะห์ดิจิทัล, OCR หรือเลย์เอาต์
- นอกจากนี้ คุณยังเปิดใช้การแบ่งกลุ่มขั้นสูงและระบุขีดจำกัดขนาดกลุ่มที่กำหนดเองได้ด้วย

5. ขั้นตอนที่ 3: สร้างเอเจนต์
- เมื่อสร้างที่เก็บข้อมูลแล้ว ให้คลิกแอปในแถบนำทางทางด้านซ้าย แล้วเลือก "แอป"
- คลิกปุ่ม "สร้างแอป"
- เลือกประเภทแอปเป็น "ค้นหา" (คุณยังสร้างเอเจนต์ บ็อตสนทนา คำแนะนำ ฯลฯ ได้ด้วย)

- ตรวจสอบว่าคุณเลือก "ทั่วไป" ในส่วนเนื้อหา นอกจากนี้ คุณยังเลือกสื่อหรือคำแนะนำตามที่เก็บข้อมูล ประเภทข้อมูล และระบบที่ต้องการสร้างได้ด้วย
- ตรวจสอบว่าได้เปิดใช้ทั้งฟีเจอร์ Enterprise Edition และ LLM ขั้นสูง
- ระบุชื่อแอปพลิเคชัน
- ระบุชื่อบริษัท

- ตรวจสอบว่าได้เลือกภูมิภาคเป็น "ทั่วโลก" แล้ว
- คลิก "ดำเนินการต่อ"

- ในหน้าจอถัดไป ให้เลือกที่เก็บข้อมูลที่คุณสร้างในขั้นตอนที่ 2
- คลิก "สร้าง"

6. ขั้นตอนที่ 4: Dockerize แอปพลิเคชัน
- เปิดเทอร์มินัลใน Google Cloud Console
- โคลนที่เก็บ <sample_repository_link> โดยใช้คำสั่งต่อไปนี้
git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo
- เปลี่ยนไดเรกทอรีและไปที่ที่เก็บที่โคลนโดยใช้คำสั่งต่อไปนี้
cd vertex-ai-search-agent-builder-demo
- โครงสร้างโฟลเดอร์
- แบ็กเอนด์ - จะมีการติดตั้งใช้งาน API ที่อิงตาม Python ซึ่งจะช่วยสร้างปลายทาง RESTful ให้กับฟรอนต์เอนด์เพื่อโต้ตอบด้วย
- ส่วนหน้า - จะมีแอปพลิเคชันที่ใช้ React และจะแสดง UI ซึ่งจะมีระดับการเรียกใช้แอปพลิเคชันที่จำเป็นไปยังแบ็กเอนด์ผ่านปลายทาง REST ด้วย
- Dockerfile - ไฟล์นี้จะมีคำสั่งที่เกี่ยวข้องทั้งหมดเพื่อสร้างคอนเทนเนอร์ Docker
- ในรูทของไดเรกทอรีที่เก็บ ให้เรียกใช้คำสั่งต่อไปนี้ซึ่งจะช่วยสร้างอิมเมจ Docker (หมายเหตุ: ตรวจสอบว่าใช้แฟล็ก
- - platformเมื่อสร้างคอนเทนเนอร์ Docker ใน Macbook ที่ใช้ชิป Apple Silicon เช่น M1, M2 เป็นต้น ไม่จำเป็นต้องใช้แฟล็กนี้หากคุณสร้างโดยใช้เครื่อง Windows หรือหากสถาปัตยกรรม CPU เป็นแบบ Intel)
docker build --platform linux/amd64 -t your-image-name .
- เมื่อสร้างคอนเทนเนอร์ Docker สำเร็จแล้ว ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดแท็กคอนเทนเนอร์ด้วยแท็กที่ถูกต้องเพื่อให้มั่นใจว่าคุณได้ระบุเวอร์ชันของอิมเมจ โปรดทราบว่าแอปพลิเคชันอาจมีหลายเวอร์ชัน ดังนั้นจึงมีหลายเวอร์ชันเป็นแท็กในคอนเทนเนอร์ Docker การตรวจสอบว่ามีการใช้เวอร์ชันล่าสุดที่เสถียรอยู่เสมอเป็นแนวทางที่ดีที่แนะนำจากมุมมองของ DevOps
docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
- เมื่อติดแท็กอิมเมจคอนเทนเนอร์ Docker เรียบร้อยแล้ว ให้พุชอิมเมจไปยัง Google Artifact Registry (GAR) GAR เป็นแพลตฟอร์มที่มีการจัดการอย่างเต็มรูปแบบจาก Google เพื่อช่วยจัดการและควบคุมเวอร์ชันของคอนเทนเนอร์ Docker เรียกใช้คำสั่งต่อไปนี้ที่จะพุชคอนเทนเนอร์ที่ติดแท็กข้างต้นไปยัง GAR ดูข้อมูลเพิ่มเติมได้ที่ลิงก์ [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]
docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
7. ขั้นตอนที่ 5: ทำให้แอปพลิเคชันใช้งานได้ใน Cloud Run
- ย่อเทอร์มินัล ในแถบค้นหาของคอนโซล Google Cloud ให้ค้นหา Cloud Run
- คลิกผลิตภัณฑ์ Cloud Run ที่แนะนำ

- คลิก "สร้างบริการ"
- ในหน้าถัดไป ให้ตรวจสอบว่าได้เลือก "ทำให้การแก้ไข 1 รายการใช้งานได้จากอิมเมจคอนเทนเนอร์ที่มีอยู่"
- คลิก "เลือก" ด้านล่าง
- ตอนนี้คุณจะเห็นแถบนำทางทางด้านขวา
- ตรวจสอบว่าได้เลือก Artifact Registry เป็นแท็บหรือไม่
- ตรวจสอบว่าได้เลือกโปรเจ็กต์อย่างถูกต้อง
- คลิกลูกศรเพื่อขยาย Accordion ในลิงก์รูปภาพคอนเทนเนอร์ที่ใช้งาน
- เลือกแท็กคอนเทนเนอร์และขยาย (เลือกแท็กที่ติดตั้งใช้งานล่าสุดเสมอ - โดยใช้แท็กล่าสุดที่ถูกต้อง เช่น v1, v2 ฯลฯ)
- คลิกอิมเมจคอนเทนเนอร์ที่แสดงใต้ชื่อแท็กคอนเทนเนอร์

- ในส่วนกำหนดค่า
- ระบุชื่อบริการสำหรับแอปพลิเคชัน Cloud Run (ชื่อนี้จะเป็นส่วนหนึ่งของ URL เมื่อคุณทําให้แอปพลิเคชันใช้งานได้ใน Cloud Run)
- เลือกภูมิภาคที่เหมาะสม (ในกรณีนี้คือ us-central1 หรือภูมิภาคที่คุณเลือก)
- ในส่วนการตรวจสอบสิทธิ์
- ตรวจสอบว่าได้เลือก "อนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์" แล้ว
- ในส่วนการจัดสรร CPU และราคา
- เลือก "จัดสรร CPU เฉพาะในระหว่างการประมวลผลคำขอ"
- แก้ไขการปรับขนาดอัตโนมัติของบริการเป็น 1 (เพื่อวัตถุประสงค์ในการผลิต ขอแนะนำให้มีอินสแตนซ์ขั้นต่ำที่ทำงานเพื่อจัดการการเข้าชมรายวัน คุณอาจปล่อยให้เป็น 0 หรือก็คือ 0 ก็ได้)
- ตั้งค่า "การควบคุมการรับส่งข้อมูลขาเข้า" เป็น "ทั้งหมด" เพื่ออนุญาตให้การรับส่งข้อมูลจากอินเทอร์เน็ตเข้าถึงแอปพลิเคชันของคุณ
- คลิก "สร้าง"
- ซึ่งจะทําให้ใช้งานอินสแตนซ์ Cloud Run และการจัดสรรอินสแตนซ์เดียวกันอาจใช้เวลาสักครู่

- เมื่อติดตั้งใช้งานแล้ว คุณจะเห็น URL ที่เผยแพร่ต่อสาธารณะซึ่งคุณใช้เข้าถึงเว็บแอปพลิเคชันได้

8. วิธีการทำงานทั้งหมด
- เมื่ออยู่ในหน้าแรกของแอปพลิเคชัน ให้คลิกปุ่ม "อัปโหลดเอกสาร"
- อัปโหลดไฟล์ PDF
- เมื่ออัปโหลดเสร็จสมบูรณ์
- คลิกแถบค้นหาที่ด้านบนของหน้าเว็บ
- เริ่มค้นหาคำค้นหาที่เกี่ยวข้องกับเอกสารที่คุณอัปโหลด
- เมื่อพิมพ์คำค้นหาและคลิกค้นหาแล้ว ระบบจะแสดงคำตอบที่เกี่ยวข้องทั้งหมดจากเอกสารที่คุณเพิ่งอัปโหลด
- คุณสามารถลองเล่นได้โดยดูโค้ดแบ็กเอนด์และเพิ่มการกำหนดค่าเพิ่มเติม เช่น การกำหนดค่าต่อไปนี้
- การเพิ่มข้อมูลโค้ด
- การเพิ่มกลุ่มข้อความที่ดึงมา
- การเพิ่มคำตอบ
- การปรับผลลัพธ์ k อันดับแรกเพื่อช่วยให้ LLM สรุปคำตอบ (คล้ายกับภาพรวมโดย AI ใน Google Search)
- นอกจากนี้ คุณยังเพิ่มแท็กข้อมูลเมตาขณะอัปโหลดเอกสารได้ด้วยในฐานะส่วนเสริม ซึ่งจะช่วยสร้างแง่มุมและหมวดหมู่ที่กรองได้
9. ล้างข้อมูล
โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโค้ดแล็บนี้
- ใน Google Cloud Console ให้ไปที่หน้าจัดการทรัพยากร
- ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
- ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเพื่อลบโปรเจ็กต์
- หรือคุณจะไปที่ Cloud Run ในคอนโซล เลือกบริการที่คุณเพิ่งติดตั้งใช้งาน แล้วลบก็ได้
10. ขอแสดงความยินดี
ยินดีด้วย คุณสร้างระบบ RAG ที่พร้อมใช้งานได้อย่างรวดเร็วโดยใช้โมเดลที่ทันสมัยซึ่งขับเคลื่อนโดย Google และเพื่อให้ผลการค้นหาที่มีคุณภาพของ Google แก่คำค้นหาของคุณได้สำเร็จ Codelab นี้มีไว้เพื่อการสาธิตเท่านั้น คุณต้องตั้งค่าความปลอดภัยและแนวทางเพิ่มเติมสำหรับกรณีการใช้งานจริง ลิงก์ไปยังที่เก็บข้อมูลที่สมบูรณ์อยู่ที่นี่ การใช้ประโยชน์จาก Google Cloud และทำตามขั้นตอนเพียง 5 ขั้นตอนจะช่วยให้เราสร้างระบบ RAG แบบครบวงจรที่สามารถให้บริการผลลัพธ์คุณภาพระดับ Google แก่คุณได้ทันทีในเวลาไม่กี่นาที เมื่อ Generative AI และโมเดลภาษาขนาดใหญ่พัฒนาขึ้น การสร้างระบบ RAG ดังกล่าวจะช่วยให้เราหลีกเลี่ยงข้อผิดพลาดของข้อมูลที่ AI แต่งขึ้นและข้อมูลที่ไม่มีการอ้างอิงที่ปรากฏขึ้น
แม้ว่านี่จะเป็นเพียงจุดเริ่มต้น แต่เราก็สามารถทำสิ่งมหัศจรรย์ได้ด้วย API RAG แบบ DIY ที่ปรับแต่งได้อย่างสมบูรณ์ ซึ่งจะช่วยให้คุณมีความโปร่งใส การควบคุม และประสิทธิภาพมากยิ่งขึ้นในการจัดการทุกส่วนของกระบวนการไปป์ไลน์ได้อย่างมีประสิทธิภาพ