6 điểm bởi GN⁺ 2025-05-06 | 1 bình luận | Chia sẻ qua WhatsApp
  • VectorVFS lưu embedding vector dưới dạng metadata cho từng tệp, cho phép tận dụng chính hệ thống tệp Linux như một cơ sở dữ liệu vector
  • Không cần chỉ mục hay DB bên ngoài, hiện thực lập chỉ mục với chi phí gần như bằng 0 thông qua tính năng xattrs (thuộc tính mở rộng) của hệ thống tệp
  • Có thể tìm các tệp tương tự thông qua tìm kiếm embedding, đồng thời không phụ thuộc vào một mô hình cụ thể và có thể kết nối với nhiều mô hình embedding khác nhau
  • Sử dụng Perception Encoders (PE) của Meta để tạo embedding vector dựa trên hình ảnh/video, cho hiệu năng zero-shot cao hơn các mô hình khác
  • Với cấu trúc nhẹ và linh hoạt, có thể dùng ngay mà không cần daemon hay dịch vụ riêng

Giới thiệu

  • VectorVFS là một thư viện Python gọn nhẹ cho phép lưu và truy xuất embedding cho tệp chỉ bằng các tính năng sẵn có của hệ thống tệp Linux
  • Không cần cơ sở dữ liệu bên ngoài, thư viện lưu giá trị embedding trong thuộc tính mở rộng (xattrs) của từng tệp
  • Vẫn giữ nguyên cấu trúc thư mục hiện có, đồng thời có thể mở rộng thành một hệ thống hỗ trợ tìm kiếm ngữ nghĩa

Tính năng chính

  • Lập chỉ mục không phát sinh overhead

    • Lưu trực tiếp vector embedding vào xattr của tệp
    • Không cần dịch vụ lập chỉ mục bên ngoài hay kho lưu trữ bổ sung, dữ liệu chỉ tồn tại dưới dạng metadata bên cạnh tệp
  • Truy xuất liền mạch

    • Có thể thực hiện tìm kiếm độ tương đồng dựa trên vector trên toàn bộ hệ thống tệp
    • Ví dụ: có thể tìm các tệp hình ảnh tương tự bằng cách như find_similar_images('example.jpg')
  • Hỗ trợ embedding linh hoạt

    • Mặc định sử dụng mô hình Perception Encoders (PE) của Meta
    • Trong tương lai dự kiến hỗ trợ nhiều mô hình embedding khác nhau hơn nữa (ví dụ: văn bản, âm thanh, đa phương thức)
    • Cũng có thể tích hợp mô hình embedding do người dùng tự chọn theo dạng plugin
  • Nhẹ và dễ di động

    • Dựa trên tính năng Linux VFS (xattr) nên không cần thiết lập daemon hay máy chủ riêng
    • Theo cách tiếp cận dễ di động, có thể dùng với thư mục cục bộ hoặc kho lưu trữ bên ngoài
  • Mô hình embedding được sử dụng: Meta Perception Encoders

    • PE là mô hình thị giác-ngôn ngữ dựa trên hình ảnh/video do Meta công bố
    • hiệu năng zero-shot vượt trội so với các mô hình cạnh tranh như InternVL3, Qwen2.5VL, SigLIP2
    • Trong tương lai sẽ bổ sung thêm nhiều mô hình embedding backend khác nhau

Tóm tắt

  • Có thể xây dựng một hệ thống vector hỗ trợ tìm kiếm theo ngữ nghĩa mà vẫn giữ nguyên cấu trúc tệp hiện có
  • Chi phí lưu embedding gần như bằng 0 và có thể vận hành mà không cần hạ tầng riêng
  • Phù hợp để đảm bảo quyền riêng tư và triển khai chức năng tìm kiếm trên thiết bị offline/edge

1 bình luận

 
GN⁺ 2025-05-06
Ý kiến trên Hacker News
  • Việc so sánh với Vector Database khá dễ gây nhầm lẫn. Cơ sở dữ liệu thường hàm ý có hỗ trợ chỉ mục và truy vấn

    • Lưu embeddings dưới dạng tệp là một ý tưởng thú vị. Trong một số định dạng tệp (EXIF), cách này đã được dùng. Tuy nhiên, để xử lý ở quy mô lớn thì vẫn cần một cơ sở dữ liệu thực sự
    • Vấn đề là hỗ trợ nhiều mô hình và định dạng embedding khác nhau để tăng tính di động của dữ liệu. Dù đưa tệp vào hệ thống nào, embedding cũng cần được tích hợp trơn tru
  • Đây là cách gắn metadata vào tệp để các công cụ có thể hiểu LLMs hoặc vector embedding có thể hiểu tệp mà không cần đọc nội dung của tệp

    • Có nhiều trường hợp sử dụng thú vị. Ví dụ, có thể nhanh chóng tìm trong hệ thống tệp bằng prompt như "phát video lần đi cắm trại tháng trước khi tôi thấy một đàn gà tây". Nhưng trên thực tế vẫn cần có một vector DB chạy trong hệ thống
  • Có thể sẽ thú vị nếu bổ sung tùy chọn Weaviate và flat-index cho dự án

    • Hoàn toàn chạy trên đĩa, không dùng dịch vụ bên ngoài. Có thể tìm kiếm toàn bộ hệ thống tệp (khoảng 1.5kb mỗi tệp, 384 chiều)
  • Ý tưởng rất hay

    • Tài liệu cần nhiều thông tin hơn. Ví dụ, hỗ trợ backend GPU nào, cách xóa thông tin embedding ra sao, v.v.
    • Đáng để thử
  • Nếu VectorVFS giấu logic tìm kiếm đằng sau các embedding mờ đục, tôi tự hỏi người dùng sẽ gỡ lỗi thế nào để biết vì sao một tệp xuất hiện, hoặc không xuất hiện

  • Cuộc tranh luận lâu đời giữa hệ thống tệp và cơ sở dữ liệu lúc nào cũng thú vị. Đọc những thứ như thế này luôn làm tôi có thêm nhiều câu hỏi hơn

  • Tôi từng làm thứ gì đó tương tự nhưng dùng các ràng buộc của EXT4

    • hard link (để sao lưu thì chỉ tar hoạt động)
    • kích thước tệp nhỏ (inode cạn kiệt trước cả dung lượng đĩa)
    • hữu ích cho dữ liệu thời gian thực phân tán toàn cầu. P trong CAP không cần thiết cho ghi
  • Ý tưởng lưu embedding trong inode khá thú vị. Rất thông minh

    • Nhưng đây không phải thứ thực sự dùng được như một vector database. Không có khái niệm chỉ mục tìm kiếm. Nó quét tuyến tính O(N) qua mọi tệp
    • Dù vậy vẫn là một ý tưởng vui
  • Vài năm trước tôi đã tìm hiểu thứ gì đó tương tự. Khi đó tôi lưu embedding trong xattrs