ในยุคที่ Large Language Model (LLM) กลายเป็นหัวใจสำคัญของระบบ AI หลายองค์กรต่างต้องการผสานความรู้เฉพาะทางของตนเข้ากับ LLM เพื่อสร้างระบบตอบคำถามที่แม่นยำและตรงกับบริบทธุรกิจ บทความนี้จะพาคุณสร้างระบบ RAG (Retrieval-Augmented Generation) ด้วย LlamaIndex ตั้งแต่เริ่มต้นจนสามารถใช้งานจริงในงบประมาณที่ประหยัด พร้อมโค้ดที่พร้อมรันทันที

กรณีศึกษา: ระบบ RAG สำหรับร้านค้าอีคอมเมิร์ซยักษ์ใหญ่

บริษัท FreshMart (นามสมมติ) มีแคตตาล็อกสินค้ากว่า 50,000 รายการ คู่มือการใช้งานสินค้า 3,000 ฉบับ และคำถามที่พบบ่อยอีกหลายพันข้อ ทีมพัฒนาต้องการสร้าง AI Chatbot ที่สามารถตอบคำถามเกี่ยวกับสินค้า บริการจัดส่ง และนโยบายการคืนสินค้าได้อย่างแม่นยำ โดยมีความต้องการดังนี้:

ระบบ RAG คือคำตอบสำหรับความต้องการเหล่านี้ เพราะช่วยให้ LLM สามารถดึงข้อมูลจากฐานความรู้เฉพาะทางก่อนตอบ แทนที่จะพึ่งพาความรู้ทั่วไปที่อาจไม่ถูกต้องหรือล้าสมัย

RAG Architecture: โครงสร้างระบบ Vector Retrieval

ก่อนเข้าสู่การเขียนโค้ด เรามาทำความเข้าใจ Architecture ของระบบ RAG กันก่อน:

┌─────────────────────────────────────────────────────────────────┐
│                        RAG Pipeline                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────┐    ┌──────────────┐    ┌────────────────────┐    │
│  │ เอกสาร   │───▶│  Chunking    │───▶│  Vector Embedding  │    │
│  │ ต้นทาง   │    │  (แบ่งส่วน)   │    │   (สร้าง Vector)    │    │
│  └──────────┘    └──────────────┘    └─────────┬──────────┘    │
│                                                │                │
│                                                ▼                │
│                                     ┌────────────────────┐     │
│                                     │   Vector Store     │     │
│                                     │   (Chroma/Pinecone)│     │
│                                     └─────────┬──────────┘     │
│                                               │                │
│  ┌──────────┐    ┌──────────────┐             │                │
│  │  คำถาม   │───▶│ Query Embed  │─────────────┘                │
│  │ ผู้ใช้    │    │ (แปลงคำถาม)  │                              │
│  └──────────┘    └──────┬───────┘                              │
│                         │                                       │
│                         ▼                                       │
│              ┌─────────────────────┐                            │
│              │   Similarity Search  │                            │