オンデバイス向けベクターデータベースをCで作りました(LSM-tree + HNSW)
(github.com/beginner-jhj)大学1年生で、データベースエンジンが実際にどう動くのか気になって、4か月前に自分で作り始めました。最初は学習用のLSM-treeキー・バリューストアでしたが、ベクターレイヤーを追加し、HNSWインデックスを載せることで、オンデバイス向けベクターデータベースになりました。
すべてCで書かれており、外部依存はありません。サーバーなしでアプリにリンクしてデバイス内でそのまま動く埋め込みライブラリで、オンデバイスRAGやセマンティック検索を目標にしています。
主な構成:
- LSM-treeストレージ(WAL + memtable + SST + compaction)
- HNSWベクターインデックス(近似最近傍検索)
- ARM NEON SIMD距離カーネル(float32 / int8, L2 / dot)
- 文字列ベースのクエリAPI(フィルタを組み合わせたベクター検索、FFIバインディングが容易)
現在の機能としては、基本的なCRUDとquery機能があります。
まだv1なので、最適化や埋めるべき部分が残っており(x86対応、並行性、モバイルバインディングなど)、制約やロードマップはREADMEに書いてあります。
名前はlivero(libero、イタリア語で「自由な」 + vector)です。サーバーからも、依存関係からも自由で、デバイス上で自由に動くベクターストアという意味を込めて名付けました :)
まだコメントはありません。