SQLite'de vektör araması için yeni bir uzantı geliştiriliyor
- sqlite-vec, SQLite'de vektör araması için geliştirilen yeni bir uzantı ve mevcut sqlite-vss'ın yerini alacak şekilde planlanıyor.
- SQLite'nin çalıştığı tüm ortamlarda (WASM dahil) çalışabilecek, gömülü ve "yeterince hızlı" bir vektör arama aracı olacak.
- Henüz geliştirme aşamasında olsa da, hazır olur olmaz repoyu kontrol etmeniz önerilir.
sqlite-vec'in özellikleri
- Tamamen C ile yazılmış, bağımlılığı olmayan bir SQLite uzantısı.
- Hızlı vektör araması için özel SQL fonksiyonları ve sanal tablolar sunar.
- Vektör işlemleri (nicemleme, JSON/BLOB/numpy dönüştürme, vektör hesaplamaları vb.) için diğer araçlar ve yardımcı programlar sağlar.
- SQL kullanarak vektör araması yapılabilir (CREATE VIRTUAL TABLE, INSERT INTO, SELECT ifadeleri kullanılarak).
sqlite-vec'in avantajları
- Tamamen C ile yazıldığı için Linux/MacOS/Windows, web tarayıcıları (WebAssembly), mobil telefonlar, Raspberry Pi vb. tüm platformlarda çalışabilir.
- İkili boyutu yüzlerce KB seviyesinde küçük.
- Bellek kullanımı daha iyi kontrol edilebilir (vektörler parça parça saklanır ve KNN aramasında parça parça okunur).
- PRAGMA mmap_size komutu ile bellek içi hız artırılabilir.
- Matryoshka gömme, değişken uzunluklu gömme ve int8/bit vektör desteği sayesinde ikili ve skaler nicemleme yapılabilir.
- Hız, doğruluk ve disk alanı üzerinde daha fazla kontrol.
- İlk aşamada yalnızca tam tarama vektör araması destekleniyor; ileride IVF + HNSW eklenecek.
Demo
- Tarayıcıda doğrudan sqlite-vec çalıştırılabilir (movies.bit.db SQLite veritabanı yüklenmiştir).
- articles tablosunda title, release_date, overview gibi sütunlar bulunur.
- vec_movies sanal tablosunda overview sütununa ait gömme vektörü saklanır (768 boyutlu bir ikili vektör, 96 bayt).
- KNN tipi bir aramayla seçilen filmle en benzer 10 film bulunabilir.
sqlite-vss'nin sorunları
- Sadece Linux + MacOS'ta çalışır (Windows, WASM, mobil cihazlar vb. desteklenmiyor).
- Vektörleri komple bellekte saklar.
- Transaction ile ilgili çok sayıda hata ve sorun bulunuyor.
- Derleme çok zor ve zaman alıcı.
- Genel vektör işlemlerinin (skaler/ikili nicemleme) eksikliği.
- Faiss'e bağlılıktan doğan sorunlar.
sqlite-vec geliştirme durumu
- Temel işlevler çalışıyor ancak hata yönetimi ve test neredeyse yok.
- sqlite-vec.c dosyasında 246 adet TODO var.
- Tüm TODO'lar tamamlandıktan sonra dokümantasyon, demo ve bağlayıcılarla birlikte sqlite-vec v0.1.0'ın yayınlanması planlanıyor (hedef yaklaşık bir ay).
GN⁺ görüşü
- Çeşitli platform ve ortamlarda çalışabilen gömülü bir vektör arama aracı olması cazip. Özellikle web tarayıcısında WASM ile çalışabilmesinin mümkün olması dikkat çekici.
- Bellek kontrolü, değişken uzunluklu gömme ve nicemleme gibi güncel vektör arama tekniklerini yansıtması da bir avantaj. Hız, doğruluk ve depolama alanını daha esnek şekilde kontrol edilebileceği görülüyor.
- Ancak yalnızca tam tarama ile arama desteği bir sınırlılık. Veri büyüdükçe arama hızıyla ilgili sorunlar ortaya çıkabilir. IVF+HNSW gibi ANN algoritmalarının eklenmesi acil görünüyor.
- Ayrıca proje hâlâ geliştirme başlangıcında olduğundan, üretimde kullanılmaya uygun gözükmüyor. Stabil hale gelene kadar biraz daha zaman gerekiyor.
- Faiss gibi mevcut vektör arama kütüphaneleriyle benchmark karşılaştırması da gerekli görünüyor. Saf bir SQLite uzantısı olmak avantajlı olsa da performans olarak doğrulanması gerekiyor.
1 yorum
Hacker News yorumları