[ad_1]
Xây dựng lại chỉ mục HNSW là một trong những khía cạnh tốn nhiều tài nguyên nhất khi sử dụng HNSW trong khối lượng công việc sản xuất. Không giống như cơ sở dữ liệu truyền thống, nơi việc xóa dữ liệu có thể được xử lý chỉ bằng cách xóa một hàng trong bảng, việc sử dụng HNSW trong cơ sở dữ liệu vector thường yêu cầu xây dựng lại hoàn toàn để duy trì hiệu suất và độ chính xác tối ưu.
Tại sao cần phải xây dựng lại?
Do cấu trúc đồ thị phân lớp, HNSW không được thiết kế cho các tập dữ liệu động thay đổi thường xuyên. Việc thêm dữ liệu mới hoặc xóa dữ liệu hiện có là điều cần thiết để duy trì dữ liệu được cập nhật, đặc biệt đối với các trường hợp sử dụng như RAG, nhằm mục đích cải thiện tính liên quan của tìm kiếm.
Hầu hết các cơ sở dữ liệu đều hoạt động theo khái niệm gọi là xóa “cứng” và “mềm”. Xóa cứng xóa dữ liệu vĩnh viễn, trong khi xóa mềm đánh dấu dữ liệu là ‘cần xóa’ và xóa sau. Vấn đề với xóa mềm là dữ liệu cần xóa vẫn sử dụng bộ nhớ đáng kể cho đến khi nó bị xóa vĩnh viễn. Điều này đặc biệt có vấn đề trong các cơ sở dữ liệu vector sử dụng HNSW, nơi mà mức tiêu thụ bộ nhớ đã là một vấn đề đáng kể.
HNSW tạo ra một đồ thị trong đó các nút (vectơ) được kết nối dựa trên vị trí gần của chúng trong không gian vectơ và việc duyệt qua đồ thị HNSW được thực hiện giống như danh sách bỏ qua. Để hỗ trợ điều đó, các lớp của đồ thị được thiết kế sao cho một số lớp có rất ít nút. Khi các vectơ bị xóa, đặc biệt là các vectơ trên các lớp có rất ít nút đóng vai trò là các đầu nối quan trọng trong đồ thị, toàn bộ cấu trúc HNSW có thể bị phân mảnh. Sự phân mảnh này có thể dẫn đến các nút (hoặc các lớp) bị ngắt kết nối khỏi đồ thị chính, đòi hỏi phải xây dựng lại toàn bộ đồ thị hoặc ít nhất sẽ dẫn đến giảm hiệu quả tìm kiếm.
Sau đó, HNSW sử dụng kỹ thuật xóa mềm, đánh dấu các vectơ để xóa nhưng không xóa chúng ngay lập tức. Cách tiếp cận này làm giảm chi phí xây dựng lại hoàn chỉnh thường xuyên, mặc dù vẫn cần xây dựng lại định kỳ để duy trì trạng thái tối ưu của đồ thị.
[ad_2]
Source link