ผมสร้างฐานข้อมูลเวกเตอร์แบบ on-device ด้วยภาษา C (LSM-tree + HNSW)
(github.com/beginner-jhj)ผมเป็นนักศึกษาปี 1 และเมื่อ 4 เดือนก่อนเริ่มลองสร้างเอง เพราะสงสัยว่าเอนจินฐานข้อมูลทำงานจริง ๆ อย่างไร ตอนแรกเป็น LSM-tree key-value store สำหรับการเรียนรู้ แต่เมื่อเพิ่มเลเยอร์เวกเตอร์และใส่ดัชนี HNSW เข้าไป ก็กลายเป็นฐานข้อมูลเวกเตอร์แบบ on-device
เขียนทั้งหมดด้วยภาษา C และไม่มี dependency ภายนอก เป็นไลบรารีแบบ embedded ที่ลิงก์เข้ากับแอปได้โดยไม่ต้องมีเซิร์ฟเวอร์ และรันได้โดยตรงภายในอุปกรณ์ จึงตั้งเป้าไว้สำหรับ on-device RAG หรือ semantic search
องค์ประกอบหลัก:
- LSM-tree storage (WAL + memtable + SST + compaction)
- HNSW vector index (approximate nearest neighbor search)
- ARM NEON SIMD distance kernels (float32 / int8, L2 / dot)
- API สำหรับ query แบบใช้สตริง (ค้นหาเวกเตอร์ร่วมกับฟิลเตอร์, ทำ FFI binding ได้ง่าย)
ฟีเจอร์ปัจจุบันมี CRUD พื้นฐานและฟังก์ชัน query
ยังเป็น v1 จึงยังมีส่วนที่ต้องปรับแต่งและเติมให้ครบ (รองรับ x86, concurrency, mobile bindings ฯลฯ) โดยข้อจำกัดและ roadmap ระบุไว้ใน README
ชื่อคือ livero (libero ภาษาอิตาลีแปลว่า “อิสระ” + vector) ตั้งชื่อนี้เพื่อสื่อถึง vector store ที่เป็นอิสระจากเซิร์ฟเวอร์และ dependency และรันได้อย่างอิสระบนอุปกรณ์ :)
ยังไม่มีความคิดเห็น