Một tiện ích mở rộng SQLite mới có tên sqlite-vector đã xuất hiện, hứa hẹn khả năng tìm kiếm vector nhanh hơn cho các nhà phát triển làm việc với embeddings và tìm kiếm tương tự. Tuy nhiên, dự án này đã khơi mào một cuộc tranh luận gay gắt trong cộng đồng không phải về giá trị kỹ thuật của nó, mà về cách tiếp cận cấp phép làm mờ ranh giới giữa phần mềm mã nguồn mở và phần mềm độc quyền.
Tiện ích mở rộng sqlite-vector được tạo ra để giải quyết những hạn chế trong các giải pháp tìm kiếm vector SQLite hiện có. Các lựa chọn hiện tại như sqlite-vec yêu cầu thiết lập bảng ảo phức tạp, trong khi việc triển khai HNSW của libsql có thể mất hàng giờ để xây dựng chỉ mục. Tiện ích mở rộng mới nhằm cung cấp một giải pháp trung gian với tìm kiếm brute-force được tối ưu hóa có thể xử lý hàng triệu vector một cách hiệu quả trên phần cứng thông thường như laptop và máy chủ nhỏ.
Sự nhầm lẫn về cấp phép tạo ra phản ứng dữ dội từ cộng đồng
Vấn đề gây tranh cãi nhất xung quanh sqlite-vector là chiến lược cấp phép của nó. Trong khi các nhà phát triển tuyên bố nó hoàn toàn miễn phí cho các dự án mã nguồn mở, tiện ích mở rộng này sử dụng Elastic License 2.0 với một khoản cấp phép bổ sung cho việc sử dụng mã nguồn mở. Cách tiếp cận này đã nhận được sự chỉ trích gay gắt từ cộng đồng nhà phát triển, những người cho rằng việc gọi dự án này là mã nguồn mở là gây hiểu lầm.
Vấn đề cốt lõi nằm ở tính tương thích của giấy phép. Ngay cả với khoản cấp phép bổ sung cho phép sử dụng trong các dự án mã nguồn mở, các nhà phát triển không thể cấp lại phép cho tiện ích mở rộng này dưới các giấy phép mã nguồn mở tiêu chuẩn như Apache 2.0 hoặc MIT. Điều này có nghĩa là các dự án mã nguồn mở thực sự kết hợp sqlite-vector sẽ mất đi tình trạng mã nguồn mở của chúng, tạo ra hiệu ứng nhiễm bẩn giấy phép.
Nếu các dự án mã nguồn mở của tôi kết hợp các khía cạnh của dự án này thì chúng không còn là mã nguồn mở nữa!
Các thành viên cộng đồng đã gắn nhãn cách tiếp cận này là source available thay vì thực sự là mã nguồn mở, chỉ trích nó như một nỗ lực để có được uy tín mã nguồn mở mà không có những quyền tự do thực tế mà các giấy phép mã nguồn mở cung cấp.
So sánh Giấy phép
- sqlite-vec: Cấp phép kép theo Apache 2.0 và MIT (mã nguồn mở thực sự)
- sqlite-vector: Giấy phép Elastic License 2.0 với cấp phép bổ sung cho các dự án mã nguồn mở (mã nguồn có sẵn)
- libsql: Mã nguồn mở nhưng yêu cầu lập chỉ mục hàng giờ cho việc triển khai HNSW
Tuyên bố về hiệu suất cho thấy tiềm năng
Bất chấp tranh cãi về cấp phép, hiệu suất kỹ thuật của sqlite-vector có vẻ ấn tượng. Các bài kiểm tra benchmark sử dụng 100.000 vector với 384 chiều trên Apple M1 Pro cho thấy những cải thiện đáng kể so với các giải pháp hiện có. Tiện ích mở rộng này đạt được thời gian chèn nhanh hơn 50% so với sqlite-vec và hiệu suất truy vấn nhanh hơn 16% trong các hoạt động tiêu chuẩn.
Những cải thiện hiệu suất thực sự đến từ các tính năng quantization của tiện ích mở rộng. Với quantization 8-bit được kích hoạt, các truy vấn chạy nhanh gấp ba lần so với cách tiếp cận tiêu chuẩn. Khi kết hợp với preloading bộ nhớ, thời gian truy vấn giảm xuống dưới 4 mili giây - nhanh hơn khoảng 17 lần so với sqlite-vec trong khi vẫn duy trì độ chính xác recall hoàn hảo. Việc sử dụng bộ nhớ vẫn hợp lý ở mức 37 MB cho 100.000 vector, làm cho nó phù hợp với các môi trường hạn chế tài nguyên.
Tiện ích mở rộng này cũng đơn giản hóa thiết kế cơ sở dữ liệu bằng cách cho phép lưu trữ vector trong các bảng thông thường cùng với dữ liệu khác, loại bỏ nhu cầu về các hoạt động JOIN phức tạp mà các giải pháp khác yêu cầu.
So sánh hiệu suất (100,000 vector, 384 chiều)
Chỉ số | sqlite-vec | sqlite-vector | sqlite-vector (đã lượng tử hóa) |
---|---|---|---|
Thời gian chèn | 1179.07 ms | 563.04 ms | 563.04 ms |
Thời gian truy vấn | 67.84 ms | 56.65 ms | 17.44 ms |
Sử dụng bộ nhớ | N/A | N/A | 37.38 MB |
Recall@20 | N/A | N/A | 1.0000 (hoàn hảo) |
Mối quan ngại về thương hiệu thêm một lớp khác
Ngoài các vấn đề cấp phép, dự án đã gây chú ý về việc sử dụng thương hiệu SQLite. Các nhà phát triển hoạt động dưới tên miền sqlite.ai và tên công ty SQLite Cloud, Inc., dẫn đến mối quan ngại về khả năng nhầm lẫn của người tiêu dùng. Tuy nhiên, nhóm này tuyên bố có sự ủng hộ từ tác giả gốc của SQLite, Tiến sĩ Richard Hipp, và có đầy đủ quyền sử dụng tên SQLite.
Các giải pháp thay thế vẫn phổ biến
Do những mối quan ngại về cấp phép, nhiều nhà phát triển vẫn bám víu vào các lựa chọn thay thế hiện có. Tiện ích mở rộng sqlite-vec, mặc dù chậm hơn trong các benchmark, cung cấp cấp phép mã nguồn mở thực sự dưới các giấy phép Apache 2.0 và MIT. Các thành viên cộng đồng cũng lưu ý rằng những hạn chế của sqlite-vec không nghiêm trọng như được mô tả ban đầu, với các bản cập nhật gần đây cho phép gọi hàm khoảng cách trực tiếp mà không cần yêu cầu các bảng ảo riêng biệt.
Tranh cãi về sqlite-vector làm nổi bật căng thẳng đang diễn ra giữa tính bền vững thương mại và các nguyên tắc mã nguồn mở trong không gian công cụ nhà phát triển. Trong khi những cải thiện hiệu suất của tiện ích mở rộng này đáng chú ý, cách tiếp cận cấp phép của nó đã tạo ra một rào cản cho việc áp dụng có thể hạn chế tác động của nó trong cộng đồng mã nguồn mở.
Tham khảo: The State of Vector Search in SQLite