แปลงคำพูดกับรูปภาพให้กลายเป็นตัวเลขที่เครื่องเข้าใจได้จริง

สรุปสั้น ๆ
Embeddings คือกระบวนการแปลงข้อความ รูปภาพ เสียง หรือข้อมูลประเภทอื่นให้เป็นเวกเตอร์ตัวเลขหลายมิติที่แทนความหมายของข้อมูลนั้น โดยข้อมูลที่มีความหมายใกล้เคียงกันจะมีเวกเตอร์ที่อยู่ใกล้กันในเชิงคณิตศาสตร์ นี่คือกลไกพื้นฐานที่ทำให้ระบบค้นหาเชิงความหมาย ระบบแนะนำ และ RAG ทำงานได้ เพราะคอมพิวเตอร์เปรียบเทียบตัวเลขได้ แต่เปรียบเทียบ 'ความหมาย' ของประโยคตรง ๆ ไม่ได้
ลองนึกภาพระบบแนะนำบทความของเว็บข่าวแห่งหนึ่ง ทีมพัฒนาเริ่มต้นด้วยการแนะนำบทความที่มีแท็กหมวดหมู่เดียวกัน แต่ผลลัพธ์ที่ได้ค่อนข้างหยาบ บทความเรื่อง 'นโยบายดอกเบี้ยของธนาคารกลาง' กับบทความเรื่อง 'ราคาทองคำผันผวน' ถูกแท็กคนละหมวดเพราะทีมเนื้อหาแท็กแยกกันไว้ตั้งแต่ต้น ทั้งที่ในความเป็นจริงสองเรื่องนี้เกี่ยวข้องกันอย่างมากในเชิงเนื้อหา ผู้อ่านที่สนใจเรื่องหนึ่งมักสนใจอีกเรื่องด้วย
ปัญหานี้คือสิ่งที่ Embeddings เข้ามาแก้โดยตรง แทนที่จะพึ่งแท็กที่มนุษย์กำหนดไว้ล่วงหน้าซึ่งมีข้อจำกัดและความคลาดเคลื่อนของแต่ละคน ระบบแปลงเนื้อหาบทความทั้งหมดให้เป็นเวกเตอร์ตัวเลขที่แทนความหมายจริงของเนื้อหา แล้วเปรียบเทียบว่าเวกเตอร์ไหนอยู่ใกล้กัน ผลคือระบบแนะนำบทความเรื่องดอกเบี้ยและทองคำให้กันได้เอง แม้ไม่มีแท็กเดียวกันเลยก็ตาม
บทความนี้จะพาเจาะลึกว่า Embeddings ทำงานอย่างไรจริง ๆ ตัวเลขในเวกเตอร์เหล่านั้นมาจากไหน ทำไมข้อมูลคนละประเภทถึงเปรียบเทียบกันได้ในบางกรณี และจุดที่ทีมพัฒนามักเลือกผิดจนระบบที่สร้างขึ้นมาไม่ทำงานตามที่คาดหวัง
Embedding คืออะไร ทำไมข้อความถึงกลายเป็นตัวเลขได้
Embedding คือผลลัพธ์จากการนำข้อมูล เช่น ประโยคหนึ่งประโยค ผ่านโมเดล AI ที่ถูกเทรนมาให้แปลงข้อมูลนั้นเป็นอาร์เรย์ของตัวเลขทศนิยม ซึ่งมักมีความยาวตั้งแต่ไม่กี่ร้อยถึงหลายพันตัวเลข อาร์เรย์นี้ไม่ได้เก็บตัวอักษรของประโยคไว้ตรง ๆ แต่เก็บ 'ตำแหน่ง' ของความหมายประโยคนั้นในปริภูมิทางคณิตศาสตร์ที่โมเดลสร้างขึ้นระหว่างการเทรน
โมเดลที่ใช้สร้าง Embedding ถูกเทรนด้วยข้อมูลจำนวนมหาศาล จนเรียนรู้ว่าคำหรือประโยคไหนมักปรากฏในบริบทใกล้เคียงกัน คำว่า 'แมว' กับ 'สุนัข' แม้สะกดต่างกันแต่มักปรากฏในบริบทคล้ายกัน (สัตว์เลี้ยง การดูแล อาหารสัตว์) โมเดลจึงเรียนรู้ที่จะวางเวกเตอร์ของสองคำนี้ไว้ใกล้กัน ในขณะที่คำว่า 'รถยนต์' ซึ่งปรากฏในบริบทต่างออกไป ก็จะถูกวางไว้ห่างออกไปในปริภูมิเดียวกัน
สิ่งที่ทำให้ Embeddings มีประโยชน์มากคือความสามารถในการจับความหมายที่ลึกกว่าคำตรงตัว เช่น ประโยค 'อากาศร้อนมากวันนี้' กับ 'วันนี้แดดจัดจนแทบละลาย' แม้ไม่มีคำร่วมกันเลยสักคำ แต่ Embedding ของสองประโยคนี้จะอยู่ใกล้กันมาก เพราะโมเดลจับความหมายเชิงบริบทได้ ไม่ใช่แค่จับคำที่ตรงกัน
โมเดล Embedding เรียนรู้ 'ความหมาย' มาจากไหน
โมเดล Embedding ส่วนใหญ่เทรนด้วยแนวคิดที่เรียกว่า Contrastive Learning คือให้โมเดลดูตัวอย่างคู่ข้อความที่รู้อยู่แล้วว่าเกี่ยวข้องกันหรือไม่เกี่ยวข้องกัน แล้วปรับตัวเลขในเวกเตอร์ให้คู่ที่เกี่ยวข้องกันมีระยะห่างน้อย และคู่ที่ไม่เกี่ยวข้องมีระยะห่างมาก ทำซ้ำแบบนี้กับข้อมูลนับล้านคู่จนโมเดลสร้างปริภูมิที่จัดเรียงความหมายได้อย่างสอดคล้องกัน
สำหรับ Embedding แบบ Multimodal ที่แปลงได้ทั้งข้อความและรูปภาพ โมเดลถูกเทรนด้วยคู่ข้อมูลรูปภาพและคำบรรยายที่ตรงกัน จนสามารถวางเวกเตอร์ของรูปภาพแมวกับคำว่า 'แมว' ให้อยู่ใกล้กันในปริภูมิเดียวกันได้ แม้จะเป็นข้อมูลคนละประเภทตั้งแต่ต้น นี่คือกลไกที่ทำให้ระบบค้นหารูปภาพด้วยคำบรรยายเป็นไปได้ และเป็นพื้นฐานของฟีเจอร์อย่างการค้นหารูปด้วยข้อความอธิบาย
จุดสำคัญที่ทีมพัฒนาต้องเข้าใจคือโมเดล Embedding แต่ละตัวเทรนด้วยข้อมูลและวิธีการต่างกัน ทำให้ปริภูมิเวกเตอร์ที่สร้างขึ้นไม่เหมือนกัน เวกเตอร์จากโมเดล A กับเวกเตอร์จากโมเดล B แม้จะมีมิติเท่ากันก็ไม่สามารถนำมาเทียบระยะห่างกันได้โดยตรง เพราะแต่ละโมเดลจัดเรียงปริภูมิความหมายไว้คนละแบบ
ขั้นตอนการสร้างและใช้งาน Embedding ในระบบจริง
- เลือกโมเดล Embedding ที่เหมาะกับภาษาและประเภทข้อมูลที่ใช้งาน เช่น โมเดลที่รองรับภาษาไทยได้ดี หรือโมเดลที่ออกแบบมาสำหรับข้อความเชิงเทคนิคโดยเฉพาะ
- เตรียมข้อมูลต้นทาง แบ่งเป็นชิ้นที่มีขนาดเหมาะสมถ้าเป็นเอกสารยาว เพราะโมเดล Embedding ส่วนใหญ่มีขีดจำกัดความยาวข้อความที่รับได้ต่อครั้ง
- ส่งข้อมูลแต่ละชิ้นผ่านโมเดล Embedding เพื่อให้ได้เวกเตอร์ตัวเลขออกมา แล้วเก็บเวกเตอร์เหล่านี้ไว้ในฐานข้อมูลที่รองรับการค้นหาเวกเตอร์
- เมื่อมีคำค้นใหม่เข้ามา แปลงคำค้นนั้นเป็นเวกเตอร์ด้วยโมเดลตัวเดียวกันกับที่ใช้แปลงข้อมูลต้นทาง แล้วค้นหาเวกเตอร์ที่อยู่ใกล้ที่สุดในฐานข้อมูล
- ถ้าข้อมูลต้นทางมีการแก้ไขหรือเพิ่มใหม่ ต้องมีกระบวนการสร้าง Embedding ใหม่และอัปเดตในฐานข้อมูลให้สอดคล้องกันอย่างสม่ำเสมอ
วัดความใกล้เคียงของเวกเตอร์อย่างไร Cosine Similarity คืออะไร
เมื่อได้เวกเตอร์มาแล้ว ระบบต้องมีวิธีคำนวณว่าเวกเตอร์สองตัว 'ใกล้เคียง' กันแค่ไหน วิธีที่นิยมใช้มากที่สุดคือ Cosine Similarity ซึ่งวัดมุมระหว่างเวกเตอร์สองตัวแทนที่จะวัดระยะห่างตรง ๆ ค่าที่ได้จะอยู่ระหว่าง -1 ถึง 1 โดยค่าที่ใกล้ 1 หมายถึงเวกเตอร์สองตัวชี้ไปทิศทางเดียวกันมาก ซึ่งมักตีความว่าความหมายใกล้เคียงกันมาก
เหตุผลที่นิยมใช้มุมแทนระยะห่างตรง ๆ (Euclidean Distance) คือ Cosine Similarity ไม่ได้รับผลกระทบจาก 'ขนาด' ของเวกเตอร์ ทำให้เปรียบเทียบข้อความสั้นกับข้อความยาวได้อย่างเป็นธรรมมากกว่า อย่างไรก็ตาม บางกรณีการวัดระยะห่างแบบอื่นอาจเหมาะกว่า ขึ้นอยู่กับว่าโมเดล Embedding นั้นถูกเทรนมาให้เหมาะกับการวัดแบบไหน ซึ่งควรตรวจสอบจากเอกสารของโมเดลก่อนเลือกใช้
เวกเตอร์กี่มิติถึงจะพอดี ยิ่งเยอะยิ่งดีจริงไหม
| จำนวนมิติ | ข้อดี | ข้อควรระวัง |
|---|---|---|
| มิติต่ำ (เช่น 256-384) | ใช้พื้นที่จัดเก็บน้อย ค้นหาเร็ว ประหยัดต้นทุน | อาจจับรายละเอียดความหมายเชิงลึกได้น้อยกว่า |
| มิติกลาง (เช่น 768-1024) | สมดุลระหว่างความแม่นยำและต้นทุนสำหรับงานทั่วไป | ยังต้องทดสอบว่าเพียงพอกับโดเมนเฉพาะทางหรือไม่ |
| มิติสูง (1536 ขึ้นไป) | จับรายละเอียดความหมายได้ละเอียดกว่าในหลายกรณี | ใช้พื้นที่จัดเก็บมากขึ้น ค้นหาช้าลง ต้นทุนสูงขึ้นตามสเกล |
ต้นทุนและ Latency ของการสร้าง Embedding ในสเกลใหญ่
การสร้าง Embedding แต่ละครั้งมีต้นทุนจริง ทั้งค่าใช้จ่ายต่อคำขอถ้าใช้บริการผ่าน API และเวลาแฝงที่เพิ่มขึ้นตามปริมาณข้อความ ทีมที่มีเอกสารจำนวนมากต้องแปลงเป็น Embedding ครั้งแรกควรวางแผนเรื่อง Batch Processing คือส่งข้อความหลายชิ้นพร้อมกันในคำขอเดียวแทนที่จะส่งทีละชิ้น เพราะช่วยลดค่าใช้จ่ายและเวลารวมได้อย่างมีนัยสำคัญเมื่อเทียบกับการยิงคำขอทีละรายการ
อีกประเด็นที่มักถูกมองข้ามคือ Embedding ไม่ใช่งานที่ทำครั้งเดียวจบเสมอไป ถ้าระบบมีข้อมูลใหม่เข้ามาต่อเนื่อง เช่น บทความข่าวที่เผยแพร่ทุกวัน หรือข้อความแชทที่เกิดขึ้นตลอดเวลา ต้องมีสถาปัตยกรรมที่รองรับการสร้าง Embedding แบบต่อเนื่อง (Streaming) ไม่ใช่แค่ทำเป็นรอบ Batch รายวัน ถ้าธุรกิจต้องการให้ข้อมูลใหม่ค้นหาเจอได้เกือบทันที
สำหรับทีมที่มีงบจำกัด การเลือกโมเดล Embedding ที่มีขนาดเล็กกว่าแต่ยังให้คุณภาพเพียงพอสำหรับงานที่ทำ มักคุ้มค่ากว่าการไล่ใช้โมเดลที่ใหญ่ที่สุดเสมอไป เพราะต้นทุนไม่ได้อยู่แค่ตอนสร้าง Embedding ครั้งแรก แต่ยังรวมถึงพื้นที่จัดเก็บและความเร็วในการค้นหาที่ต้องแบกรับไปตลอดอายุการใช้งานของระบบด้วย
ข้อผิดพลาดที่พบบ่อยเมื่อเริ่มใช้งาน Embeddings
- ทำแบบนี้แล้วพัง เพราะใช้โมเดล Embedding คนละเวอร์ชันหรือคนละตัวระหว่างข้อมูลชุดเก่ากับชุดใหม่ที่เพิ่มเข้ามา ทำให้ผลการค้นหาสับสน เพราะเวกเตอร์จากคนละปริภูมิถูกนำมาเทียบกันโดยไม่ตั้งใจ
- ทำแบบนี้แล้วพัง เพราะไม่ทำความสะอาดข้อความก่อนสร้าง Embedding เช่น มี HTML tag หรืออักขระแปลกปนอยู่ ทำให้โมเดลจับความหมายของข้อความจริงได้ไม่เต็มที่
- ทำแบบนี้แล้วพัง เพราะเลือกโมเดล Embedding ที่เทรนด้วยข้อมูลภาษาอังกฤษเป็นหลัก มาใช้กับข้อความภาษาไทยล้วน แล้วพบว่าคุณภาพการจับความหมายแย่กว่าที่คาดไว้มาก ทั้งที่โมเดลนั้นทำงานได้ดีกับภาษาอังกฤษ
- ทำแบบนี้แล้วพัง เพราะไม่ทดสอบด้วยชุดคำถามจริงก่อนใช้งาน เห็นว่าตัวอย่างไม่กี่ข้อได้ผลลัพธ์ดูดีก็ปล่อยใช้งานเลย แล้วมาพบทีหลังว่าคำค้นที่หลากหลายกว่านั้นให้ผลลัพธ์ที่ไม่แม่นยำ
Embeddings เป็นฐานรากของอะไรบ้างในระบบ AI
Embeddings ไม่ใช่ฟีเจอร์เดี่ยว ๆ แต่เป็นส่วนประกอบพื้นฐานที่หลายระบบ AI ต้องพึ่งพา ทั้งระบบ Semantic Search ที่ค้นหาด้วยความหมาย ระบบ RAG ที่ต้องดึงข้อมูลที่เกี่ยวข้องมาให้โมเดลอ่านก่อนตอบ และระบบแนะนำเนื้อหาที่จับคู่สิ่งที่คล้ายกันโดยไม่ต้องพึ่งแท็กที่มนุษย์กำหนดไว้ล่วงหน้า ทั้งหมดนี้ทำงานได้เพราะมี Embedding เป็นตัวแปลงข้อมูลให้เปรียบเทียบกันได้ในเชิงคณิตศาสตร์
การเก็บและค้นหา Embedding ในสเกลใหญ่จำเป็นต้องใช้ Vector Database ที่ออกแบบมาสำหรับงานนี้โดยเฉพาะ เพราะฐานข้อมูลทั่วไปไม่มีกลไกค้นหาด้วยความใกล้เคียงเชิงเวกเตอร์อย่างมีประสิทธิภาพ ทีมที่เข้าใจ Embeddings อย่างถ่องแท้จะออกแบบระบบค้นหาและระบบแนะนำได้แม่นยำกว่าทีมที่มองว่ามันเป็นแค่ 'ขั้นตอนแปลงข้อมูล' ที่ทำครั้งเดียวแล้วจบ
สรุป
Embeddings คือการแปลงข้อมูลให้เป็นเวกเตอร์ตัวเลขที่แทนความหมาย ทำให้คอมพิวเตอร์เปรียบเทียบความคล้ายคลึงเชิงความหมายได้ผ่านการวัดระยะห่างหรือมุมระหว่างเวกเตอร์ ซึ่งเป็นกลไกพื้นฐานที่ทำให้ Semantic Search, RAG และระบบแนะนำเนื้อหาทำงานได้จริง
ทีมพัฒนาที่จะใช้ Embeddings ให้ได้ผลต้องเข้าใจว่าโมเดลแต่ละตัวสร้างปริภูมิความหมายที่ไม่เหมือนกัน ต้องเลือกโมเดลให้เหมาะกับภาษาและประเภทข้อมูลจริง และต้องมีกระบวนการอัปเดตเวกเตอร์เมื่อข้อมูลต้นทางเปลี่ยน ไม่ใช่มองว่าเป็นขั้นตอนที่ทำครั้งเดียวแล้วจบ
- Embedding คือเวกเตอร์ตัวเลขที่แทนความหมายของข้อมูล ข้อมูลที่ความหมายใกล้กันจะมีเวกเตอร์ใกล้กัน
- โมเดล Embedding แต่ละตัวสร้างปริภูมิความหมายต่างกัน เวกเตอร์จากคนละโมเดลเทียบกันโดยตรงไม่ได้
- Cosine Similarity เป็นวิธีวัดความใกล้เคียงที่นิยมใช้มากที่สุดเพราะไม่ขึ้นกับขนาดของเวกเตอร์
- Embeddings เป็นฐานรากของ Semantic Search, RAG และระบบแนะนำ ต้องดูแลคุณภาพและอัปเดตอย่างสม่ำเสมอ
คำถามที่พบบ่อย
Embeddings ต่างจาก Tokenization อย่างไร
Tokenization คือการตัดข้อความออกเป็นหน่วยย่อย เช่น คำหรือส่วนของคำ เพื่อให้โมเดลประมวลผลได้ ส่วน Embedding คือการแปลงหน่วยเหล่านั้นหรือทั้งประโยคให้เป็นเวกเตอร์ตัวเลขที่แทนความหมาย สองขั้นตอนนี้เกิดขึ้นต่อเนื่องกันแต่ทำหน้าที่ต่างกันคนละส่วน
เวกเตอร์จากโมเดล Embedding ต่างค่ายเปรียบเทียบกันได้ไหม
โดยทั่วไปเปรียบเทียบกันไม่ได้โดยตรง เพราะแต่ละโมเดลเทรนด้วยข้อมูลและวิธีการต่างกัน จัดเรียงปริภูมิความหมายไว้คนละแบบ แม้จะมีจำนวนมิติเท่ากันก็ตาม การเปลี่ยนโมเดล Embedding จึงต้องแปลงข้อมูลเดิมทั้งหมดใหม่ ไม่ใช่แค่นำเวกเตอร์เก่ามาใช้ต่อ
Embedding เก็บข้อมูลต้นฉบับไว้ด้วยไหม
ไม่ได้เก็บข้อความต้นฉบับไว้ในตัวเวกเตอร์เอง เวกเตอร์เป็นเพียงตัวเลขที่แทนความหมาย ระบบส่วนใหญ่จึงต้องเก็บข้อความต้นฉบับแยกไว้ต่างหาก แล้วใช้เวกเตอร์เป็นตัวช่วยค้นหาว่าข้อความต้นฉบับชิ้นไหนที่เกี่ยวข้องกับคำค้น
สร้าง Embedding ครั้งเดียวใช้ได้ตลอดไปหรือต้องอัปเดต
ถ้าข้อมูลต้นทางไม่เปลี่ยน เวกเตอร์เดิมยังใช้ได้ต่อไป แต่ถ้าข้อมูลถูกแก้ไขหรือเพิ่มใหม่ ต้องสร้าง Embedding ใหม่ให้สอดคล้องกัน และถ้าเปลี่ยนไปใช้โมเดล Embedding ตัวใหม่ทั้งระบบ ก็ต้องแปลงข้อมูลทั้งหมดที่มีอยู่ใหม่เช่นกัน
Embeddings ใช้ได้แค่กับข้อความหรือใช้กับข้อมูลอื่นได้ด้วย
ใช้ได้กับข้อมูลหลายประเภท ทั้งรูปภาพ เสียง วิดีโอ และโค้ดโปรแกรม ตราบใดที่มีโมเดลที่ถูกเทรนมาให้แปลงข้อมูลประเภทนั้นเป็นเวกเตอร์ได้ บางโมเดลยังรองรับแบบ Multimodal ที่แปลงข้อมูลหลายประเภทให้อยู่ในปริภูมิความหมายเดียวกันได้ด้วย
ทำไม Embedding เดียวกันบางครั้งให้ผลลัพธ์ต่างกันเล็กน้อย
ปกติแล้วโมเดล Embedding ควรให้ผลลัพธ์เดียวกันสำหรับข้อความเดียวกันเสมอ ถ้าพบความต่างเล็กน้อย มักเกิดจากการอัปเดตเวอร์ชันโมเดลของผู้ให้บริการ หรือความคลาดเคลื่อนของการประมวลผลแบบขนานในระบบที่ซับซ้อน จึงควรตรวจสอบเวอร์ชันโมเดลที่ใช้อย่างสม่ำเสมอ
อ่านต่อแบบเจาะลึก
ทดลองวัดผลโฆษณาเข้า LINE ฟรี 14 วัน
สมัครแล้วสร้างโปรเจกต์ เชื่อม LINE ติดตั้ง Tracking แล้วเริ่มเห็น Funnel จาก Click ถึง Purchase ได้ทันที ไม่ต้องใช้บัตรเครดิต
เริ่มทดลองใช้ฟรี 14 วันบทความที่เกี่ยวข้อง

คนไม่เขียนโค้ดใช้ AI สร้างแอปได้จริงแค่ไหน นี่คือจุดที่ต้องรู้ก่อนระบบพัง

ค้นด้วยคำที่พิมพ์ตรงเป๊ะ กับค้นด้วยความหมายที่ใกล้เคียง ต่างกันตรงไหน
