Cơ sở dữ liệu vector Milvus là gì?

Milvus được tạo ra vào năm 2019 với mục tiêu chính là lưu trữ, tạo chỉ mục và quản lý các vector nhúng vô cùng lớn do mạng nơ-ron sâu và các mô hình học máy khác tạo ra.

Là một cơ sở dữ liệu được thiết kế đặc biệt để xử lý truy vấn vector đầu vào, Milvus có thể tạo chỉ mục các vector ở quy mô hàng tỷ. Khác với các cơ sở dữ liệu liên hệ hiện có chủ yếu xử lý các mẫu được xác định trước và dữ liệu có cấu trúc, Milvus được thiết kế từ đầu để xử lý các vector nhúng xuất phát từ dữ liệu không có cấu trúc.

Với sự mở rộng liên tục của internet, dữ liệu không có cấu trúc đã trở nên ngày càng phổ biến, bao gồm email, bài báo, dữ liệu cảm biến IoT, ảnh Facebook, cấu trúc protein, và nhiều hơn nữa. Để cho phép máy tính hiểu và xử lý dữ liệu không cấu trúc này, các dữ liệu cần được chuyển đổi thành vector bằng cách sử dụng các kỹ thuật nhúng. Milvus lưu trữ và tạo chỉ mục các vector này. Milvus có thể phân tích khoảng cách tương đồng giữa hai vector bằng cách tính khoảng cách tương đồng giữa chúng, suy luận ra sự tương quan của chúng. Nếu hai vector nhúng rất giống nhau, nó cho thấy các nguồn dữ liệu gốc cũng tương tự nhau.

Luồng làm việc của Milvus:

Workflow

Khái niệm chính

Nếu bạn không quen thuộc với thế giới của cơ sở dữ liệu vector và tìm kiếm tương tự, bạn có thể thấy những khái niệm chính sau hữu ích.

Tìm hiểu thêm về các thuật ngữ của Milvus.

Dữ liệu không có cấu trúc

Dữ liệu không có cấu trúc, bao gồm hình ảnh, video, âm thanh và ngôn ngữ tự nhiên, đề cập đến thông tin không tuân theo mô hình hoặc cấu trúc tổ chức trước. Loại dữ liệu này chiếm khoảng 80% dữ liệu toàn cầu và có thể được chuyển đổi thành vector bằng cách sử dụng các mô hình trí tuệ nhân tạo (AI) và học máy (ML) khác nhau.

Vector nhúng

Vector nhúng là sự trừu tượng hóa đặc tính của dữ liệu không cấu trúc (như email, dữ liệu cảm biến IoT, ảnh Instagram, cấu trúc protein, v.v). Từ quan điểm toán học, vector nhúng bao gồm các số thực hoặc các mảng nhị phân. Các kỹ thuật nhúng hiện đại được sử dụng để chuyển đổi dữ liệu không có cấu trúc thành vector nhúng.

Tìm kiếm tương tự của vector

Tìm kiếm tương tự vector bao gồm so sánh một vector với cơ sở dữ liệu để tìm vector tương tự nhất với vector truy vấn. Sử dụng thuật toán tìm người hàng xóm gần nhất xấp xỉ (ANN) có thể tăng tốc quá trình tìm kiếm. Nếu hai vector nhúng rất giống nhau, nó cho thấy nguồn dữ liệu gốc cũng tương tự nhau.

Tại sao chọn Milvus?

  • Hiệu suất cao cho việc tìm kiếm vector trên tập dữ liệu quy mô lớn.
  • Hỗ trợ cộng đồng tập trung vào các nhà phát triển với hỗ trợ nhiều ngôn ngữ và toolchain.
  • Đạt được tính mở rộng và đáng tin cậy cao trên đám mây, thậm chí duy trì tính ổn định trong trường hợp xảy ra sự cố.
  • Cho phép tìm kiếm kết hợp bằng cách kết hợp lọc scalar với tìm kiếm tương tự vector.

Chỉ mục và Tiêu chuẩn đo độ tương tự được hỗ trợ là gì?

Chỉ mục là các đơn vị tổ chức dữ liệu. Trước khi tìm kiếm hoặc truy vấn các thực thể được chèn, bạn phải khai báo loại chỉ mục và tiêu chuẩn đo độ tương tự. Nếu bạn không chỉ định loại chỉ mục, Milvus mặc định sử dụng tìm kiếm đối xứng.

Loại chỉ mục

Milvus hỗ trợ hầu hết các loại chỉ mục vector cho tìm kiếm gần nhất xấp xỉ (ANNS), bao gồm:

  • FLAT: Phù hợp cho các kịch bản tìm kiếm kết quả chính xác và chính xác hoàn toàn trên tập dữ liệu quy mô nhỏ (triệu).
  • IVF_FLAT: Dựa trên chỉ mục lượng hóa, phù hợp cho các kịch bản tìm kiếm sự cân bằng lý tưởng giữa độ chính xác và tốc độ truy vấn. Cũng có phiên bản GPU gọi là GPU_IVF_FLAT.
  • IVF_SQ8: Dựa trên chỉ mục lượng hóa, phù hợp cho các kịch bản tìm kiếm giảm đáng kể trong tiêu tốn đĩa, CPU và bộ nhớ GPU do tài nguyên rất hạn chế.
  • IVF_PQ: Dựa trên chỉ mục lượng hóa, phù hợp cho các kịch bản tìm kiếm tốc độ truy vấn cao ngay cả khi mất chính xác. Cũng có phiên bản GPU gọi là GPU_IVF_PQ.
  • HNSW: Dựa trên chỉ mục đồ thị, phù hợp cho các kịch bản với yêu cầu rất cao về hiệu suất tìm kiếm.

Để biết thông tin chi tiết hơn, vui lòng tham khảo Chỉ mục Vectơ.

Tiêu chuẩn đo độ tương tự

Trong Milvus, tiêu chuẩn đo độ tương tự được sử dụng để đo lường sự tương đồng giữa các vector. Lựa chọn một phép đo khoảng cách tốt có thể cải thiện đáng kể hiệu suất phân loại và gom cụm. Tùy thuộc vào hình thức dữ liệu đầu vào, các tiêu chuẩn đo độ tương tự cụ thể được chọn để đạt hiệu suất tốt nhất.

Những phép đo chung được sử dụng cho các nhúng số thực là:

  • Khoảng cách Euclid (L2): Phép đo này thường được sử dụng trong lĩnh vực thị giác máy tính.
  • Tích nội (IP): Phép đo này thường được sử dụng trong lĩnh vực xử lý ngôn ngữ tự nhiên.

Những phép đo chung được sử dụng cho các nhúng nhị phân là:

  • Khoảng cách Hamming: Phép đo này thường được sử dụng trong lĩnh vực xử lý ngôn ngữ tự nhiên.
  • Tương đồng Jaccard: Phép đo này thường được sử dụng cho tìm kiếm tương tự phân tử.

Ứng dụng mẫu

Milvus giúp việc thêm tính năng tìm kiếm tương tự vào các ứng dụng trở nên dễ dàng. Các ứng dụng mẫu của Milvus bao gồm:

  • Tìm kiếm tương tự ảnh: Tạo khả năng tìm kiếm ảnh và trả về những hình ảnh tương tự nhất từ một cơ sở dữ liệu lớn gần như tức thì.
  • Tìm kiếm tương tự video: Bằng cách chuyển đổi các khung hình chính thành vector và sau đó đưa kết quả vào Milvus, nó có thể tìm kiếm và đề xuất hàng tỉ video gần như trong thời gian thực.
  • Tìm kiếm tương tự âm thanh: Nhanh chóng truy vấn lượng lớn dữ liệu âm thanh, chẳng hạn như lời nói, nhạc, hiệu ứng âm thanh và âm thanh tương tự.
  • Hệ thống gợi ý: Gợi ý thông tin hoặc sản phẩm dựa trên hành vi và nhu cầu của người dùng.
  • Hệ thống trả lời câu hỏi: Chatbot tương tác trả lời câu hỏi kỹ thuật số có thể tự động trả lời câu hỏi của người dùng.
  • Phân loại chuỗi DNA: Phân loại chính xác gene trong mili giây bằng cách so sánh chuỗi DNA tương tự.
  • Công cụ tìm kiếm văn bản: Giúp người dùng tìm kiếm thông tin họ đang tìm kiếm bằng cách so sánh từ khóa với cơ sở dữ liệu văn bản.

Khái niệm thiết kế của Milvus

Là một cơ sở dữ liệu vector dựa trên đám mây, Milvus phân tách lưu trữ và tính toán trong thiết kế của mình. Để tăng tính linh hoạt và mềm dẻo, tất cả các thành phần trong Milvus đều không lưu trữ trạng thái.

Hệ thống được chia thành bốn lớp:

  • Lớp Truy cập: Bao gồm một nhóm proxy không lưu trữ trạng thái, phục vụ như lớp frontend của hệ thống và các điểm cuối cho người dùng.
  • Dịch vụ Phối hợp: Dịch vụ này gán nhiệm vụ cho các nút worker và hoạt động như trung tâm của hệ thống.
  • Nút Worker: Các nút này hoạt động như cánh tay và chân của hệ thống, tuân theo các hướng dẫn từ dịch vụ phối hợp và thực thi các lệnh DML/DDL được kích hoạt bởi người dùng một cách không chủ quan.
  • Lưu trữ: Đây là nền tảng của hệ thống chịu trách nhiệm về tính liên tục của dữ liệu. Nó bao gồm lưu trữ siêu dữ liệu, đại lý nhật ký và lưu trữ đối tượng.

Kiến trúc Milvus.

Công cụ phát triển

Milvus cung cấp một bộ API và công cụ phong phú cho phát triển và vận hành.

Truy cập API

Milvus cung cấp thư viện khách được bọc xung quanh API của Milvus, có thể được sử dụng để chèn, xóa và truy vấn dữ liệu từ mã ứng dụng một cách tự động:

  • PyMilvus
  • Node.js SDK
  • Go SDK
  • Java SDK

Công cụ Hệ sinh thái Milvus

Hệ sinh thái Milvus cung cấp một số công cụ hữu ích, bao gồm:

Hạn chế của Milvus

Milvus cam kết cung cấp cơ sở dữ liệu vector tốt nhất để thúc đẩy ứng dụng AI và tìm kiếm tương tự vector. Tuy nhiên, nhóm phát triển liên tục làm việc để giới thiệu thêm tính năng và công cụ tối ưu hóa để nâng cao trải nghiệm người dùng. Trang này liệt kê một số hạn chế đã biết mà người dùng có thể gặp phải khi sử dụng Milvus.

Độ dài của Tên Tài nguyên

Tài nguyên Giới hạn
Bộ sưu tập 255 ký tự
Trường 255 ký tự
Chỉ mục 255 ký tự
Phân vùng 255 ký tự

Quy tắc Đặt tên

Tên tài nguyên có thể bao gồm số, chữ cái và gạch dưới (_). Tên phải bắt đầu bằng chữ cái hoặc gạch dưới.

Số lượng Tài nguyên

Tài nguyên Giới hạn
Bộ sưu tập 65,536
Kết nối/Đại lý 65,536

Số lượng Tài nguyên trong Bộ sưu tập

Tài nguyên Giới hạn
Phân vùng 4,096
Shard 64
Trường 64
Chỉ mục 1
Thực thể Không giới hạn

Độ dài Chuỗi

Loại dữ liệu Giới hạn
VARCHAR 65,535

Chiều Vector

Thuộc tính Giới hạn
Chiều 32,768

Đầu vào và Đầu ra cho Mỗi RPC

Thao tác Giới hạn
Thao tác Chèn 512 MB
Thao tác Tìm kiếm 512 MB
Thao tác Truy vấn 512 MB

Giới hạn Tải

Trong phiên bản hiện tại, dữ liệu cần được tải phải nằm trong phạm vi 90% của tổng tài nguyên bộ nhớ của tất cả các nút truy vấn để dự trữ tài nguyên bộ nhớ cho bộ máy thực thi.

Giới hạn Tìm kiếm

Vector Giới hạn
topk (số kết quả tương tự nhất để trả về) 16,384
nq (số lượng yêu cầu tìm kiếm) 16,384