Milvus

3 May 2020

Tổng quan

Milvus là gì?

Milvus là một engine search mà nguồn mở dựa trên độ tương tự giữa 2 vector. Milvus rất dễ sử dụng, rất đáng tin cậy, khả năng mở rộng cao, rất nhanh và mạnh mẽ. Milvus được sử dụng bởi hơn 100 tổ chức trên toàn thế giới trong nhiều lĩnh vực như: xử lý ảnh, thị giác máy tính, xử lý ngôn ngữ tự nhiên, nhận dạng giọng nói, hệ thống khuyến nghị, tìm hoạt chất tiềm năng,…

Tính năng chính

  • Comprehensive Similarity Metrics (tiêu chuẩn tương tự toàn diện):

Milvus cung cấp các độ đo khoảng cách được sử dụng phổ biến như: khoảng Euclidean, khoảng cách Hamming, khoảng cách Jaccard, … Cho phép tính toán độ tương tự giữa 2 vector một cách hiệu quả nhất có thể.

  • Leading-Edge Performance (Hiệu suất mũi nhọn):

Milvus được xây dụng dựa trên nhiều thư viện chỉ mục Approximate Nearest Neighbor Search (Xấp xỉ láng giềng gần nhất) được tối ưu hóa. Bao gồm Faiss, Annoy, Hnswlib,… Do đó đảm bảo luôn có được hiệu suất tốt trong các tình huống khác nhau.

  • Dynamic Data Management (Quản lý dự liệu động)

Có thể thao khác với dữ liệu bất cứ khi nào cần

  • Near Real Time Search (Tìm kiếm tiệm cận thời gian thực):

Dữ liệu sẵn sàng gần như ngay lập tức sau khi thêm mới hoặc cập nhật.

  • Cost-Efficient (Sử dụng tài nguyên hiệu quả):

Milvus khai thác khả năng tính toán song song của vi xử lý và cho phép tìm thực thi hàng tỷ tỷ tìm kiếm tương tự chỉ trong một phần nghìn giây trên một máy chủ có sẵn.

  • Rich Data Type and Advanced Search(Kiểu dữ phong phú và tìm kiếm nâng cao):

Milvus hỗ trợ nhiều loại dữ liệu khác nhau cho một bản ghi. Và khả năng tìm kiếm nâng cao như các bộ lọc, sắp xếp, tổng hợp cho một hoặc nhiều trường dữ liệu.

  • Highly Scalable and Robust (Khả năng mở rộng cao và mạnh mẽ)

Milvus có triền khai trên một môi trường phân tán. Để tăng khả năng của các Milvus cluster việc cần làm chỉ đơn giản là thêm các node cho Milvus.

  • Cloud Native (Tối ưu cho điện toán đám mây)

Milvus dễ dàng chay trên các máy chủ công khai hoặc các máy chủ bảo một.

  • Ease of Use (Dễ sử dụng) Milvus hỗ trợ các SDKs cho Python, Java, Go và C++, cũng như là RESTful API.

Vector đặc trưng.

Vector đặc trưng là gì

Một vector là một chuối các con số hoặc cũng có thể coi là một ma trận có một dòng nhiều cột. Ví dụ như: [2, 0, 2, 0, 0, 5, 0, 3].

Một vector đặc trưng là một vector chứ nhiều thông tin mô tả nét đặc trưng của một đối tượng. Ví dụ mô tả màu RGB, một vector đặc trưng cho một màu RGB phải có dạng sau đây [R, G, B]. Với R, G, B là chỉ số màu đỏ, xanh lá cây, xanh dương ở trong màu sắc đó.

Tại sao lại sử dụng Vector đặc trưng.

Những tiến bộ trong công nghệ máy tính, phương pháp học máy đã dẫn đến một lượng lớn dữ liệu đa phương tiện trong nhiều lĩnh vực khác nhau như bảo mật, y học, giáo dục, và các dịch vụ trực tuyến. Một đối tượng đa phương tiện không chỉ đơn giản được mô tả bằng một con số bởi vì một số đối tượng này có nhiều hơn một thuộc tính. Ví dụ, không thể mô tả mặt của một con người chỉ bằng một vài tham số hoặc một chuỗi văn bản.

Thay vào đó một vector đặc trưng mô tả một đối tượng một cách đa chiều, dễ phân tích và phù hợp để thể hiện các đặc tính số hoặc đặc trưng của nội dụng đa phương tiện. Ví dụ, một vector đặc trưng của hàng trăm số đo có thể mô tả chính xác một khuôn mặt.

Các vector đặc trưng rất quan trọng đối với nhiều lĩnh vực khác nhau của học máy và nhận dạng mãu. Các thuật toán học máy thương yêu cầu biểu diễn bằng số các đối tượng để các thuật toán thực hiện phân tích thống kê.

Các trượng hợp sử dụng.

Các vector đặc trưng rất thực tiễn và hiệu quả trong việc biểu diễn các đối tượng số nên được sử dụng rộng rãi trong các lĩnh vực của học máy.

  • Xử lý ảnh

Đặc trưng ở đây có thể là độ dốc, màu sắc, cường độ của thang màu xám, chiều dài các cạnh, diện tích,… Các vector đặc trưng đặc biệt được sử dụng nhiều trong xử lý ảnh vì dễ xác định các thuộc tính số cho hình ảnh.

  • Nhận diện giọng nói

Đặc trưng có thể là âm lượng, độ nhiễu, tỉ lệ nhiễu,…

  • Lọc thư rác

Đặc trưng có thể là địa chỉ IP, cấu trúc từ, tần suất xuất hiện của các từ nhất định hoặc tiêu đề của mail,….

Cơ sở dữ liệu truyền thống

Các cơ sở dữ liệu quan hệ truyền thống được thiết kể để tổ chức các đối tượng dạng dữ liệu số vào các bảng có liên quan. Những cơ sở dữ liệu truyền thống này không hỗ trợ các vector đặc trưng có kích thước lớn vì các lí do sau:

  • Các vector dặc trưng không phải một phần của dữ liệu tích hợp, vì vậy phương pháp để quản lý các vector đặc trưng thường không được hỗ trợ.

  • Số lượng cột trong một bảng bị hạn chế.

Hiện tại có một số plugin dùng để lập chỉ mục các vector đặc trưng trong các cở sở dữ liệu quan hệ truyền thống, chẳng hạn như imsmlr là một plugin để tìm kiếm ảnh tương tự trong PostgreSQL. Word2vec là một plugin tính toán các vector từ. Tuy nhiên, vì các plugin này thực hiện tối ưu hóa dựa trên các thuật toán như tìm kiếm băm và tìm kiếm dữ liệu rời rạc một chiều. Hiệu suất cảu các phương pháp này tương đối kém đối với tìm kiếm vector có nhiều chiều.