1. ก่อนเริ่มต้น
สิ่งที่ควรทราบก่อนทำ Codelab ต่อมีดังนี้
ข้อกำหนดเบื้องต้น
- ความเข้าใจพื้นฐานเกี่ยวกับ LLM
- ความเข้าใจพื้นฐานเกี่ยวกับระบบ RAG
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างเครื่องมือค้นหาคุณภาพระดับ Google ที่ตอบคําถามจากข้อมูลที่คุณอัปโหลดได้
- วิธีสร้าง Vertex AI Datastore
- วิธีสร้างตัวแทน Vertex AI
- วิธีใช้ประโยชน์จาก CloudRun เพื่อทำให้แอปพลิเคชันใช้งานได้
สิ่งที่ต้องมี
- บัญชี Google Cloud
- โปรเจ็กต์ Google Cloud
- IDE ที่มีเทอร์มินัล
บทนำ
Google Search เป็นเครื่องมืออันทรงประสิทธิภาพที่ใช้ดัชนีหน้าเว็บและเนื้อหาอื่นๆ จำนวนมากเพื่อแสดงผลการค้นหาที่เกี่ยวข้องกับคำค้นหาของผู้ใช้ การดำเนินการนี้เกิดขึ้นได้จากเทคนิคที่เรียกว่า Retrieval Augmented Generation (RAG) ซึ่งเป็นเทคนิคหลักใน AI ยุคใหม่
RAG ทำงานโดยการดึงข้อมูลข้อความที่เกี่ยวข้องจากคลังเอกสารก่อน ซึ่งทำได้โดยใช้วิธีการต่างๆ เช่น การจับคู่คีย์เวิร์ด ความคล้ายคลึงกันของความหมาย และแมชชีนเลิร์นนิง เมื่อเรียกข้อมูลข้อความที่เกี่ยวข้องแล้ว ระบบจะใช้ข้อความเหล่านั้นเพื่อสร้างข้อมูลสรุปหรือคำตอบสำหรับคำค้นหาของผู้ใช้
ประโยชน์หลักของ RAG คือช่วยให้โมเดลภาษาหลีกเลี่ยงการเห็นภาพหลอน อาการประสาทหลอนเป็นคำที่ใช้อธิบายการสร้างข้อความที่หลักฐานในชุดเอกสารไม่รองรับ ซึ่งอาจเกิดขึ้นได้เมื่อโมเดลภาษาไม่สามารถแยกความแตกต่างระหว่างข้อมูลที่เกี่ยวข้องกับข้อมูลที่ไม่เกี่ยวข้อง
RAG ช่วยหลีกเลี่ยงการหลอกลวงโดยการตรวจสอบว่าข้อความที่สร้างขึ้นนั้นอิงตามหลักฐานจากเอกสารชุดข้อมูลเสมอ ซึ่งทำให้เป็นแหล่งข้อมูลที่เชื่อถือได้มากขึ้น
RAG เป็นเทคนิคที่มีประสิทธิภาพซึ่งใช้ในแอปพลิเคชันต่างๆ เช่น เครื่องมือค้นหา แชทบ็อต และระบบตอบคำถาม และมีแนวโน้มที่จะเข้ามามีบทบาทสำคัญยิ่งขึ้นใน AI ในอีกไม่กี่ปีข้างหน้า
ต่อไปนี้คือตัวอย่างการใช้ RAG ในทางปฏิบัติ
- ระบบการค้นหาจำนวนมากใช้ RAG เพื่อสร้างผลการค้นหาที่เกี่ยวข้องกับคำค้นหาของผู้ใช้
- แชทบ็อตใช้ RAG เพื่อสร้างคำตอบสำหรับคำถามของผู้ใช้ซึ่งมีข้อมูลที่เป็นประโยชน์และน่าสนใจ
- ระบบการตอบคำถามใช้ RAG เพื่อสร้างคำตอบที่ถูกต้องและครอบคลุมสำหรับคำถามของผู้ใช้
RAG เป็นเทคนิคที่มีประโยชน์หลากหลายซึ่งใช้เพื่อสร้างข้อความในโดเมนและแอปพลิเคชันต่างๆ ได้ ซึ่งเป็นเครื่องมือที่มีประสิทธิภาพซึ่งช่วยให้ AI ฉลาดขึ้นและมีข้อมูลมากขึ้น
ใน Codelab นี้ เราจะสร้างระบบ 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 นี้ใช้งานได้ (พร้อมฟรอนท์เอนด์และแบ็กเอนด์) บน CloudRun ซึ่งเป็นแพลตฟอร์มแบบ Serverless ที่ทำให้แอปพลิเคชันใช้งานได้เป็นคอนเทนเนอร์บน 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: สร้างที่เก็บข้อมูล GCP
- ไปที่คอนโซล แล้วพิมพ์ Cloud Storage ในแถบค้นหา
- เลือก Cloud Storage จากผลการค้นหาที่แนะนำ
- คลิก "สร้างที่เก็บข้อมูล"
- ระบุชื่อที่ไม่ซ้ำกันทั่วโลกสำหรับที่เก็บข้อมูล
- คลิก "ดำเนินการต่อ"
- ใน "ประเภทสถานที่ตั้ง" ให้เลือก "หลายภูมิภาค"
- ในเมนูแบบเลื่อนลง ให้เลือกตัวเลือก
us (multiple regions in United States)
- คลิก "สร้างที่เก็บข้อมูล"
- เมื่อสร้างที่เก็บข้อมูลแล้ว ให้อัปโหลด
alphabet-metadata.json
จากที่เก็บ
4. ขั้นตอนที่ 2: สร้าง Vertex AI Datastore
- พิมพ์ "Vertex AI Agent Builder" ในแถบค้นหาของหน้าคอนโซล
- เลือกผลิตภัณฑ์แรก "Agent Builder"
- ในหน้าเครื่องมือสร้างตัวแทน ให้คลิก "พื้นที่เก็บข้อมูล" ตามที่แสดงในแถบนำทางด้านซ้าย
- คลิก "สร้างที่เก็บข้อมูล"
- เลือก Cloud Storage เป็นที่เก็บข้อมูล
- คลิก "เลือก" ใต้ไอคอนพื้นที่เก็บข้อมูลระบบคลาวด์
- ในแท็บด้านล่างตัวเลือก "โฟลเดอร์" ให้คลิกปุ่ม "เรียกดู"
- เลือกที่เก็บข้อมูลที่สร้างไว้ในขั้นตอนที่ 1
- ในตัวเลือกด้านล่าง ให้เลือก "เอกสารที่ไม่มีโครงสร้างที่ลิงก์ (JSONL ที่มีข้อมูลเมตา)"
- คลิก ดำเนินการต่อ
- ในหน้าการกําหนดค่า ให้เลือก "ส่วนกลาง" เป็นตําแหน่งที่จัดเก็บข้อมูล
- ระบุชื่อที่ระบุได้ให้กับพื้นที่เก็บข้อมูลของคุณ
- คลิกสร้าง
บราวนี่:
- คุณจะเห็นตัวเลือกการประมวลผลเอกสารเหนือปุ่ม "สร้าง"
- คุณเล่นกับโปรแกรมแยกวิเคราะห์ต่างๆ ได้ เช่น โปรแกรมแยกวิเคราะห์แบบดิจิทัล OCR หรือเลย์เอาต์
- คุณยังเปิดใช้การแยกส่วนขั้นสูงและระบุขีดจำกัดขนาดกลุ่มที่กำหนดเองได้ด้วย
5. ขั้นตอนที่ 3: สร้าง Agent
- เมื่อสร้างที่เก็บข้อมูลแล้ว ให้คลิกแอปในแถบนําทางด้านซ้าย แล้วเลือก "แอป"
- คลิกปุ่ม "สร้างแอป"
- เลือกประเภทแอปเป็น "การค้นหา" (คุณยังสร้างตัวแทน บอทสนทนา คําแนะนํา ฯลฯ ได้ด้วย)
- ตรวจสอบว่าคุณเลือก "ทั่วไป" ในส่วนเนื้อหา คุณยังเลือกสื่อหรือคําแนะนําตามพื้นที่เก็บข้อมูลและประเภทของข้อมูลและระบบที่ต้องการสร้างได้ด้วย
- ตรวจสอบว่าได้เปิดทั้งฟีเจอร์รุ่น Enterprise และ LLM ขั้นสูง
- ระบุชื่อแอปพลิเคชันของคุณ
- ระบุชื่อบริษัทของคุณ
- โปรดเลือกภูมิภาคเป็น "ทั่วโลก"
- คลิก "ดำเนินการต่อ"
- ในหน้าจอถัดไป ให้เลือกพื้นที่เก็บข้อมูลที่สร้างในขั้นตอนที่ 2
- คลิก "สร้าง"
6. ขั้นตอนที่ 4: เปลี่ยนแอปพลิเคชันเป็น Docker
- เปิดเทอร์มินัลในคอนโซล Google Cloud
- โคลนที่เก็บ <sample_repository_link> โดยใช้คําสั่งต่อไปนี้
git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo
- เปลี่ยนไดเรกทอรีและไปที่ที่เก็บข้อมูลที่โคลนโดยใช้คำสั่งต่อไปนี้
cd vertex-ai-search-agent-builder-demo
- โครงสร้างโฟลเดอร์
- แบ็กเอนด์ - จะเตรียมการใช้งาน API แบบ Python ที่จะช่วยสร้างปลายทางที่ใช้งานได้สำหรับฟรอนท์เอนด์ในการโต้ตอบ
- หน้าเว็บ - หน้าเว็บนี้จะเก็บแอปพลิเคชันที่ใช้ React และจะแสดง UI การดำเนินการนี้จะมีการเรียกใช้ระดับแอปพลิเคชันที่จำเป็นไปยังแบ็กเอนด์ผ่านปลายทางที่เหลือด้วย
- Dockerfile - ไฟล์นี้จะมีคำสั่งที่เกี่ยวข้องทั้งหมดเพื่อสร้างคอนเทนเนอร์ Docker
- ในรูทของไดเรกทอรีที่เก็บ ให้เรียกใช้คําสั่งต่อไปนี้ซึ่งจะช่วยสร้างอิมเมจ Docker (หมายเหตุ: อย่าลืมใช้ Flag
- - platform
เมื่อสร้างคอนเทนเนอร์ Docker ใน Macbook ที่ใช้ชิป Apple Silicon เช่น M1, M2 เป็นต้น คุณไม่จำเป็นต้องใช้ Flag นี้หากสร้างโดยใช้เครื่อง 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
- ย่อเทอร์มินัลของคุณ ค้นหา Cloud Run ในแถบค้นหาของคอนโซล Google Cloud
- คลิกผลิตภัณฑ์ Cloud Run ที่แนะนำ
- คลิก "สร้างบริการ"
- ในหน้าถัดไป ตรวจสอบว่าได้เลือก "ทำให้การแก้ไข 1 รายการใช้งานได้จากอิมเมจคอนเทนเนอร์ที่มีอยู่" แล้ว
- คลิก "เลือก" ด้านล่าง
- คุณจะได้รับข้อความแจ้งพร้อมแถบนำทางที่ด้านขวา
- ตรวจสอบว่าได้เลือก Artifact Registry เป็นแท็บ
- ตรวจสอบว่าได้เลือกโปรเจ็กต์อย่างถูกต้อง
- คลิกที่ลูกศรเพื่อขยายแอคคอร์เดียนบนลิงก์รูปภาพคอนเทนเนอร์ที่ทำให้ใช้งานได้แล้ว
- เลือกแท็กคอนเทนเนอร์และขยาย (เลือกแท็กล่าสุดที่ติดตั้งใช้งานเสมอ โดยมีแท็กล่าสุดที่ถูกต้อง เช่น v1, v2 ฯลฯ)
- คลิกรูปภาพคอนเทนเนอร์ที่แสดงใต้ชื่อแท็กคอนเทนเนอร์
- ในพื้นที่กําหนดค่า
- ระบุชื่อบริการสำหรับแอปพลิเคชัน Cloud Run (ชื่อนี้จะเป็นส่วนหนึ่งของ URL เมื่อคุณทำให้แอปพลิเคชันใช้งานได้ใน Cloud Run)
- เลือกภูมิภาคที่เหมาะสม (ในกรณีนี้คือ us-central1 หรือภูมิภาคใดก็ได้ที่คุณเลือก)
- ในส่วนการตรวจสอบสิทธิ์
- ตรวจสอบว่าได้เลือก "อนุญาตคำขอที่ไม่ผ่านการตรวจสอบสิทธิ์" แล้ว
- ในส่วนการจัดสรร CPU และการกำหนดราคา
- เลือก "จัดสรร CPU เฉพาะระหว่างการประมวลผลคำขอ"
- แก้ไขการปรับขนาดบริการอัตโนมัติเป็น 1 (สำหรับเวอร์ชันที่ใช้งานจริง ขอแนะนำให้มีอินสแตนซ์ขั้นต่ำที่ทำงานเพื่อจัดการกับการรับส่งข้อมูลรายวัน หรือจะปล่อยไว้เป็น 0 เช่น 0 ก็ได้)
- ตั้งค่า "การควบคุมการรับส่งข้อมูลขาเข้า" เป็น "ทั้งหมด" เพื่ออนุญาตให้การรับส่งข้อมูลจากอินเทอร์เน็ตเข้าถึงแอปพลิเคชันของคุณ
- คลิก "สร้าง"
- ซึ่งจะทําให้อินสแตนซ์ Cloud Run ใช้งานได้และการจัดสรรอินสแตนซ์เดียวกันจะใช้เวลา 2-3 นาที
- เมื่อติดตั้งใช้งานแล้ว คุณจะเห็น URL ที่เผยแพร่แบบสาธารณะซึ่งใช้เข้าถึงเว็บแอปพลิเคชันได้
8. วิธีการทํางาน
- เมื่ออยู่ในหน้าแรกของแอปพลิเคชัน ให้คลิกปุ่ม "อัปโหลดเอกสาร"
- อัปโหลดไฟล์ PDF
- เมื่ออัปโหลดเสร็จแล้ว
- คลิกแถบค้นหาที่ด้านบนของหน้าเว็บ
- เริ่มค้นหาคำค้นหาที่เกี่ยวข้องกับเอกสารที่อัปโหลด
- เมื่อพิมพ์ข้อความค้นหาและคลิก "ค้นหา" ระบบจะแสดงคำตอบที่เกี่ยวข้องทั้งหมดจากเอกสารที่คุณเพิ่งอัปโหลด
- คุณสามารถทดลองใช้งานได้โดยดูโค้ดแบ็กเอนด์และเพิ่มการกำหนดค่าเพิ่มเติมดังต่อไปนี้
- การเพิ่มข้อมูลโค้ด
- การเพิ่มกลุ่มข้อความที่ดึงข้อมูล
- การเพิ่มคำตอบ
- การปรับผลลัพธ์อันดับสูงสุดเพื่อช่วยให้ LLM สรุปคำตอบ (เช่น ข้อมูลภาพรวมโดย AI ใน Google Search)
- นอกจากนี้ คุณยังเพิ่มแท็กข้อมูลเมตาขณะอัปโหลดเอกสารเป็นส่วนเสริมได้ด้วย ซึ่งจะช่วยสร้างแง่มุมและหมวดหมู่ที่กรองได้
9. ล้างข้อมูล
โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ใน Codelab นี้
- ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร
- ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
- ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเครื่องเพื่อลบโปรเจ็กต์
- หรือไปที่ Cloud Run ในคอนโซล เลือกบริการที่เพิ่งทำให้ใช้งานได้ แล้วลบ
10. ขอแสดงความยินดี
ยินดีด้วย คุณสร้างระบบ RAG ที่พร้อมใช้งานอย่างรวดเร็วโดยใช้โมเดลล้ำสมัยที่ Google ขับเคลื่อนและแสดงผลการค้นหาคุณภาพสูงของ Google ให้กับคำค้นหาของคุณเรียบร้อยแล้ว Codelab นี้มีไว้เพื่อการสาธิตเท่านั้น จึงต้องตั้งค่าการรักษาความปลอดภัยและขอบเขตเพิ่มเติมสำหรับการใช้งานจริง ลิงก์ไปยังที่เก็บที่สมบูรณ์อยู่ที่นี่ เพียงใช้ประโยชน์จาก Google Cloud และ 5 ขั้นตอน เราก็สามารถสร้างระบบ RAG ตั้งแต่ต้นจนจบซึ่งจะแสดงผลลัพธ์คุณภาพระดับ Google ให้คุณใช้งานได้ทันทีในไม่กี่นาที เมื่อ Generative AI และโมเดลภาษาขนาดใหญ่พัฒนาขึ้น การสร้างระบบ RAG ดังกล่าวยังช่วยให้เราหลีกเลี่ยงข้อผิดพลาดที่อาจเกิดขึ้นจากการแสดงข้อมูลที่ไม่ถูกต้องและไม่ได้อ้างอิงด้วย
แม้ว่านี่จะเป็นเพียงจุดเริ่มต้น แต่เราทําสิ่งต่างๆ ได้อย่างน่าอัศจรรย์ด้วย DIY RAG API ที่ปรับแต่งได้ทั้งหมด ซึ่งจะช่วยให้คุณมีความโปร่งใส ความสามารถ และประสิทธิภาพมากขึ้นในการจัดการทุกส่วนของกระบวนการไปป์ไลน์ได้อย่างมีประสิทธิภาพ