ฐานข้อมูลเวกเตอร์ Milvus คืออะไร?

Milvus ถูกสร้างขึ้นในปี 2019 ด้วยเป้าหมายหลักคือการเก็บข้อมูลดัชนีและจัดการเวกเตอร์การฝังตัวขนาดใหญ่ที่ถูกสร้างขึ้นโดยเครือข่ายประสาทเชิงลึกและโมเดลเรียนรู้ของเครื่องจักรอื่น ๆ

ในฐานข้อมูลที่เป็นพิเศษที่ออกแบบมาเพื่อจัดการคำถามเวกเตอร์ส่วนของ Milvus สามารถทำดัชนีเวกเตอร์ในมาตรฐานของสิบล้านหรือมากริโลนได้ ต่างจากฐานข้อมูลที่มีอยู่ในปัจจุบันที่จัดการกับรูปแบบที่กำหนดไว้ล่วงหน้าและข้อมูลโครงสร้าง Milvus ถูกออกแบบขึ้นมาเพื่อจัดการวิธีการฝังตัวของข้อมูลที่ไม่มีโครงสร้าง

ด้วยการขยายตัวของอินเทอร์เน็ตขณะนี้ข้อมูลที่ไม่มีโครงสร้างกลายเป็นสิ่งที่พบได้อย่างแพร่หลาย รวมถึงอีเมล้ กระดานสารสนเทศเซนเซอร์โอไอที รูปภาพบน Facebook โครงสร้างโปรตีน และอื่น ๆ เพื่อให้คอมพิวเตอร์สามารถเข้าใจและประมวลผลข้อมูลที่ไม่มีโครงสร้างเหล่านี้จึงต้องทำการแปลงข้อมูลเหล่านี้เป็นเวกเตอร์โดยใช้เทคนิคการฝังตัว Milvus เก็บข้อมูลดัชนีเหล่านี้ไว้และทำดัชนีเอกสารดังกล่าว Milvus สามารถวิเคราะห์ระยะห่างความคล้ายคลึงระหว่างเวกเตอร์สองตัวด้วยการคำนวณระยะห่างความคล้ายคลึงของเขาโดยยังอ้างถึงความสัมพันธ์ของเขา หากเวกเตอร์การฝังตัวสองตัวมีคุณลักษณะที่คล้ายคลึงกันมากๆ นั้นหมายถึงแหล่งข้อมูลต้นฉบับก็จะคล้ายคลึงกันเช่นกัน

ขั้นตอนการทำงานของ Milvus:

ขั้นตอนการทำงาน

แนวคิดหลัก

หากคุณไม่คุ้นเคยกับโลกของฐานข้อมูลเวกเตอร์และการค้นหาความคล้ายคลึงคุณอาจพบว่าแนวคิดหลักต่อไปนี้จะมีประโยชน์

เรียนรู้เพิ่มเติมเกี่ยวกับคำศัพท์ Milvus

ข้อมูลที่ไม่มีโครงสร้าง

ข้อมูลที่ไม่มีโครงสร้างได้แก่ภาพ วิดีโอเสียงและภาษาธรรมชาติหมายถึงข้อมูลที่ไม่ได้ปฏิบัติตามโครงสร้างหรือโครงสร้างองค์การแบบจำกัด ประเภทข้อมูลนี้จำทำเสียง ประมาณ 80% ของข้อมูลทั่วโลกและสามารถแปลงเป็นเวกเตอร์ได้โดยใช้โมเดลปัญญาประดิษฐ์และโมเดลเรียนรู้ของเครื่องจักรอื่น ๆ

เวกเตอร์การฝังตัว

เวกเตอร์การฝังตัวคือสรุปคุณลักษณะของข้อมูลที่ไม่มีโครงสร้าง (เช่น อีเมล ข้อมูลเซ็นเซอร์เทคโนโลยีอินเทอร์เน็ต รูปภาพ Instagram โครงสร้างโปรตีน ฯลฯ) จากมุมมองทางคณิตศาสตร์เวกเตอร์การฝังตัวประกอบด้วยตัวเลขทศนิยมหรืออาร์เรย์ทวิศวกรรมทุกวิธีการฝังตัวทันสมัยถูกใช้เพื่อแปลงข้อมูลที่ไม่มีโครงสร้างเป็นเวกเตอร์

การค้นหาความคล้ายคลึงเวกเตอร์

การค้นหาความคล้ายคลึงของเวกเตอร์เกี่ยวข้องกับการเปรียบเทียบเวกเตอร์กับฐานข้อมูลเพื่อค้นหาเวกเตอร์ที่มีความคล้ายคลึงกับเวกเตอร์คล้ายคลึงสุดท้ายการใช้อัลกอริทึมการค้นหาที่ใกล้เคียงที่สุด (ANN) สามารถเร่งกระบวนการค้นหาได้ถ้าเวกเตอร์การฝังตัวสองตัวมีความคล้ายคลึงกันมากๆ นั้นหมายถึงแหล่งข้อมูลต้นฉบับก็จะคล้ายคลึงกันเช่นกัน

ทำไมถึงเลือกใช้ Milvus?

  • สมรรถนะสูงสำหรับการค้นหาเวกเตอร์บนชุดข้อมูลขนาดใหญ่
  • ชุมชนที่ให้การสนับสนุนแก่นักพัฒนาด้วยระบบหลายภาษาและการสนับสนุนเครื่องมือ
  • ประสบความร่วมมือและเกิดความเชื่อถือได้ที่มีประสิทธิภาพที่สูงในคลาวด์ โดยยังคงรักษาความเสถียรภายในกรณีของความล้มเหลว
  • ทำให้การค้นหาผสมๆ ได้โดยรวมการกรองสกาลาร์กับการค้นหาความคล้ายคลึงเวกเตอร์ได้

ชนิดของดัชนีและมาตรฐานความคล้ายคลึงที่รองรับอย่างไร?

การจัดดัชนีเป็นหน่วยการจัดระเบียบของข้อมูลก่อนหรือหลังคำถามหรือการเรียกร้ององค์ประกอบที่ถูกแทรกได้ คุณต้องประกาศประเภทของดัชนีและมาตรฐานความคล้ายคลึงก่อนดำเนินการค้นหาหรือการเรียกร้อง หากคุณไม่ระบุประเภทของดัชนี Milvus ก็จะใช้การค้นหาแบบบรูท-ฟอร์ซโดยค่าเริ่มต้น

ประเภทดัชนี

Milvus รองรับประเภทดัชนีเวกเตอร์สำหรับการค้นหาเพื่อติดต่อกลุ่มใกล้เคียงที่สุด (ANNS) เช่น

  • FLAT: เหมาะสำหรับสถานการณ์ที่ต้องการผลลัพธ์การค้นหาที่แม่นยำและแม่นยำบนชุดข้อมูลขนาดเล็ก (ล้าน)
  • IVF_FLAT: อิงตามดัชนีชี้เก็บข้อมูลที่เหมาะสำหรับสถานการณ์ที่ต้องการสมดุลที่สุดระหว่างความแม่นยำและความแม่นยำของคำถาม ยังมีเวอร์ชัน GPU เรียกว่า GPU_IVF_FLAT
  • IVF_SQ8: อิงตามดัชนีชี้เก็บข้อมูลที่เหมาะสำหรับการลดการใช้พื้นที่จัดเก็บข้อมูล พฤติกรรม CPU และหน่วยความจำ GPU อย่างมาก จากทรัพยากรที่มีจำกัดอย่างมาก
  • IVF_PQ: อิงตามดัชนีชี้เก็บข้อมูลที่เหมาะสำหรับการหาระหว่างคำถามแบบเร่งกระตุ้นให้มีความแม่นยำ ยังมีเวอร์ชัน GPU เรียกว่า GPU_IVF_PQ
  • HNSW: อิงตามดัชนีกราฟที่เหมาะสำหรับสถานการณ์ที่มีความต้องการสูงสุดสำหรับประสิทธิภาพการค้นหา

สำหรับข้อมูลที่ละเอียดมากขึ้นโปรดอ้างอิงที่ดัชนีเวกเตอร์

มาตรฐานความคล้ายคลึง

ใน Milvus มาตรฐานความคล้ายคลึงใช้เพื่อวัดความคล้ายคลึงระหว่างเวกเตอร์ การเลือกมาตรฐานระยะห่างที่ดีสามารถทำให้ประสิทธิภาพการจัดกลุ่มและการจัดกลุ่มดีขึ้นได้อย่างมีนัยสำคัญขึ้นอย่างมาก โดยยึดตามรูปแบบข้อมูลที่ป้อนมาแน่นอนมาตรฐานความคล้ายคลึงที่เฉพาะเจาะจงได้ถูกเลือกเพื่อให้ได้ประสิทธิภาพที่ดีที่สุด

มาตรฐานที่ใช้บ่อยสำหรับการฝังตัวทศนิยมคือ:

  • ระยะตำแหน่งยุโคลิต (L2): มาตรฐานนี้นำใช้อย่างส่วนใหญ่ในสาขาด้านการมองเห็นของคณิตศาสตร์
  • ผลลัพธ์ภายใน (IP): มาตรฐานนี้นำใช้อย่างส่วนใหญ่ในสาขาการประมวลผลภาษาธรรม

มาตรฐานที่ใช้อย่างส่วนใหญ่สำหรับการฝังตัวทวิสทศนิยมคือ:

  • ระยะตำแหน่งแฮมมิง: มาตรฐานนี้นำใช้อย่างส่วนใหญ่ในสาขาการประมวลผลภาษาธรรม
  • ความคล้ายคลึงจาการใช้ Jaccard: มาตรฐานนี้นำใ

แอปพลิเคชันตัวอย่าง

Milvus ทำให้ง่ายต่อการเพิ่มการค้นหาความคล้ายคลึงในแอปพลิเคชันของคุณ แอปพลิเคชันตัวอย่างของ Milvus ประกอบด้วย:

  • การค้นหาความคล้ายคลึงของภาพ: ทำให้ภาพที่ค้นหาได้และคืนค่าภาพที่คล้ายกันที่สุดจากฐานข้อมูลที่ใหญ่เกือบทันที
  • การค้นหาความคล้ายคลึงของวิดีโอ: โดยการแปลงเฟรมหลักเป็นเวกเตอร์ และนำผลลัพธ์เข้า Milvus เพื่อค้นหาและแนะนำวิดีโอหลายพันล้านอันในเวลาเป็นเวลาจริง
  • การค้นหาความคล้ายคลึงของเสียง: สามารถคิวรี่ข้อมูลเสียงจำนวนมาก เช่น คำพูด เพลง เสียงประกอบและเสียงที่คล้ายคลึง
  • ระบบแนะนำ: แนะนำข้อมูลหรือสินค้าโดยอิงจากพฤติกรรมและความต้องการของผู้ใช้
  • ระบบตอบคำถาม: แชทบอทที่ตอบคำถามโดยอัตโนมัติ
  • การจัดหมวดหมู่ลำดับลำดับ DNA: การจัดลำดับยีนที่แม่นยำในไมลลินิวที่เป็นเปลือกโดยเปรียบเทียบลำดับ DNA ที่คล้ายคลึง
  • เครื่องมือค้นหาข้อความ: ช่วยให้ผู้ใช้พบข้อมูลที่ต้องการโดยเปรียบเทียบคำสำคัญกับฐานข้อมูลข้อความ

แนวคิดการออกแบบของ Milvus

ในฐานะฐานข้อมูลเวกเตอร์ที่ใช้บนคลาวด์ Milvus แยกการจัดเก็บจากการคำนวณในการออกแบบของมัน โดยเพื่อเสถียรภาพและความยืดหยุ่น ส่วนประกอบทั้งหมดใน Milvus เป็นไร้สถานะ

ระบบถูกแบ่งเป็นสี่ชั้นดังนี้:

  • ชั้นการเข้าถึง: ประกอบด้วยกรมธรรมไม่มีสถานะที่ทำหน้าที่เป็นชั้นหน้าของระบบและจุดปลายทางสำหรับผู้ใช้
  • บริการการประสาน: บริการนี้กำหนดงานให้กับต้นกำเนิดของตัวและทำหน้าที่เป็นศูนย์กลางของระบบ
  • โหนดของผู้ใช้: โหนดเหล่านี้ทำหน้าที่เป็นแขนและขาของระบบ ทำตามคำสั่งจากการประสานบริการและดำเนินการคำสั่ง DML/DDL ที่เริ่มต้นโดยผู้ใช้โดยไม่มีการคิดเล่ห์
  • การจัดเก็บ: นี่คือหลังคาของระบบที่รับผิดชอบการอยู่อย่างยาวนาน รวมถึงการจัดเก็บเมตาดาต้า ตัวตัวแทนบันทึกรายการ และการจัดเก็บวัตถุ

โครงสร้าง Milvus.

เครื่องมือสำหรับนักพัฒนา

Milvus ให้ API และเครื่องมือที่มีคุณสมบัติมากมายสำหรับการพัฒนาและดำเนินการ

การเข้าถึง API

Milvus ให้ไลบรารีไคลเอ็นต์ห่อหุ้มรอบ Milvus API ที่สามารถใช้ในการแทรก ลบ และคิวรีข้อมูลจากโค้ดแอปพลิเคชันโดยตั้งแต่:

  • PyMilvus
  • โซบ SDK
  • Go SDK
  • จาวา SDK

เครื่องมือนิเคอร์ซิสระบบ Milvus

นิเคอร์ซิสระบบ Milvus ให้เครื่องมือที่มีประโยชน์หลายอย่างหมายเลย:

  • Milvus CLI
  • Attu: ระบบการจัดการแบบกราฟิกสำหรับ Milvus
  • MilvusDM (การโยกย้ายข้อมูลของ Milvus): เครื่องมือโอเพนซอร์สที่เฉพาะเจาะจงสำหรับการนำเข้าและส่งออกข้อมูลกับ Milvus
  • Milvus Capacity Planning Tool: ช่วยประมาณขนาดไฟล์ชนิดต่าง ๆ ที่จำเป็น ขนาดหน่วยความจำ และขนาดดิสก์ที่คงที่ผ่านชนิดดัชนีต่าง ๆ

ข้อ จำกัดของ Milvus

Milvus มุ่งมั่นที่จะให้การฐานข้อมูลเวกเตอร์ที่ดีที่สุดสำหรับการขับเคลื่อนแอปพลิเคชัน AI และการค้นหาความคล้ายคลึง อย่างไรก็ตามทีมงานกำลังทำงานอย่างต่อเนื่องเพื่อนำเสนอคุณสมบัติเพิ่มเติมและเครื่องมือที่ดีที่สุดเพื่อเสถียรภาพของผู้ใช้ หน้านี้ระบุข้อจำกัดที่รู้จักบางประการที่ผู้ใช้อาจเจอเจอเมื่อใช้ Milvus

ความยาวของชื่อทรัพยากร

ทรัพยากร ขีดจำกัด
คอลเล็กชัน 255 ตัวอักษร
ฟิลด์ 255 ตัวอักษร
ดัชนี 255 ตัวอักษร
พาร์ติชัน 255 ตัวอักษร

กฎการตั้งชื่อ

ชื่อทรัพยากรอาจประกอบด้วยตัวเลข ตัวอักษร และขีดล่าง (_) ชื่อต้องเริ่มต้นด้วยตัวอักษรหรือขีดล่าง

จำนวนของทรัพยากร

ทรัพยากร ขีดจำกัด
คอลเล็กชัน 65,536
การเชื่อมต่อ/ตัวแทน 65,536

จำนวนของทรัพยากรในคอลเล็กชัน

ทรัพยากร ขีดจำกัด
พาร์ติชัน 4,096
ชาร์ด 64
ฟิลด์ 64
ดัชนี 1
อิ นิตี้ ไม่ จำกัด

ความยาวของสตริง

ชนิดของข้อมูล ขีดจำกัด
VARCHAR 65,535

มิติของเวกเตอร์

คุณลักษณะ ขีดจำกัด
มิติ 32,768

การนำเข้าและการตรวจสอบสำหรับแต่ละ RPC

การดำเนินการ ขีดจำกัด
การแทรกดำเนินการ 512 MB
การค้นหาดำเนินการ 512 MB
การคิวรีดำเนินการ 512 MB

ขีดจำกัดการโหลด

ในเวอร์ชันปัจจุบัน ข้อมูลที่จะโหลดต้องอยู่ภายใต้ 90% ของทรัพยากรหน่วยความจำทั้งหมดของโหนดคำค้นเพื่อสงวนทรัพยากรหน่วยความจำสำหรับเครื่องยนต์การดำเนินการ

ข้อจำกัดในการค้นหา

เวกเตอร์ ข้อจำกัด
topk (จำนวนผลลัพธ์ที่คล้ายกันที่สุดที่จะคืน) 16,384
nq (จำนวนคำขอค้นหา) 16,384