สร้างระบบตอบคำถามลูกค้าร้านอิเล็กทรอนิกส์ ด้วย Thai LLM ล้วนๆ
บน Kaggle
มีคนสมัคร 256 คน เข้าแข่งจริง 55 คน ส่งผลงานรวม 107 ครั้ง
สร้างระบบ RAG ตอบคำถาม 100 ข้อ เกี่ยวกับร้านอิเล็กทรอนิกส์ชื่อ 'ฟ้าใหม่' แต่ละข้อมี 10 ตัวเลือก (ไม่ใช่แค่ 4 แบบปกติ!)
ไฟล์ markdown ราว 40 ไฟล์ ครอบคลุมข้อมูลสินค้า นโยบายร้าน และข้อมูลทั่วไป — ทั้งหมดเป็นภาษาไทย
ห้ามใช้ GPT-4 หรือ Claude — ต้องใช้ Thai LLM เท่านั้น ไม่ว่าจะเป็น Typhoon, OpenThaiGPT, KBTG หรือ Pathumma
Thai LLM ยังตามหลัง GPT-4 อยู่พอสมควร — ต้องออกแบบ pipeline ที่ช่วยเสริมจุดอ่อนตรงนี้ เช่น การใช้ multi-model voting, retrieval ที่เหมาะสม, และ prompt engineering ที่ดี
10 ตัวเลือกต่อข้อ ทำให้สุ่มตอบได้แค่ 10% — ต้องมีกลยุทธ์จริงๆ ไม่ใช่แค่โชค ดังนั้นการจัดอันดับและประเมินความเชื่อมั่นของคำตอบจึงเป็นสิ่งสำคัญ
ตัวเลือกที่ 9 (ไม่มีข้อมูลในระบบ) กับตัวเลือกที่ 10 (คำถามไม่เกี่ยวกับร้าน) — ต้องรู้ให้ได้ว่าเมื่อไหร่ควรตอบตัวเลือกเหล่านี้ แทนที่จะเดามั่ว
ก่อนจะตอบ ผมให้ระบบวิเคราะห์ก่อนว่าคำถามนี้เกี่ยวกับอะไร — สินค้า นโยบาย ข้อมูลร้าน หรือไม่เกี่ยวกับร้านเลย? ใช้ keyword matching + TF-IDF ช่วยจัดกลุ่ม ถ้าคำถามไม่เกี่ยวกับร้านเลย ก็ตอบตัวเลือกที่ 10 ทันที ไม่ต้องเสียเวลาค้นข้อมูล
ใช้ TF-IDF ค้น knowledge base ดึงเอกสารที่ตรงกับคำถามมากที่สุด แล้ว chunk ให้พอดีกับ context window ของ Thai LLM — เพราะถ้ายัดข้อมูลมากไป model จะสับสนเอง
ส่วนนี้เป็นหัวใจของ pipeline — ผมส่งคำถามให้ Thai LLM หลายตัว (Typhoon, OpenThaiGPT, KBTG) อ่านพร้อมกัน
เทคนิคสำคัญคือ Choice Shuffling: ในแต่ละรอบ ผมสลับลำดับตัวเลือก เพราะ LLM มีแนวโน้มชอบตอบตัวเลือกแรกๆ (position bias) — พอสลับแล้วโหวต ก็ลด bias ได้
ถ้าทุก model ไม่มั่นใจในคำตอบ ระบบจะกลับไปดูว่าควรตอบตัวเลือกที่ 9 (ไม่มีข้อมูล) หรือไม่ คำตอบสุดท้ายตัดสินจาก majority voting
hack3-fahmai-rag-pipeline.ipynb