- Tìm kiếm dựa trên embedding vector đơn nhanh và hiệu quả, nhưng gần đây các mô hình đa vector như ColBERT cung cấp ngữ nghĩa phong phú hơn và độ chính xác cao hơn nhờ nhiều vector cho từng token
- Cách tiếp cận đa vector làm khối lượng tính toán và chi phí tìm kiếm tăng mạnh do các phép tính độ tương tự phức tạp như Chamfer similarity, trở thành rào cản cho tìm kiếm thời gian thực ở quy mô lớn
- MUVERA do nhóm nghiên cứu Google đề xuất nén thông tin đa vector thành vector độ dài cố định (FDE, Fixed Dimensional Encoding), rồi thực hiện tìm kiếm siêu nhanh bằng MIPS (Maximum Inner Product Search) dựa trên vector đơn trước khi xếp hạng lại
- Phương pháp này độc lập với dữ liệu và có cơ sở lý thuyết (bảo đảm sai số xấp xỉ cho Chamfer similarity), đạt mức giảm độ trễ hơn 90% và tăng recall hơn 10% so với PLAID hiện có
- FDE còn hỗ trợ nén (giảm bộ nhớ 32 lần), đồng thời đã công bố mã nguồn mở và bài báo, phù hợp để đưa vào dịch vụ thực tế trong tìm kiếm, gợi ý và NLP
Sự phát triển của mô hình embedding và truy xuất thông tin
- Các mô hình embedding dựa trên deep learning là công cụ cốt lõi để nhanh chóng tìm thông tin liên quan trong tập dữ liệu khổng lồ (tài liệu, hình ảnh, video, v.v.) cho truy vấn của người dùng, ví dụ: “độ cao núi Everest”
- Bằng cách chuyển từng điểm dữ liệu thành embedding vector đơn, hệ thống được thiết kế sao cho các dữ liệu tương đồng về ngữ nghĩa sẽ có cấu trúc vector gần nhau về mặt số học
- Nhờ sử dụng phép tính độ tương tự tích vô hướng giữa các vector, có thể cung cấp hiệu năng tìm kiếm nhanh bằng thuật toán Maximum Inner Product Search (MIPS)
- Tuy nhiên gần đây, các mô hình đa vector như ColBERT đang thu hút chú ý nhờ độ chính xác tìm kiếm cao hơn và khả năng nắm bắt các quan hệ phức tạp
Việc đưa mô hình đa vector vào sử dụng và những giới hạn
- Mô hình đa vector biểu diễn mỗi điểm dữ liệu dưới dạng một tập gồm nhiều vector embedding
- Sử dụng các hàm độ tương tự tổng hợp như Chamfer similarity để nắm bắt chính xác thông tin và các mối quan hệ mà vector đơn trước đây không thể thể hiện đầy đủ
- Nhờ vậy, có thể thực hiện truy xuất thông tin chính xác hơn và gợi ý tài liệu có mức độ liên quan cao hơn
- Nhược điểm là do số lượng embedding tăng cùng với độ phức tạp trong tính toán độ tương tự, tài nguyên tính toán cần cho tìm kiếm tăng lên đáng kể
- Số vector theo từng token tăng → khối lượng tính toán và bộ nhớ tăng mạnh
- Bắt buộc phải dùng phép toán phi tuyến (nhân ma trận) → không thể áp dụng tìm kiếm sublinear (siêu nhanh) dựa trên vector đơn
- Khi áp dụng cho dịch vụ quy mô lớn, chi phí và độ trễ tăng vọt
MUVERA: Đổi mới tìm kiếm đa vector bằng FDE
- Bài báo “MUVERA: Multi-Vector Retrieval via Fixed Dimensional Encodings” đề xuất một thuật toán mới để vượt qua bài toán hiệu quả này
- MUVERA chuyển thông tin đa vector thành một vector FDE duy nhất, cho phép tận dụng nguyên vẹn hạ tầng chỉ mục/máy chủ MIPS hiện có để tìm ứng viên tốc độ cao
- Tạo FDE: Chuyển tập đa vector của truy vấn và tài liệu thành vector độ dài cố định (FDE) bằng ánh xạ độc lập dữ liệu
- Tìm kiếm MIPS: Lưu FDE của tất cả tài liệu trong chỉ mục MIPS, rồi dùng FDE của truy vấn để dò tìm ứng viên với tốc độ cực cao
- Xếp hạng lại có bảo đảm độ chính xác: Chỉ áp dụng phép tính đa vector gốc như Chamfer similarity cho các tài liệu ứng viên, sau đó xếp hạng lại chính xác để cho ra kết quả cuối cùng
- FDE có thể áp dụng mà không phụ thuộc vào dataset, nên cũng thuận lợi cho các môi trường động như streaming
Nền tảng lý thuyết
- Lấy cảm hứng từ các thuật toán hình học nâng cao như probabilistic tree embedding, FDE có thể xấp xỉ mạnh độ tương tự đa vector
- Không gian embedding được phân hoạch ngẫu nhiên; khi vector truy vấn và tài liệu nằm trong cùng một vùng, hệ thống tính độ tương tự xấp xỉ
- Bài báo đưa ra cả lý thuyết lẫn dữ liệu thực nghiệm về bảo đảm nằm trong phạm vi sai số xấp xỉ của Chamfer similarity
Kết quả thực nghiệm và hiệu năng
- Hiệu năng của MUVERA được kiểm chứng trên nhiều bộ dữ liệu IR quy mô lớn khác nhau như benchmark BEIR
- Đạt recall trung bình cao hơn 10% so với PLAID và các phương pháp hiện có
- Giảm hơn 90% độ trễ tìm kiếm (latency)
- Với cùng mức recall, số tài liệu ứng viên dựa trên FDE giảm từ 5 đến 20 lần so với trước
- Kết hợp tốt với các kỹ thuật nén bổ sung như Product Quantization (giảm bộ nhớ 32 lần)
- Tính thực tiễn của tìm kiếm đa vector được cải thiện mạnh, phù hợp cho các ứng dụng tìm kiếm, gợi ý và NLP quy mô lớn
Kết luận và ứng dụng
- MUVERA là một cách tiếp cận đột phá giúp tăng tốc tìm kiếm đa vector lên mức của vector đơn
- Mã nguồn mở (liên kết GitHub), bài báo và kết quả thực nghiệm đều đã được công bố
- Đây là một lựa chọn thay thế thực tiễn để nâng cao hiệu quả tìm kiếm đa vector quy mô lớn trong công cụ tìm kiếm, hệ thống gợi ý, xử lý ngôn ngữ tự nhiên, v.v.
- Nếu tiếp tục được nghiên cứu và tối ưu thêm, phương pháp này được kỳ vọng sẽ được ứng dụng rộng rãi hơn nữa trong công nghiệp
1 bình luận
Ý kiến trên Hacker News
Chia sẻ trải nghiệm gần đây khi thêm Muvera vào Weaviate, kèm liên kết blog và podcast. Trong cách tiếp cận multi-vector kiểu ColBERT, tác giả nhắc đến vấn đề chi phí tăng vọt khi tạo embedding cho từng token. Ví dụ, thay vì vector 768 chiều truyền thống, số chiều có thể tăng lên tối đa hơn 16.640, tạo gánh nặng phi thực tế trong nhiều tình huống. Muvera chuyển nhiều vector thành một vector có số chiều cố định, thường nhỏ hơn, nên có thể dùng trực tiếp với bất kỳ ANN index nào. Nhờ dùng một vector duy nhất, có thể áp dụng các thuật toán hiện có và nhiều kỹ thuật lượng tử hóa để tiết kiệm bộ nhớ. Khác với PLAID, nó không cần cấu trúc index hay giả định clustering cụ thể, nên cũng có ưu thế về độ trễ thấp hơn
Nhắc đến xu hướng gần đây rời xa cách làm phẳng bằng mean-pooling để tạo một embedding duy nhất. Vì số lượng vector sẽ quá lớn nếu xử lý toàn bộ embedding theo từng token, nên cần một cách giảm bớt hợp lý. Cách này hoạt động bằng cách clustering embedding token theo các phân hoạch tùy ý, mean-pooling từng nhóm rồi nối chúng lại thành embedding độ dài cố định. Vì việc so sánh multi-vector đầy đủ quá nặng về hiệu năng, họ clustering thành k vector rồi nối lại để có thể so sánh với các công cụ và hiệu năng của mô hình một vector. Kết quả là khi cố định số partition, phương pháp này tạo ra hiệu ứng clustering embedding token kiểu k-means. Cũng có ý kiến cho rằng nếu clustering token động thì có thể tạo ra embedding với số biến khác nhau và cho kết quả tốt hơn
Chia sẻ rằng phương pháp này rất nhạy với hyperparameter, và trong thử nghiệm của người viết thì không đạt hiệu năng tương tự maxsim
Có người hiểu Muvera là tính FDE (Fixed Dimensional Embedding) của truy vấn rồi tìm FDE tương tự trong dataset của mô hình, và đặt câu hỏi liệu như vậy có phải tính cả FDE cùng kích thước cho toàn bộ dữ liệu của mô hình hay không
Có người nói mình không rành lĩnh vực này, và hỏi liệu truy vấn neural embedding có hoạt động giống như câu SQL trả về toàn bộ tên trong một bảng hay không, hay kết quả sẽ mơ hồ hơn
Tóm tắt đây là một cách tiếp cận nhằm nén nhiều embedding thành một, tức giảm chiều và tăng hiệu năng bằng một kiểu “embedding of embeddings”. Vì nhiều embedding chứa lượng thông tin trùng lặp lớn, nên nếu có thể nén chúng thành một thì giá trị bổ sung từ các embedding thêm vào có lẽ chủ yếu là ở mức thấp. Nếu hiệu năng tương đương, thì xét từ góc độ lý thuyết thông tin, có thể đặt câu hỏi liệu chúng có thể được biểu diễn mà không mất mát hay không
Hỏi sự khác biệt với phương pháp feature hash truyền thống, tức cách giảm nhiều embedding thành một, và liệu các kỹ thuật giảm chiều về một vector như UMAP có thể hữu ích hay không