จากที่ไม่เข้าใจอะไรเลย สู่การสร้างแอป RAG
เมื่อวานนี้ผมใช้เวลาอ่านโน้ต NLP ของตัวเองไปถึง 31 หน้า
ผมไม่เข้าใจอะไรเลย
ผมคิดว่าปัญหาอยู่ที่ตัวผม แต่เปล่าเลย ปัญหาอยู่ที่วิธีการของผม การอ่านโน้ตไม่ใช่การเรียนรู้ โน้ตที่ผมมีมันมีไว้สำหรับผู้เชี่ยวชาญ ไม่ใช่สำหรับมือใหม่
ผมเปลี่ยนวิธีการ ผมหยุดอ่าน แต่เปลี่ยนมาเป็นการตั้งคำถามแทน ผมใช้ตัวอย่างง่ายๆ และปฏิเสธที่จะใช้คำศัพท์เทคนิคจนกว่าจะเข้าใจแนวคิดนั้นจริงๆ
พอถึงสิ้นวัน ผมก็สร้างแอป RAG ได้สำเร็จ และนี่คือวิธีที่ผมเรียนรู้ 4 เสาหลักของ NLP
- Bag of Words คอมพิวเตอร์เข้าใจแค่คณิตศาสตร์ การจะประมวลผลข้อความ คุณต้องเปลี่ยนคำให้เป็นตัวเลข
ลองนึกภาพว่าคุณต้องการคัดแยกอีเมลว่าเป็นสแปมหรือไม่ คุณก็แค่ลิสต์คำทุกคำในอีเมลออกมา แล้วนับว่าแต่ละคำปรากฏขึ้นกี่ครั้ง วิธีนี้จะเปลี่ยนอีเมลให้กลายเป็นแถวของตัวเลข
ข้อเสียคืออะไร? มันไม่สนใจลำดับของคำ "Dog bites man" และ "man bites dog" จะดูเหมือนกันทุกประการสำหรับวิธีนี้
- TF-IDF Bag of Words ปฏิบัติต่อทุกคำเหมือนกันหมด แต่ "the" ไม่ได้สำคัญเท่ากับ "viagra"
TF-IDF ใช้กฎสองข้อ:
- Term Frequency (TF): คำนั้นปรากฏบ่อยแค่ไหนในอีเมลหนึ่งฉบับ
- Inverse Document Frequency (IDF): คำนั้นหายากแค่ไหนเมื่อเทียบกับอีเมลทั้งหมด
คณิตศาสตร์นี้จะช่วยลดความสำคัญของคำเติม (filler words) อย่าง "the" และเน้นคำที่สำคัญและหายากแทน
- Embeddings Bag of Words คิดว่า "money" และ "cash" ไม่เกี่ยวข้องกัน แต่ Embeddings แก้ปัญหานี้ได้
ลองนึกถึงแผนที่ขนาดใหญ่ ทุกๆ คำคือจุดหนึ่งบนแผนที่นั้น คำที่มีความหมายคล้ายกันจะอยู่ใกล้กัน "Money" และ "cash" เป็นเพื่อนบ้านกัน ส่วน "Banana" จะอยู่ไกลออกไป
คอมพิวเตอร์เรียนรู้ตำแหน่งเหล่านี้จากการดูว่าคำนั้นมักจะปรากฏอยู่ใกล้กับคำไหน ถ้า "money" และ "cash" มักจะปรากฏใกล้กับคำว่า "bank" และ "pay" คอมพิวเตอร์ก็จะวางพวกมันไว้ใกล้ๆ กัน
- RAG (Retrieval-Augmented Generation) นี่คือจุดที่ทุกอย่างมารวมกัน
หากโน้ตทุกฉบับในไฟล์ของคุณคือจุดหนึ่งบนแผนที่ คุณก็สามารถหาคำตอบได้โดยการหาจุดที่อยู่ใกล้ที่สุด
กระบวนการของ RAG:
- เปลี่ยนคำถามให้เป็นจุดหนึ่งจุด
- หาจุดของโน้ตที่อยู่ใกล้ที่สุดบนแผนที่
- ส่งโน้ตเหล่านั้นให้ AI
- สั่งให้ AI ตอบโดยใช้ข้อมูลจากโน้ตเหล่านั้นเท่านั้น
วิธีนี้จะช่วยป้องกันไม่ให้ AI เดาสุ่มหรือโกหก แต่มันจะบังคับให้ AI ใช้ข้อมูลจริงของคุณ
ผมสร้างแอป Synapse ของผมโดยใช้ขั้นตอนเหล่านี้ ผมเปลี่ยนจากศูนย์มาเป็นระบบที่ใช้งานได้จริงภายในวันเดียว
บทเรียน: หยุดอ่าน แล้วเริ่มตั้งคำถาม หากคุณไม่สามารถอธิบายแนวคิดด้วยการเปรียบเทียบง่ายๆ ได้ นั่นแปลว่าคุณยังไม่เข้าใจมันจริงๆ จงสร้างบางอย่างขึ้นมาเพื่อพิสูจน์ว่าคุณเข้าใจมันแล้ว
ที่มา: https://dev.to/sabimantock/from-i-understood-nothing-to-building-a-rag-app-4033
ชุมชนการเรียนรู้เพิ่มเติม: https://t.me/GyaanSetuAi