มาต่อ Open AI ผ่าน Line ด้วย Golang ให้บอทมันฉลาดและคุยต่อเนื่องแบบง่ายๆกัน PartII(จบ)
จากบทความเดิมตอนที่แล้ว บทความ PartI พูดเกี่ยวกับการต่อ Bot เข้ากับ Open AI ให้บอทฉลาดขึ้นและและให้บอทรู้ว่ากำลังคุยกับใครอยู่และเคยคุยกันอะไรมาบ้าง วันนี้จะมาทำให้บอทตอบคำถามให้แม่นยำมากขึ้นตามข้อมูลที่เรามีโดยจะพูดถึง Embedding และ Vector
Embedding คือวิธีการแปลงข้อมูลต่างๆ ไม่ว่าจะเป็นคำ, ประโยค, รูปภาพ, หรืออื่นๆ ให้กลายเป็นตัวเลข เพื่อทำให้คอมพิวเตอร์เข้าใจได้ง่ายขึ้น และลดขนาดข้อมูลลง โดยเฉพาะอย่างยิ่งในรูปแบบของ Vector ซึ่งเป็นชุดของตัวเลขที่มีลำดับและขนาดที่กำหนด
ตัวอย่างเช่น:
สมมติว่าคุณมีคำสามคำคือ แมว, หมา, และ ปลา. การใช้ Embedding จะทำการแปลงคำเหล่านี้ให้เป็น Vector ตัวเลข เช่น:
- แมว -> [0.1, 0.3]
- หมา -> [0.2, 0.3]
- ปลา -> [0.5, 0.7]
จะเห็นได้ว่า แมว และ หมา มี Vector ที่ใกล้เคียงกัน เนื่องจากคำเหล่านี้มีความหมายใกล้เคียงกัน ในขณะที่ ปลา มี Vector ที่ห่างออกไป เพราะความหมายของมันต่างออกไป
ทำไม Embedding ถึงสำคัญ?
- ลดขนาดข้อมูล: แทนที่จะใช้คำหรือรูปภาพขนาดใหญ่ เราใช้ Vector ที่มีขนาดเล็กกว่า
- ความเข้าใจเชิงความหมาย: Vector ที่ได้จาก Embedding สามารถจับความหมายเชิงความสัมพันธ์ระหว่างข้อมูลได้ เช่น คำที่มีความหมายใกล้เคียงกันจะมี Vector ที่ใกล้เคียงกัน
- การประมวลผลใน Machine Learning: ทำให้สามารถใช้ข้อมูลเหล่านี้ในแบบจำลองการเรียนรู้ของเครื่องได้ง่ายขึ้น เช่น การวิเคราะห์ข้อความ, การแนะนำสินค้า, หรือการรู้จำภาพ
ดังนั้น เมื่อเราใส่ชุดคำถามเข้าไปในระบบที่ใช้ Embedding ระบบจะสามารถเลือกคำตอบที่มีความสัมพันธ์ใกล้เคียงกับคำถามได้ดีขึ้น ทำให้การตอบคำถามของ Bot แม่นยำมากขึ้น
0.Training ให้ข้อมูลที่เรามีทั้งหมดไปอยู่ในรูปแบบของ Vector
1.LINE: ผู้ใช้ส่งข้อความผ่าน LINE
2.Webhook: ข้อความจาก LINE จะถูกส่งไปยัง Webhook ที่คุณกำหนดในโค้ด
3.handleTextEvent: Webhook รับข้อความและเรียกฟังก์ชัน handleTextEvent เพื่อประมวลผลข้อความ
- ฟังก์ชันนี้จะดึงข้อมูลจาก tempMessagesถ้ามีข้อมูลก่อนหน้า
- ถ้าไม่มีข้อมูลก่อนหน้า จะเพิ่มข้อความเริ่มต้นลงใน tempMessages และให้รู้จักชื่อเล่นในไลน์ของเราด้วย
- ฟังก์ชันจะเพิ่มข้อความใหม่จากผู้ใช้ลงใน tempMessages
- เพิ่มในส่วนเอาข้อมูลไป Embeding และ เปรียบเทียบ Vector ว่าคล้ายอันไหนที่สุดเพื่อให้บอทตอบได้แม่นยำหรือตามข้อมูลที่เราให้ไปเพิ่มเติ่ม
4.OpenAI Completions: ข้อความทั้งหมดที่เก็บใน tempMessages จะถูกส่งไปยัง OpenAI เพื่อสร้างการตอบกลับ
5.Reply Message: ผลลัพธ์จาก OpenAI จะถูกส่งกลับไปยังผู้ใช้ผ่าน LINE
มาทำกันเลยดีกว่าส่วนแรกเป็นชุดข้อมูล .txt
ด้านล่างเป็น Source Code ทั้งหมดคล้ายๆของเดิมเมื่อตอนที่แล้วมีเพิ่มส่วน ของ Embedding และ Vector ขึ้นมา
มารับชม Video กันครับ
เป็นยังไงบ้างครับจบไปแล้วกับเรื่องทำให้บอทมันตอบข้อมูลได้แม่นยำมากขึ้น แค่นี้เราก็มีระบบที่ตอบคำถามเกี่ยวสินค้าเราได้แล้ว เรายังเอาไปประยุกต์ได้อีกเยอะมากๆ และข้อมูลพวกนี้ควรเก็บไว้ในฐานข้อมูลนะครับไม่ควรประมวลผลใหม่ทุกรอบผมยกมาเป็นแค่ตัวอย่างสั้นๆของความว้าว แค่นี้ก็มีระบบสุดเท่ๆไว้ใช้เองแล้วครับ Good Luck แล้วรอติดตามผลงานใหม่ๆของผมได้นะครับ