C ile cihaz üstü vektör veritabanı yaptım (LSM-tree + HNSW)
(github.com/beginner-jhj)Üniversite birinci sınıf öğrencisiyim; veritabanı motorlarının gerçekte nasıl çalıştığını merak ettiğim için 4 ay önce kendim yapmaya başladım. Başta öğrenme amaçlı bir LSM-tree anahtar-değer deposuydu; vektör katmanı ekleyip üzerine HNSW indeksi koyunca cihaz üstü bir vektör veritabanına dönüştü.
Tamamı C ile yazıldı ve harici bağımlılığı yok. Sunucu olmadan uygulamaya linklenip doğrudan cihaz içinde çalışan gömülü bir kütüphane; cihaz üstü RAG veya semantik aramayı hedefliyor.
Başlıca bileşenler:
- LSM-tree depolama (WAL + memtable + SST + compaction)
- HNSW vektör indeksi (yaklaşık en yakın komşu araması)
- ARM NEON SIMD mesafe çekirdekleri (float32 / int8, L2 / dot)
- Dize tabanlı sorgu API'si (filtrelerle birleştirilmiş vektör araması, FFI binding'leri için kolay)
Şu anda temel CRUD ve query işlevleri var.
Henüz v1 olduğu için optimizasyon ve tamamlanacak kısımlar mevcut (x86 desteği, eşzamanlılık, mobil binding'ler vb.); sınırlamalar ve yol haritası README'de yazıyor.
Adı livero (libero, İtalyanca "özgür" + vector). Sunucudan ve bağımlılıklardan özgür, cihaz üzerinde serbestçe çalışan bir vektör store anlamıyla adlandırdım :)
Henüz yorum yok.