- การค้นหาที่อิงกับ single-vector embedding นั้นรวดเร็วและมีประสิทธิภาพ แต่ช่วงหลัง โมเดลแบบมัลติเวกเตอร์อย่าง ColBERT ให้ความหมายที่ลึกขึ้นและความแม่นยำสูงขึ้นด้วยเวกเตอร์จำนวนมากต่อแต่ละโทเคน
- วิธีแบบมัลติเวกเตอร์ทำให้ การคำนวณความคล้ายที่ซับซ้อน เช่น Chamfer similarity เพิ่มทั้งภาระประมวลผลและต้นทุนการค้นหาอย่างมาก จนเป็นอุปสรรคต่อการค้นหาขนาดใหญ่แบบเรียลไทม์
- MUVERA ที่ทีมวิจัย Google เสนอ บีบอัดข้อมูลมัลติเวกเตอร์ให้เป็น เวกเตอร์ความยาวคงที่ (FDE, Fixed Dimensional Encoding) จากนั้นค้นหาแบบความเร็วสูงมากด้วย MIPS (maximum inner product search) ที่อิงเวกเตอร์เดี่ยว แล้วค่อย rerank
- วิธีนี้ ไม่ขึ้นกับข้อมูลและมีหลักฐานเชิงทฤษฎี (รับประกันค่าคลาดเคลื่อนในการประมาณ Chamfer similarity) โดยลด latency ได้มากกว่า 90% และเพิ่ม recall ได้มากกว่า 10% เมื่อเทียบกับ PLAID
- FDE ยังรองรับการบีบอัด (ลดหน่วยความจำได้ 32 เท่า) และมีทั้ง implementation แบบโอเพนซอร์สกับงานวิจัยเผยแพร่ออกมาแล้ว จึงเหมาะกับการนำไปใช้จริงในบริการค้นหา การแนะนำ และ NLP
พัฒนาการของโมเดล embedding และการค้นคืนข้อมูล
- โมเดล embedding ที่อิง deep learning เป็นเครื่องมือสำคัญสำหรับค้นหาข้อมูลที่เกี่ยวข้องอย่างรวดเร็วจากชุดข้อมูลขนาดมหาศาล (เอกสาร รูปภาพ วิดีโอ ฯลฯ) ตามคำค้นของผู้ใช้ (เช่น “ความสูงของยอดเขาเอเวอเรสต์”)
- ด้วยการแปลงแต่ละ datapoint ให้เป็น single-vector embedding จึงออกแบบให้ข้อมูลที่มีความหมายคล้ายกันมีโครงสร้างเวกเตอร์ที่ใกล้เคียงกันในเชิงตัวเลข
- การคำนวณ ความคล้ายด้วย inner product ระหว่างเวกเตอร์ ช่วยให้ค้นหาได้อย่างรวดเร็วด้วยอัลกอริทึม maximum inner product search (MIPS)
- แต่ช่วงหลังโมเดลมัลติเวกเตอร์อย่าง ColBERT ได้รับความสนใจจาก ความแม่นยำในการค้นหาที่สูงกว่า และความสามารถในการจับความสัมพันธ์ที่ซับซ้อน
การนำโมเดลมัลติเวกเตอร์มาใช้และข้อจำกัด
- โมเดลมัลติเวกเตอร์ แทนแต่ละ datapoint ด้วยชุดของเวกเตอร์ embedding หลายตัว
- โดยใช้ ฟังก์ชันความคล้ายแบบซับซ้อน อย่างการวัด Chamfer similarity จึงจับข้อมูลและความสัมพันธ์ที่เวกเตอร์เดี่ยวแบบเดิมไม่สามารถเก็บได้อย่างแม่นยำ
- แนวทางนี้ทำให้ การค้นคืนข้อมูลแม่นยำขึ้น และแนะนำเอกสารที่เกี่ยวข้องได้ดียิ่งขึ้น
- ข้อเสียคือจาก จำนวน embedding ที่เพิ่มขึ้น และความซับซ้อนของการคำนวณความคล้าย ทำให้ทรัพยากรคอมพิวต์ที่ต้องใช้ในการค้นหาเพิ่มขึ้นมาก
- จำนวนเวกเตอร์ต่อโทเคนเพิ่มขึ้น → ภาระคำนวณและหน่วยความจำเพิ่มขึ้นอย่างมาก
- จำเป็นต้องใช้การคำนวณแบบไม่เชิงเส้น (matrix multiplication) → ไม่สามารถค้นหาแบบ sublinear (ความเร็วสูงมาก) ที่อิงเวกเตอร์เดี่ยวได้
- เมื่อนำไปใช้กับบริการขนาดใหญ่ ต้นทุนและ latency จะพุ่งสูง
MUVERA: ปฏิวัติการค้นหาแบบมัลติเวกเตอร์ด้วย FDE
- งานวิจัย “MUVERA: Multi-Vector Retrieval via Fixed Dimensional Encodings” เสนออัลกอริทึมใหม่เพื่อแก้ปัญหาด้านประสิทธิภาพนี้
- MUVERA แปลงข้อมูลมัลติเวกเตอร์เป็นเวกเตอร์ FDE เพียงตัวเดียว ทำให้สามารถใช้ MIPS index/เซิร์ฟเวอร์เดิมเพื่อ ค้นหาผู้สมัครได้อย่างรวดเร็วสูง
- สร้าง FDE: แปลงชุดมัลติเวกเตอร์ของ query/เอกสารให้เป็นเวกเตอร์ความยาวคงที่ (FDE) (การแมปที่ไม่ขึ้นกับข้อมูล)
- ค้นหาด้วย MIPS: เก็บ FDE ของเอกสารทั้งหมดไว้ใน MIPS index แล้วใช้ query FDE ค้นหาผู้สมัครด้วยความเร็วสูงมาก
- rerank พร้อมรับประกันความแม่นยำ: ใช้การคำนวณมัลติเวกเตอร์ดั้งเดิม เช่น Chamfer similarity เฉพาะกับเอกสารผู้สมัคร แล้ว rerank อย่างละเอียดเพื่อให้ได้ผลลัพธ์สุดท้าย
- FDE สามารถนำไปใช้ได้โดยไม่ขึ้นกับชุดข้อมูล จึงเหมาะกับสภาพแวดล้อมแบบไดนามิกอย่างสตรีมมิงด้วย
พื้นฐานทางทฤษฎี
- ได้แรงบันดาลใจจากอัลกอริทึมเรขาคณิตขั้นสูง เช่น probabilistic tree embedding ทำให้ FDE สามารถประมาณความคล้ายของมัลติเวกเตอร์ได้อย่างมีประสิทธิภาพ
- มีการแบ่ง embedding space แบบสุ่ม และเมื่อเวกเตอร์ของ query/เอกสารอยู่ในส่วนเดียวกัน ก็จะคำนวณค่าความคล้ายโดยประมาณ
- ในงานวิจัยมีทั้งทฤษฎีและข้อมูลการทดลองที่รับประกันว่า อยู่ภายในขอบเขตค่าคลาดเคลื่อนของการประมาณ Chamfer similarity
ผลการทดลองและประสิทธิภาพ
- มีการตรวจสอบประสิทธิภาพของ MUVERA บนชุดข้อมูล IR ขนาดใหญ่หลายชุด เช่น BEIR benchmark
- เมื่อเทียบกับ PLAID และวิธีเดิมอื่น ๆ ทำได้ recall สูงขึ้นเฉลี่ย 10%
- ลด latency ในการค้นหาได้มากกว่า 90%
- ที่ recall เท่ากัน จำนวนเอกสารผู้สมัครที่ใช้บนฐาน FDE ลดลงจากเดิมได้ 5–20 เท่า
- ทำงานร่วมกับเทคนิคบีบอัดเพิ่มเติมอย่าง Product Quantization ได้ดี (ลดหน่วยความจำได้ 32 เท่า)
- ช่วยเพิ่มความเป็นไปได้ในการใช้งานจริงของการค้นหาแบบมัลติเวกเตอร์อย่างมาก เหมาะกับงานค้นหา การแนะนำ และแอปพลิเคชัน NLP ขนาดใหญ่
บทสรุปและการนำไปใช้
- MUVERA เป็นแนวทางใหม่ที่เร่งการค้นหาแบบมัลติเวกเตอร์ให้เร็วระดับเดียวกับเวกเตอร์เดี่ยว
- มีการเผยแพร่ทั้ง implementation แบบโอเพนซอร์ส (GitHub link) งานวิจัย และผลการทดลองครบถ้วน
- เป็นทางเลือกที่ใช้งานได้จริงสำหรับการเพิ่มประสิทธิภาพการค้นหาแบบมัลติเวกเตอร์ขนาดใหญ่ใน เสิร์ชเอนจิน ระบบแนะนำ และการประมวลผลภาษาธรรมชาติ
- หากมีการวิจัยและปรับแต่งเพิ่มเติมในอนาคต ก็คาดว่าจะนำไปใช้ได้กว้างขึ้นในภาคอุตสาหกรรม
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
มีการแชร์ประสบการณ์จากการเพิ่ม Muvera เข้าไปใน Weaviate เมื่อไม่นานมานี้ พร้อมลิงก์ไปยังบล็อก และพอดแคสต์ โดยกล่าวถึงปัญหาต้นทุนที่พุ่งสูงมากในแนวทาง multi-vector แบบ ColBERT เมื่อทำ embedding แยกสำหรับแต่ละโทเคน ตัวอย่างเช่น จากเดิมเวกเตอร์ 768 มิติ อาจเพิ่มไปได้ถึง 16,640 มิติขึ้นไป ทำให้เป็นภาระที่ไม่สมเหตุสมผลในหลายสถานการณ์ Muvera แปลงเวกเตอร์หลายตัวให้เป็นเวกเตอร์มิติคงที่เพียงตัวเดียว ซึ่งโดยทั่วไปจะมีจำนวนน้อยกว่า และนำไปใช้กับ ANN index ใดก็ได้ทันที การใช้เวกเตอร์เดี่ยวทำให้สามารถใช้ algorithm เดิมที่มีอยู่และเทคนิค quantization ได้หลายแบบ จึงช่วยประหยัดหน่วยความจำ อีกทั้งต่างจาก PLAID ตรงที่ไม่ต้องพึ่งโครงสร้างดัชนีเฉพาะหรือสมมติฐานเรื่องการทำคลัสเตอร์ จึงมีข้อดีด้าน latency ที่สั้นกว่า
มีการพูดถึงเทรนด์ล่าสุดที่เริ่มถอยห่างจากวิธีทำให้แบนราบด้วย mean-pooling เพื่อสร้างเป็น embedding เดียว เนื่องจากหากจัดการ embedding ของแต่ละโทเคนทั้งหมด จำนวนเวกเตอร์จะมากเกินไป จึงจำเป็นต้องมีวิธีลดจำนวนอย่างเหมาะสม วิธีนี้คือการนำ token embedding ไปจัดกลุ่มด้วยการแบ่งแบบกำหนดเอง จากนั้นทำ mean-pooling ในแต่ละกลุ่มแล้วนำมาต่อกันเป็น embedding ความยาวคงที่ เนื่องจากการเปรียบเทียบแบบ multi vector เต็มรูปแบบทำได้ยากในเชิงประสิทธิภาพ จึงมีการจัดกลุ่มเป็นเวกเตอร์จำนวน k ตัวแล้วนำมาต่อกัน เพื่อให้เปรียบเทียบกับเครื่องมือและประสิทธิภาพของแบบเวกเตอร์เดี่ยวได้ สรุปแล้วคือการตรึงจำนวนพาร์ทิชันไว้ จึงให้ผลคล้ายการทำ token embedding clustering แบบ k-means และยังมีการเสนอว่าหากทำคลัสเตอร์โทเคนแบบไดนามิก ก็อาจได้ embedding แบบจำนวนตัวแปรที่ให้ผลดีกว่า
มีการแชร์ประสบการณ์ว่าวิธีนี้ไวต่อ hyperparameter มาก และในการทดลองของผู้แสดงความคิดเห็นเองก็ไม่สามารถให้ประสิทธิภาพใกล้เคียง maxsim ได้
มีคำถามว่าเข้าใจถูกหรือไม่ว่า Muvera คำนวณ FDE (Fixed Dimensional Embedding) ของ query แล้วค้นหา FDE ที่คล้ายกันจากชุดข้อมูลของโมเดล ถ้าเป็นเช่นนั้น จำเป็นต้องคำนวณ FDE ขนาดเดียวกันทั้งหมดของโมเดลด้วยหรือไม่
มีคำถามจากคนที่ไม่ค่อยรู้จักสาขานี้ว่า neural embedding query ทำงานเหมือนกับ SQL query ที่คืนค่าชื่อทั้งหมดจากตารางหรือไม่ หรือว่าผลลัพธ์จะมีความกำกวมมากกว่า
มีการสรุปว่าโดยแก่นแล้วนี่คือแนวทางที่พยายามบีบอัด embedding หลายตัวให้เป็นตัวเดียว หรือก็คือ “embedding of embeddings” เพื่อช่วยลดมิติและเพิ่มประสิทธิภาพ เนื่องจาก embedding หลายตัวมีข้อมูลที่ซ้ำซ้อนกันมาก หากสามารถบีบอัดให้เหลือหนึ่งเดียวได้ ก็อาจหมายความว่าคุณค่าที่ embedding เพิ่มเติมให้มานั้นส่วนใหญ่มีเพียงเล็กน้อย และหากประสิทธิภาพยังใกล้เคียงกัน ก็ชวนให้สงสัยในมุมมองทฤษฎีสารสนเทศว่าการแทนค่าเช่นนี้ทำได้โดยไม่สูญเสียข้อมูลหรือไม่
มีคำถามถึงความแตกต่างจากวิธี feature hash แบบเดิมที่ใช้ลดหลาย embedding ให้เหลือหนึ่งเดียว และถามว่าเทคนิคการลดมิติจากเวกเตอร์เดี่ยวอย่าง UMAP จะช่วยได้หรือไม่