พื้นฐาน
Embedding คืออะไร
Embedding เปลี่ยนข้อความให้เป็นเวกเตอร์ตัวเลขที่แทนความหมาย นี่คือสิ่งที่ทำให้ค้นหาด้วยความหมายแทนถ้อยคำที่ตรงกันเป๊ะเป็นไปได้ วิธีวัดความคล้ายคลึง และเหตุใด embedding จากโมเดลต่างกันจึงผสมกันไม่ได้
บทความทั้งหมด · ตรวจสอบล่าสุด:
รายการตัวเลขที่แทนความหมาย
โมเดล embedding จะอ่านข้อความชิ้นหนึ่ง เช่น คำ ประโยค ย่อหน้า หรือบางครั้งทั้งเอกสาร แล้วให้ผลลัพธ์เป็นเวกเตอร์ความยาวคงที่ นั่นคือรายการตัวเลขที่เรียงลำดับ ซึ่งมักยาวหลายร้อยหรือหลายพันตัว เวกเตอร์นั้นไม่ใช่บทสรุปที่คนอ่านได้ แต่เป็นตำแหน่งในพื้นที่ทางคณิตศาสตร์ที่โมเดลเรียนรู้ระหว่างการฝึก จัดวางไว้ให้ข้อความที่มีความหมายเกี่ยวข้องกันอยู่ใกล้กัน
สิ่งที่อยู่ใกล้กันคือความหมายที่คล้ายกัน ไม่ใช่การสะกดที่คล้ายกัน
สองประโยคที่แทบไม่มีคำร่วมกันเลยแต่มีความหมายใกล้เคียงกัน สามารถให้เวกเตอร์ที่อยู่ใกล้กันได้ เพราะโมเดล embedding เรียนรู้ความเชื่อมโยงระหว่างแนวคิดระหว่างการฝึก ไม่ใช่แค่ตัวอักษรที่ปรากฏ ในทางกลับกัน สองประโยคที่มีคำร่วมกันมากแต่ความหมายต่างกันอาจจบลงด้วยระยะห่างกันมาก นี่คือความแตกต่างหลักระหว่างการค้นหาที่อิงกับ embedding กับการจับคู่คำสำคัญแบบตรงเป๊ะ
ความใกล้เคียงถูกวัด ไม่ใช่กะด้วยสายตา
เมื่อข้อความถูกแทนเป็นเวกเตอร์แล้ว การเปรียบเทียบความหมายก็กลายเป็นปัญหาเชิงเรขาคณิต นั่นคือคะแนนความคล้ายที่คำนวณระหว่างเวกเตอร์สองตัว ซึ่งส่วนใหญ่ดูจากว่าเวกเตอร์ทั้งสองชี้ไปทางเดียวกันมากแค่ไหน การค้นหาในชุดข้อมูลขนาดใหญ่หมายถึงการคำนวณคะแนนนั้นระหว่างเวกเตอร์คำค้นกับเวกเตอร์ที่จัดเก็บไว้ทุกตัว แล้วส่งคืนรายการที่ใกล้เคียงที่สุด ไม่ว่าชุดข้อมูลจะมีร้อยรายการหรือร้อยล้านรายการก็เป็นการทำงานแบบเดียวกัน
Embedding จากโมเดลต่างกันผสมกันไม่ได้
เช่นเดียวกับคลังคำของตัวแบ่งโทเค็น พื้นที่เวกเตอร์ของโมเดล embedding หนึ่งจะเจาะจงกับโมเดลนั้นและวิธีที่มันถูกฝึกมา เวกเตอร์ที่โมเดล embedding ตัวหนึ่งสร้างขึ้นจะเทียบกับเวกเตอร์ที่โมเดลอื่นสร้างขึ้นอย่างมีความหมายไม่ได้ แม้ทั้งสองเวกเตอร์จะมีจำนวนมิติเท่ากันก็ตาม การเปลี่ยนโมเดล embedding หมายถึงต้องสร้าง embedding ใหม่ทั้งหมดที่เก็บไว้อยู่แล้ว ไม่ใช่แค่เนื้อหาใหม่นับจากนี้
งานของโมเดล embedding ต่างจากงานของโมเดลภาษา
โมเดลภาษาสร้างข้อความทีละโทเค็นจากพรอมต์ ส่วนโมเดล embedding ไม่ได้สร้างอะไรเลย มันแค่แปลงข้อความเป็นเวกเตอร์แล้วหยุดตรงนั้น บางระบบใช้โมเดลฐานเดียวกันสำหรับทั้งสองงาน บางระบบใช้โมเดลแยกกันคนละตัวเลย ไม่ว่าแบบไหน เวกเตอร์ที่ได้จากขั้นตอน embedding เองไม่ใช่คำตอบ เป็นเพียงสิ่งที่ขั้นตอนการค้นหาหรือจับคู่นำไปเปรียบเทียบเท่านั้น
สิ่งนี้ปรากฏที่ไหนบ้างในทางปฏิบัติ
Embedding คือสิ่งที่ทำให้ retrieval-augmented generation เป็นไปได้ ดูที่ RAG คืออะไร เพื่อดูว่าการค้นคืนทำงานร่วมกับโมเดลภาษาอย่างไร แต่เทคนิคเดียวกันนี้ยังอยู่เบื้องหลังการค้นหาเชิงความหมายในทิกเก็ตซัพพอร์ตหรือเอกสาร การจับคู่บทสนทนาที่คล้ายกันในอดีต การลบเนื้อหาที่แทบซ้ำกันออก และการจัดกลุ่มรายการที่เกี่ยวข้องกันโดยไม่ต้องมีใครติดป้ายหมวดหมู่ด้วยมือ
คำถามที่พบบ่อย
- Embedding เหมือนกับโทเค็นหรือไม่
- ไม่เหมือน โทเค็นคือหน่วยข้อความแยกที่โมเดลภาษาอ่านหรือเขียนทีละหน่วย ส่วน embedding คือเวกเตอร์ต่อเนื่องที่แทนความหมายของข้อความชิ้นใหญ่กว่า ซึ่งสร้างขึ้นโดยขั้นตอนแยกที่ไม่ได้สร้างอะไรเลย
- ฉันเปรียบเทียบ embedding จากสองโมเดลที่ต่างกันได้ไหม
- เปรียบเทียบอย่างมีความหมายไม่ได้ โมเดล embedding แต่ละตัวกำหนดพื้นที่เวกเตอร์ของตัวเองระหว่างการฝึก ดังนั้นระยะห่างที่หมายถึง "คล้ายกันมาก" ในพื้นที่ของโมเดลหนึ่งจะไม่มีความหมายที่ชัดเจนในพื้นที่ของอีกโมเดล แม้เวกเตอร์จะมีความยาวเท่ากันก็ตาม
- เวกเตอร์ embedding ที่ใหญ่กว่าหมายถึงการค้นหาที่ดีกว่าหรือไม่
- ไม่ใช่ด้วยตัวมันเอง มิติที่มากขึ้นอาจจับความละเอียดอ่อนได้มากขึ้น แต่คุณภาพขึ้นอยู่กับว่าโมเดลถูกฝึกด้วยอะไรและเข้ากับเนื้อหาของคุณมากแค่ไหน ไม่ใช่แค่จำนวนมิติ
- มีใครดึงข้อความต้นฉบับกลับมาจาก embedding ได้ไหม
- การดึงกลับมาอย่างแม่นยำโดยทั่วไปไม่สามารถทำได้จริง แต่ embedding ก็ยังมาจากเนื้อหาของคุณโดยตรงและอาจรั่วไหลข้อมูลที่มีนัยสำคัญเกี่ยวกับมันได้ภายใต้การโจมตีบางรูปแบบ จัดการ embedding ที่เก็บไว้ของข้อความที่ละเอียดอ่อนด้วยความระมัดระวังเท่ากับตัวข้อความเอง ไม่ใช่ราวกับว่ามันถูกทำให้ไม่ระบุตัวตนไปแล้ว
ลองใช้ดีกว่าอ่านเฉยๆ
ฟีเจอร์ความจำและ context pack ของ ClawAI สร้าง embedding ในเครื่องผ่าน Ollama และเก็บไว้ในฐานข้อมูลเวกเตอร์เพื่อการค้นหาความคล้ายคลึง แทนที่จะส่งเนื้อหาของคุณไปยัง API embedding บนคลาวด์แยกต่างหากเพื่อจุดประสงค์นี้