Phiên bản Weaviate v1.40 hiện đã được phát hành dưới dạng mã nguồn mở và có mặt trên nền tảng Weaviate Cloud.
Bản phát hành này chính thức đưa vào sử dụng rộng rãi hai tính năng: xóa vector có tên định danh (named vector) nhằm giải phóng dung lượng đĩa và bộ nhớ chỉ mục do các vector không còn sử dụng chiếm dụng, cùng kỹ thuật Lượng tử hóa xoay vòng 4-bit (4-bit Rotational Quantization). Hai tính năng mới khác cũng được giới thiệu: chỉ mục HFresh hiện hỗ trợ các embedding đa vector thông qua MUVERA, và PathSeer được bổ sung cùng ACORN và cơ chế sweeping để trở thành chiến lược lọc thứ ba cho thuật toán HNSW. Bài viết cũng cập nhật các thông tin về Search REST API, vốn đã có nhiều thay đổi qua các bản vá của phiên bản 1.39, đồng thời đề cập đến một thay đổi quan trọng làm mất tính tương thích ngược (breaking change) đối với các cấu hình vector mặc định cần lưu ý kiểm tra trước khi tiến hành nâng cấp.
Phiên bản Weaviate v1.40 hiện đã được phát hành dưới dạng mã nguồn mở và trên nền tảng điện toán đám mây Weaviate Cloud.
Bản phát hành này chính thức cung cấp rộng rãi (General Availability) hai tính năng: xóa vector có định danh (giúp giải phóng dung lượng đĩa và bộ nhớ chỉ mục do vector không còn sử dụng chiếm dụng) và Lượng tử hóa xoay 4-bit (4-bit Rotational Quantization). Ngoài ra, hệ thống bổ sung hai tính năng mới: chỉ mục HFresh hỗ trợ nhúng đa vector (multi-vector embeddings) thông qua MUVERA; PathSeer trở thành chiến lược lọc thứ ba cho HNSW, bên cạnh ACORN và kỹ thuật quét (sweeping). Bản tin này cũng cập nhật thông tin về Search REST API vốn có nhiều thay đổi trong chuỗi bản vá 1.39, đồng thời lưu ý thay đổi mang tính phá vỡ (breaking change) đối với các cấu hình vector mặc định cần kiểm tra trước khi tiến hành nâng cấp.
Dưới đây là các nội dung nổi bật của bản phát hành:
Xóa vector có định danh - Cung cấp rộng rãi (General Availability)
Lượng tử hóa xoay 4-bit - Cung cấp rộng rãi (General Availability)
Nhúng đa vector trên HFresh với MUVERA
Chiến lược lọc PathSeer
Search REST API (Bản xem trước)
Cấu hình vector mặc định (thay đổi mang tính phá vỡ)
Cải thiện hiệu năng và các bản sửa lỗi
Đóng góp từ cộng đồng
Tóm tắt
Thay đổi mang tính phá vỡ
Trong trường hợp máy chủ được thiết lập DEFAULT_VECTORIZER_MODULE, người quản trị cần tham khảo phần cấu hình vector mặc định trước khi thực hiện nâng cấp.
Xóa vector có định danh - Cung cấp rộng rãi (General Availability)
Theo thời gian, các tập hợp (collection) sẽ tích lũy nhiều vector. Khi một vector có định danh được thêm vào để thử nghiệm mô hình nhúng mới và mô hình này được chọn áp dụng, vector cũ vẫn tồn tại trên từng đối tượng và từng phân mảnh (shard), gây chiếm dụng dung lượng đĩa cũng như bộ nhớ chỉ mục. Trước đây, giải pháp duy nhất là tạo lại toàn bộ tập hợp và nhập lại toàn bộ dữ liệu.
Phiên bản v1.40 chính thức cung cấp rộng rãi điểm cuối (endpoint) dùng để xóa chỉ mục vector. Tính năng này xuất hiện từ phiên bản v1.37 dưới dạng thử nghiệm và bị tắt theo mặc định. Kể từ phiên bản v1.40, tính năng được kích hoạt mặc định.
Thao tác xóa sẽ loại bỏ chỉ mục của vector và xóa dữ liệu nhúng tương ứng khỏi mọi đối tượng. Các vector có định danh khác trong tập hợp cùng toàn bộ dữ liệu đối tượng vẫn được giữ nguyên.
Thao tác xóa không thể hoàn tác
Để khôi phục vector, người dùng cần thêm lại vector đó và tiến hành vector hóa lại hoặc nhập lại các đối tượng.
Cơ chế hoạt động
Đối với thư viện Python client (phiên bản 4.24.0 trở lên), gọi lệnh delete_vector_index kèm tên của vector:
articles = client.collections.use("Article")
articles.config.delete_vector_index("body_vector")
Đối với giao thức REST, thực hiện một yêu cầu DELETE:
curl -X DELETE \
http://localhost:8080/v1/schema/Article/vectors/body_vector/index
Lệnh gọi sẽ hoàn tất phản hồi ngay sau khi hệ thống Weaviate tiếp nhận yêu cầu xóa. Quá trình dọn dẹp dữ liệu được thực thi ngầm theo từng phân mảnh và sẽ tiếp tục từ vị trí gián đoạn sau khi khởi động lại.
Trong thời gian tiến hành dọn dẹp, vector vẫn xuất hiện trong định nghĩa tập hợp, nhưng các tác vụ ghi nhắm vào vector này sẽ bị từ chối. Trong một tác vụ xử lý hàng loạt (batch), chỉ các đối tượng chứa vector bị xóa mới phát sinh lỗi. Quá trình xóa hoàn tất khi vector hoàn toàn biến mất khỏi định nghĩa tập hợp.
Một số lưu ý bổ sung:
Quyền hạn: Người dùng cần có quyền cập nhật (update) đối với tập hợp và các đối tượng dữ liệu, do thao tác xóa sẽ ghi đè lên từng đối tượng.
Đối tượng thuê không hoạt động (Inactive tenants): Phân vùng thuê ở trạng thái không hoạt động sẽ làm đình trệ tiến trình hoàn tất cho đến khi được kích hoạt trở lại và lượt dọn dẹp tiếp theo quét đến.
Tái sử dụng tên gọi: Sau khi hoàn tất việc xóa, người dùng có thể thêm lại một vector trùng tên, kể cả khi vector mới có số chiều (dimensionality) khác. Chỉ mục mới sẽ được khởi tạo ở trạng thái trống.
Vector cuối cùng: Việc xóa vector duy nhất còn lại sẽ khiến tập hợp không còn vector nào. Các đối tượng và thuộc tính dữ liệu vẫn được bảo toàn.
Thư viện Python client là công cụ đầu tiên tích hợp điểm cuối này. Đối với các ngôn ngữ lập trình khác, người dùng có thể gửi yêu cầu thông qua giao thức REST.
Tài liệu liên quan
Hướng dẫn: Quản lý tập hợp - Xóa vector có định danh
Tài liệu tham khảo: RESTful API - Schema
Lượng tử hóa xoay 4-bit - Cung cấp rộng rãi (General Availability)
Tính năng Lượng tử hóa xoay (Rotational Quantization - RQ) 4-bit, vốn được giới thiệu dưới dạng bản xem trước trong phiên bản v1.39, hiện đã chính thức phát hành rộng rãi. RQ thực hiện xoay từng vector, sau đó lưu trữ mỗi chiều dưới dạng một số nguyên nhỏ thay vì số thực dấu phẩy động đầy đủ (float).
Mục đích chính của việc kích hoạt tính năng này là tối ưu hóa bộ nhớ. Trên 1 triệu vector 1.536 chiều, RQ 4-bit sử dụng ít hơn khoảng 45% bộ nhớ so với RQ 8-bit. Một cụm máy chủ cùng quy mô có thể lưu trữ được nhiều vector hơn, hoặc hệ thống có thể vận hành trên một cụm có cấu hình nhỏ hơn. Tốc độ nhập dữ liệu cũng được nâng cao.
Chất lượng tìm kiếm vẫn được bảo đảm do Weaviate tiến hành chấm điểm lại các kết quả tiềm năng nhất bằng các vector gốc.
Cơ chế hoạt động
Nhiều mô hình nhúng tạo ra các vector tập trung quanh một điểm khác 0. Kỹ thuật căn tâm (Centering), được tích hợp trong Weaviate từ phiên bản v1.39.3, đo lường điểm này từ một tập dữ liệu mẫu và tiến hành nén tương đối theo điểm đó. Phương pháp này giúp độ bao phủ (recall) của định dạng 4-bit tiệm cận mức 8-bit. Tính năng này được tắt theo mặc định do một số mô hình đã tự động thực hiện thao tác tương tự. Tính năng chỉ áp dụng đối với định dạng 4-bit.
Thiết lập rq.bits = 4 trên chỉ mục HNSW. Với thư viện Python client phiên bản 4.23.1 trở lên, có thể kích hoạt tính năng căn tâm trong cùng một lệnh gọi:
from weaviate.classes.config import Configure
client.collections.create(
"Doc",
vector_config=Configure.Vectors.self_provided(
name="default",
vector_index_config=Configure.VectorIndex.hnsw(
quantizer=Configure.VectorIndex.Quantizer.rq(bits=4, centering=True),
),
),
)
Tham số bit sẽ được cố định ngay khi RQ được kích hoạt lần đầu trên một vector, do đó cần lựa chọn độ rộng bit trước thời điểm này. Người dùng vẫn có thể kích hoạt RQ sau đó trên một tập hợp dữ liệu (collection) chưa qua nén.
Quản trị viên có thể thiết lập DEFAULT_QUANTIZATION=rq-4 để đặt RQ 4-bit làm mặc định cho các chỉ mục HNSW mới. Weaviate Cloud vẫn duy trì RQ 8-bit làm giá trị mặc định. Định dạng 4-bit chỉ hoạt động trên các chỉ mục HNSW.
Các số liệu chi tiết và giải pháp kỹ thuật được trình bày trong bài phân tích chuyên sâu về Lượng tử hóa xoay 4-bit.
Tài nguyên liên quan
Khái niệm: Lượng tử hóa vector - Lượng tử hóa xoay
Hướng dẫn: Nén dữ liệu - RQ 4-bit
Bài viết: Lượng tử hóa xoay 4-bit
Nhúng đa vector trên HFresh với MUVERA
HFresh là chỉ mục vector lưu trữ trên ổ đĩa của Weaviate. Hệ thống duy trì một chỉ mục nhỏ gồm các tâm cụm (centroid) trong bộ nhớ và lưu trữ các vector đã nén trên ổ đĩa, qua đó giảm đáng kể dung lượng bộ nhớ so với HNSW. Trước đây, cấu trúc này chỉ tiếp nhận một vector cho mỗi đối tượng.
Các mô hình tương tác muộn (late-interaction) như ColBERT và ColPali tạo ra dạng nhúng đa vector: một vector cho mỗi token hoặc mỗi mảnh ảnh (image patch), thay vì một vector cho mỗi đối tượng. Các mô hình này cho kết quả xếp hạng chính xác, song một trang văn bản có thể chuyển đổi thành hàng trăm vector, tạo áp lực lớn lên bộ nhớ. Kể từ phiên bản v1.40, HFresh đã hỗ trợ lập chỉ mục cho các dữ liệu này.
Quy trình áp dụng một điều kiện: trên HFresh, các cấu trúc nhúng đa vector cần được mã hóa bằng MUVERA. MUVERA chuyển đổi một tập hợp vector thành một vector đơn có độ dài cố định, cho phép HFresh thực hiện tìm kiếm tương tự như các vector thông thường.
Cơ chế hoạt động
Một truy vấn đa vector trên HFresh được thực thi qua ba giai đoạn:
s
Nguồn tin: Weaviate Blog. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.