มารู้จัก Milvus เครื่องมือสำหรับทำ Vector Database ที่น่าสนใจ

Jessada Weeradetkumpon
SCB TechX
Published in
2 min readDec 1, 2023

การทำ Vector search สามารถนำไปใช้ประโยชน์ได้หลากหลาย เช่น Image Similarity Search, Question Answering System, Recommender System และ Text Search Engine เป็นต้น แต่การทำ Vector Search มีทั้ง Framework และ Database ที่หลากหลาย ดังนั้นการเลือกใช้เครื่องมือให้มีประสิทธิภาพจำเป็นต้องรู้จักและใช้ครื่องมือที่เหมาะสมกับงาน

บทความนี้จะพามาทำความรู้จักกับหนึ่งใน Vector Database ที่น่าสนใจก็คือ “Milvus” ซึ่งเป็นเครื่องมือที่จะมาช่วยให้การทำ Vector Search เป็นเรื่องง่าย อีกทั้งยังเป็น Open Source ด้วยนะ

“Milvus” was created in 2019 with a singular goal: store, index, and manage massive embedding vectors generated by deep neural networks and other machine learning (ML) models.

What is Vector Search?

“Vector Search” หรือ “ค้นหาเวกเตอร์” คือการค้นหาข้อมูลโดยใช้เวกเตอร์ (Vectors) ซึ่งเป็นข้อมูลที่ถูกแทนด้วยตัวเลข ในทางปฏิบัติ Vector Search มักจะใช้ในการค้นหาข้อมูลข้อมูลภาพ, เสียง, และข้อความเป็นต้น โดยเวกเตอร์ที่ใช้เป็นตัวแทนข้อมูลมักจะถูกสร้างขึ้นจากการใช้เทคนิค Deep Learning หรือ Unsupervised Learning เพื่อให้เวกเตอร์นั้นสามารถแทนคุณลักษณะที่มีนัยสำคัญของข้อมูลได้อย่างเหมาะสม เมื่อมีเวกเตอร์ที่เป็นตัวแทนของข้อมูลแล้ว การค้นหาเวกเตอร์จะช่วยในการค้นหาข้อมูลที่มีความคล้ายคลึงกันหรือใกล้เคียงกับข้อมูลต้นแบบได้

What is Vector Database?

“Vector Database” หรือ “ฐานข้อมูลเวกเตอร์” คือฐานข้อมูลที่ใช้เพื่อจัดเก็บ Embedding Vectorโดยเวกเตอร์จะถูกทำดัชนี (Index) เพื่อให้การค้นหามีประสิทธิภาพและดึงข้อมูลโดยการเปรียบเทียบค่าเพื่อค้นหาเวกเตอร์ที่คล้ายคลึงกันมากที่สุด ซึ่ง Vector Database เริ่มเป็นที่นิยมเนื่องจากจะทำให้สามารถ Scale ขนาดได้ง่ายและ Query ข้อมูลได้รวดเร็ว

What is Milvus Vector Database?

Milvus ถูกสร้างขึ้นในปี 2019 ด้วยวัตถุประสงค์เดียวคือ: จัดเก็บ, ทำดัชนี, และจัดการเวกเตอร์ที่มีขนาดใหญ่ที่ถูกสร้างขึ้นจาก Deep Neural Networks และ Machine Learning (ML) เนื่องจากเป็นฐานข้อมูลที่ได้รับการออกแบบมาโดยเฉพาะเพื่อจัดการกับการค้นหาข้อมูลผ่านเวกเตอร์ที่เก็บไว้ จึงสามารถจัดทำดัชนีเวกเตอร์ได้ในระดับล้านล้าน ซึ่ง Milvus ได้รับการออกแบบมาเพื่อจัดการกับเวกเตอร์ที่แปลงจากข้อมูลที่ไม่มีโครงสร้างและสามารถวิเคราะห์ความสัมพันธ์ระหว่างเวกเตอร์สองตัวโดยคำนวณความคล้ายคลึงกัน ถ้าเวกเตอร์สองตัวมีความคล้ายคลึงมากนั่นหมายถึงข้อมูลก่อนที่จะแปลงเป็นเวกเตอร์มีความคล้ายกันด้วย

Milvus Workflow. (https://milvus.io/docs/build_index.md)

Key Concepts

Unstructured Data — ข้อมูลที่ไม่มีโครงสร้าง (รูปภาพ วิดีโอ เสียง และข้อความ) คือข้อมูลที่ไม่มีรูปแบบตายตัว ประเภทข้อมูลนี้มีประมาณ 80% ของข้อมูลที่จัดเก็บทั่วโลก

Embedding Vectors — เวกเตอร์ที่ถูก Embed เป็นการใช้อาร์เรย์ของตัวเลขทศนิยมมาเป็นตัวแทนของข้อมูลที่ไม่มีโครงสร้าง

Vector Similarity Search — การค้นหาความคล้ายคลึงกันของเวกเตอร์เป็นการเปรียบเทียบเวกเตอร์กับฐานข้อมูลเพื่อค้นหาเวกเตอร์ที่คล้ายกันมากที่สุด โดยใช้อัลกอริธึม Approximate Nearest Neighbor (ANN) ซึ่งเป็นที่นิยมนำมาใช้ในการทำ Vector Search

Why Milvus?

  • มีประสิทธิภาพสูงเมื่อทำการค้นหาเวกเตอร์บนชุดข้อมูลที่มีขนาดใหญ่
  • เน้นกลุ่มผู้ใช้ Developer เป็นหลักเนื่องจากมีการรองรับหลายภาษาและมี Toolchain ให้ใช้งาน
  • มีความสามารถในการปรับขนาด (Scale) ของคลาวด์ (Cloud) และมีความน่าเชื่อถือสูงสามารถรับมือกับการทำงานที่ถูกขัดจังหวะได้ (Disruption)
  • การค้นหาแบบไฮบริด (Hybrid) ทำได้โดยการจับคู่การทำงานของ Scalar Filtering กับ Vector Similarity Search

What Indexes and Metrics are Supported?

ลองมาดู Indexs และ Metrics ที่ Milvus สนับสนุนโดยก่อนการค้นหาจะต้องระบุชนิดของ Index และ Metric ที่ต้องการใช้แต่ถ้าไม่ได้ระบุจะเป็นการ Brute-force Search โดยใช้ค่าตั้งต้น

Index Types

  • FLAT
  • IVF_FLAT
  • IVF_SQ8
  • IVF_PQ
  • HNSW

Similarity Metrics

  • Euclidean Distance (L2)
  • Inner Product (IP)
  • Cosine Similarity (COSINE)
  • Hamming
  • Jaccard

Example Sandbox

หลังจากทำความรู้จัก Milvus แล้วใครที่สนใจก็สามารถลองเข้าไปใช้งาน Milvus ได้ฟรีผ่าน Sandbox บน Cloud โดยจะมี Cluster ที่เป็น Serverless มาให้ใช้ฟรี 1 ตัว และมีข้อมูลตัวอย่างที่มี Vector แล้วมาให้ลองเล่นอีกด้วย

นอกจากนี้ยังมีหน้า Playgroud ที่มีตัวอย่าง API สำหรับ Insert, Search, Get, Query และ Delete มาให้ทดสอบใช้งานได้ ถือว่าเป็นการให้ผู้ใช้ได้ทำความรู้จักกับเครื่องมือได้เป็นอย่างดีก่อนที่จะเริ่มนำไปใช้งานจริง

Try Milvus Clicks
Example Application Text Search Engine Clicks

Conclusion

การทำ Vector Search โดยใช้ Milvus มีข้อดีเนื่องจากเป็น Open Source ที่สามารถใช้งานได้ฟรี ช่วยให้การสเกลข้อมูลทำได้ง่าย เวลาที่จะใช้ในการค้นหา Vector เร็วเนื่องจาก Latency ต่ำ รวมไปถึงมีการรองรับ Indexs และ Metrics ที่หลากหลาย ส่วนข้อเสียต้องศึกษาเครื่องมือ, ข้อจำกัด และการนำไปใช้ร่วมกันกับระบบอื่น ๆ เพิ่มเติม

ท้ายนี้ SCB TechX พร้อมให้คำปรึกษาและบริการด้าน Data Platform แบบครบวงจร จากผู้เชี่ยวชาญมืออาชีพผู้มีประสบการณ์ด้าน Data ให้แก่บริษัทชั้นนำมากมาย สนใจสอบถามข้อมูลเพิ่มเติมโปรดส่งรายละเอียดมาได้เลยที่ contact@scbtechx.io 😊

--

--