ฐานข้อมูลเวกเตอร์ 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 ให้ 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 |