ในปี 2026 คุณยังคิดอยู่หรือไม่ว่า "semantic search = embeddings + vector DB"?
ประเด็นหลัก
การค้นหาเชิงความหมายไม่ได้สำคัญแค่ ความคล้ายคลึง (similarity) เท่านั้น แต่
ต้องทำให้ดีครบทั้ง ① การแทนความหมาย (representation) + ② ความคล้ายคลึง (similarity) + ③ เกณฑ์การจับคู่ (match criteria) จึงจะถือว่าเป็นการค้นหาที่ดีจริง
ข้อชี้ให้เห็นคือ การค้นหาเวกเตอร์ที่อิง embeddings ทำได้ดีในข้อ ① และ ② แต่ อ่อนมากในข้อ ③ (รวม/ตัดผลลัพธ์ให้เหลือเฉพาะขอบเขตที่ผู้ใช้ต้องการอย่างแม่นยำ)
ตัวอย่างหลัก:
คิวรี: "ผลไม้กลมสีแดงที่ออกบนต้นไม้"
ผลลัพธ์จากระบบ embeddings ที่ดี (มักโผล่ในอันดับต้น ๆ):
- แอปเปิล
- ส้ม
- ⚾️ ลูกเบสบอล
→ ผู้ใช้ไม่ต้องการลูกเบสบอลเด็ดขาด แต่ embeddings มองว่า "กลมและสีแดง" ใกล้เคียงมากพอ จึงใส่มาให้ด้วย
แก้ด้วย threshold ก็ไม่ได้ผล (ต่างกันไปตามโดเมนและแต่ละคิวรี)
ทางเลือกที่เสนอคือ: อนุกรมวิธานแบบลำดับชั้นที่จัดการอย่างดี (Managed Taxonomies)
เช่นตัวอย่างหมวดหมู่เฟอร์นิเจอร์ของ Wayfair
Baby & Kids
└─ Toddler & Kids Playroom
└─ Indoor Play
└─ Rocking Horses
└─ Novelty Rocking Horses
เมื่อนำสิ่งนี้ไปวางบน BM25 ด้วย hierarchical tokenizer
- หมวดหมู่ที่เฉพาะเจาะจงกว่า (ลูก) = df ต่ำกว่า → คะแนน bm25 จะสูงขึ้นโดยอัตโนมัติ
- ผู้ใช้สามารถปรับขอบเขตได้อย่างแม่นยำด้วยภาษาที่เข้าใจได้ (ไล่ขึ้นไปยังหมวดแม่/ปู่ย่า จะค่อย ๆ กว้างขึ้น)
- หากใช้ LLM ช่วยทำงานจัดหมวดหมู่อัตโนมัติ ภาระการดูแลรักษาก็ลดลงมาก
สรุป:
embeddings ทรงพลัง แต่ ไม่ใช่สิ่งจำเป็น
เพียงอาศัยความสามารถด้านหมวดหมู่/การจัดประเภทที่โดเมนมีอยู่แล้ว ร่วมกับการช่วยเสริมจาก LLM
ก็สามารถสร้าง semantic search ที่ แม่นยำกว่าและให้ประสบการณ์ผู้ใช้ดีกว่าอย่างมาก เมื่อเทียบกับ embeddings ได้
แนะนำเป็นพิเศษสำหรับผู้ที่ทำ การค้นหาเฉพาะโดเมน เช่น อีคอมเมิร์ซ การแพทย์ กฎหมาย ห้องสมุด เป็นต้น
1 ความคิดเห็น
ดูเหมือนว่าจะต้องใช้ hybrid search กับ multi-query RAG นะ