6 คะแนน โดย GN⁺ 2025-05-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • VectorVFS จัดเก็บเวกเตอร์เอ็มเบดดิงเป็นเมตาดาต้าของแต่ละไฟล์ ทำให้สามารถใช้ระบบไฟล์ลินุกซ์เองเป็น ฐานข้อมูลเวกเตอร์ ได้
  • ไม่ต้องมีดัชนีภายนอกหรือ DB, โดยอาศัยความสามารถ xattrs (แอตทริบิวต์แบบขยาย) ของระบบไฟล์เพื่อทำ การทำดัชนีแบบแทบไม่มีโอเวอร์เฮด
  • สามารถ ค้นหาไฟล์ที่คล้ายกันผ่านการค้นหาเอ็มเบดดิง ได้ และไม่ผูกติดกับโมเดลใดโมเดลหนึ่ง จึงเชื่อมต่อกับโมเดลเอ็มเบดดิงได้หลากหลาย
  • ใช้ Perception Encoders (PE) ของ Meta เพื่อ สร้างเวกเตอร์เอ็มเบดดิงจากภาพ/วิดีโอ ซึ่งให้ประสิทธิภาพแบบ zero-shot สูงกว่าโมเดลอื่น
  • มี โครงสร้างที่เบาและพกพาได้ ใช้งานได้ทันทีโดยไม่ต้องมีดีมอนหรือบริการแยกต่างหาก

บทนำ

  • VectorVFS เป็น ไลบรารี Python ขนาดเบา ที่ทำให้สามารถ จัดเก็บและค้นหาเอ็มเบดดิงของไฟล์ ได้ด้วยความสามารถพื้นฐานของระบบไฟล์ลินุกซ์เพียงอย่างเดียว
  • โดยไม่ต้องมีฐานข้อมูลภายนอก จะจัดเก็บค่าเอ็มเบดดิงไว้ใน แอตทริบิวต์แบบขยาย (xattrs) ของแต่ละไฟล์
  • สามารถคงโครงสร้างไดเรกทอรีเดิมไว้ได้ พร้อมทั้งขยายให้เป็น ระบบที่รองรับการค้นหาเชิงความหมาย

ฟีเจอร์หลัก

  • Zero-overhead indexing

    • จัดเก็บเวกเตอร์เอ็มเบดดิงเป็น xattr ของไฟล์โดยตรง
    • ไม่ต้องใช้บริการทำดัชนีภายนอกหรือพื้นที่จัดเก็บเพิ่มเติม โดยมีอยู่เป็นเมตาดาต้าข้างไฟล์เท่านั้น
  • Seamless retrieval

    • สามารถทำ การค้นหาความคล้ายคลึงแบบเวกเตอร์ กับทั้งระบบไฟล์ได้
    • ตัวอย่าง: ค้นหาไฟล์ภาพที่คล้ายกันได้ด้วยรูปแบบอย่าง find_similar_images('example.jpg')
  • Flexible embedding support

    • ใช้โมเดล Perception Encoders (PE) ของ Meta เป็นค่าเริ่มต้น
    • ในอนาคตรองรับโมเดลเอ็มเบดดิงได้หลากหลายยิ่งขึ้น (เช่น ข้อความ เสียง มัลติโหมด)
    • โมเดลเอ็มเบดดิงที่ผู้ใช้กำหนดเองก็สามารถเชื่อมต่อได้ในรูปแบบปลั๊กอิน
  • Lightweight and portable

    • ทำงานบนความสามารถ Linux VFS (xattr) จึงไม่ต้องตั้งค่าดีมอนหรือเซิร์ฟเวอร์แยก
    • เป็น แนวทางที่พกพาได้ ใช้งานได้ทั้งกับไดเรกทอรีในเครื่องหรือสตอเรจภายนอก
  • โมเดลเอ็มเบดดิงที่ใช้: Meta Perception Encoders

    • PE คือ โมเดล vision-language สำหรับภาพ/วิดีโอ ที่ Meta เปิดตัว
    • มี ประสิทธิภาพแบบ zero-shot ที่ดีกว่า โมเดลคู่แข่งอย่าง InternVL3, Qwen2.5VL และ SigLIP2
    • ในอนาคตจะมีการเพิ่มโมเดลเอ็มเบดดิงแบ็กเอนด์อื่น ๆ อีก

สรุป

  • สามารถสร้าง ระบบเวกเตอร์ที่ค้นหาเชิงความหมายได้ โดยยังคง โครงสร้างไฟล์เดิม ไว้
  • แทบไม่มีต้นทุนในการจัดเก็บเอ็มเบดดิง และทำงานได้โดยไม่ต้องมีโครงสร้างพื้นฐานแยก
  • เหมาะสำหรับ การรับประกันความเป็นส่วนตัวและการทำระบบค้นหา บนอุปกรณ์ออฟไลน์/เอดจ์

1 ความคิดเห็น

 
GN⁺ 2025-05-06
ความคิดเห็นบน Hacker News
  • การเปรียบเทียบกับ Vector Database ทำให้สับสนอยู่บ้าง เพราะโดยปกติฐานข้อมูลหมายถึงการมีดัชนีและรองรับการคิวรี

    • การเก็บ embeddings เป็นไฟล์เป็นแนวคิดที่น่าสนใจ บางฟอร์แมตไฟล์ (EXIF) ก็ใช้อยู่แล้ว แต่ถ้าจะประมวลผลในขนาดใหญ่ก็ยังต้องมีฐานข้อมูลจริง
    • โจทย์คือการรองรับโมเดลและฟอร์แมต embedding ที่หลากหลายเพื่อเพิ่มการพกพาข้อมูล ควรจะใส่ไฟล์เข้าไปในระบบไหนก็ได้แล้ว embeddings ถูกรวมเข้าด้วยกันอย่างราบรื่น
  • แนวคิดคือแนบเมทาดาทาไว้กับไฟล์ เพื่อให้เครื่องมือที่เข้าใจ LLMs หรือเวกเตอร์ embedding เข้าใจไฟล์ได้โดยไม่ต้องอ่านเนื้อหาของไฟล์

    • มีกรณีใช้งานที่น่าสนใจหลายแบบ เช่น ค้นหาไฟล์ซิสเต็มอย่างรวดเร็วด้วยพรอมป์ต์อย่าง "เปิดวิดีโอตอนที่ไปแคมป์เมื่อเดือนที่แล้วแล้วเห็นฝูงไก่งวง" แต่ในทางปฏิบัติก็ยังต้องมี vector DB จริงรันอยู่ในระบบ
  • การเพิ่ม Weaviate และ flat-index ให้เป็นตัวเลือกในโปรเจ็กต์ก็น่าสนใจ

    • เป็นแบบ disk-based ทั้งหมดโดยไม่ใช้บริการภายนอก และค้นหาได้ทั้งไฟล์ซิสเต็ม (ประมาณ 1.5kb ต่อไฟล์, 384 มิติ)
  • เป็นไอเดียที่ยอดเยี่ยม

    • เอกสารควรมีข้อมูลมากกว่านี้ เช่น รองรับ GPU backend อะไรบ้าง และจะลบข้อมูล embedding อย่างไร
    • น่าลองใช้งาน
  • ถ้า VectorVFS ซ่อนตรรกะการค้นหาไว้หลัง embeddings ที่ไม่โปร่งใส ก็สงสัยว่าผู้ใช้จะดีบักได้อย่างไรว่าทำไมไฟล์หนึ่งถึงถูกแสดงขึ้นมา หรือทำไมถึงไม่ถูกแสดง

  • ข้อถกเถียงเก่าแก่ระหว่างไฟล์ซิสเต็มกับฐานข้อมูลน่าสนใจเสมอ อ่านอะไรแบบนี้ทีไรก็มักมีคำถามมากขึ้นทุกครั้ง

  • เคยทำอะไรคล้ายกัน แต่ใช้ข้อกำหนดของ EXT4

    • hard link (สำหรับแบ็กอัปใช้ได้แค่ tar)
    • ขนาดไฟล์เล็ก (inodes หมดก่อนพื้นที่ดิสก์)
    • มีประโยชน์กับข้อมูลเรียลไทม์ที่กระจายอยู่ทั่วโลก โดย P ใน CAP ไม่จำเป็นสำหรับการเขียน
  • เป็นไอเดียที่สนุกดีในการเก็บ embeddings ไว้ใน inode ฉลาดมาก

    • แต่ไม่ใช่สิ่งที่ใช้เป็น vector database ได้จริง เพราะไม่มีแนวคิดเรื่อง search index ค้นหาแบบเชิงเส้น O(N) ทุกไฟล์
    • ถึงอย่างนั้นก็ยังเป็นไอเดียที่สนุกดี
  • เมื่อหลายปีก่อนเคยศึกษาสิ่งที่คล้ายกัน โดยเก็บ embeddings ไว้ใน xattrs