• Cohere ได้เปิดเผยชุดข้อมูลที่ฝังเวกเตอร์ของ Wikipedia ทั้งหมดไว้แล้ว
  • เมื่อใช้ชุดข้อมูลนี้ บุคคลทั่วไปก็สามารถสร้างดัชนีเวกเตอร์แบบอิงความหมายของ Wikipedia ได้

ความท้าทาย

  • ขนาดของชุดข้อมูล (เฉพาะคอร์ปัสภาษาอังกฤษก็ 180GB) ไม่ใช่ปัญหา
  • ฐานข้อมูลเวกเตอร์แบบเดิมไม่สามารถทำดัชนีชุดข้อมูลที่ใหญ่กว่าหน่วยความจำได้
  • ไลบรารี JVector ใช้เวกเตอร์แบบบีบอัด จึงทำให้สามารถทำดัชนีชุดข้อมูลที่ใหญ่กว่าหน่วยความจำได้

ข้อกำหนด

  • ต้องใช้ Linux หรือ MacOS (Windows ใช้ไม่ได้เนื่องจากข้อจำกัดของ ChronicleMap)
  • ต้องมีพื้นที่ว่าง 180GB สำหรับชุดข้อมูล และอีก 90GB สำหรับดัชนี
  • ระหว่างการสร้างดัชนี ต้องมี RAM เพียงพอสำหรับรัน JVM ที่มี heap ขนาด 36GB
  • ต้องปิดการใช้งาน swap ก่อนเริ่มสร้างดัชนี

การสร้างดัชนีและการค้นหา

  • โคลนโปรเจกต์: $ git clone https://github.com/jbellis/coherepedia-jvector
  • ดาวน์โหลดชุดข้อมูล: python download.py
  • สร้างดัชนี: ./mvnw compile exec:exec@buildindex
  • รันเซิร์ฟเวอร์ค้นหา: ./mvnw compile exec:exec@serve แล้วเปิด http://localhost:4567 ในเบราว์เซอร์

หลักการทำงาน

  • สร้างดัชนีเวกเตอร์ด้วย JVector และเก็บข้อมูลบทความด้วย Chronicle Map
  • ใช้ Locally-Adaptive Quantization (LVQ) สำหรับการบีบอัดเวกเตอร์
  • ประมวลผลข้อมูลแบบขนานด้วย parallel stream

บทสรุป

  • ด้วยไลบรารี JVector การทำดัชนี Wikipedia ภาษาอังกฤษทั้งหมดบนโน้ตบุ๊กจึงกลายเป็นสิ่งที่ทำได้จริง
  • เมื่อนำไปใช้ร่วมกับบริการ DataStax Astra ก็สามารถใช้ความสามารถด้านการทำดัชนีอันทรงพลังที่รองรับการแทรก อัปเดต และลบแบบเรียลไทม์ได้

ความเห็นของ GN⁺

  • ความล้ำของ JVector: JVector ทำให้สามารถทำดัชนีชุดข้อมูลขนาดใหญ่ได้โดยไม่ติดข้อจำกัดของหน่วยความจำ ซึ่งอาจสร้างความเปลี่ยนแปลงครั้งใหญ่ให้กับวงการ data science และ search engine
  • การใช้งานจริง: เมื่อบุคคลทั่วไปสามารถทำดัชนี Wikipedia ทั้งหมดบนโน้ตบุ๊กได้ นักวิจัยและนักพัฒนาก็จะเข้าถึงและใช้ประโยชน์จากชุดข้อมูลขนาดใหญ่ได้ง่ายขึ้น
  • ข้อพิจารณาทางเทคนิค: การนำเทคโนโลยีนี้ไปใช้จำเป็นต้องมีพื้นที่ดิสก์และหน่วยความจำเพียงพอ รวมถึงการตั้งค่าระบบ เช่น การปิด swap
  • เทคโนโลยีทางเลือก: โปรเจกต์โอเพนซอร์สอื่นที่มีความสามารถคล้ายกัน ได้แก่ FAISS(Facebook AI Similarity Search) และ Annoy(Approximate Nearest Neighbors Oh Yeah)
  • การปรับแต่งประสิทธิภาพ: แม้จะสามารถเพิ่มประสิทธิภาพได้ด้วยการประมวลผลแบบขนานและเทคนิคการบีบอัดเวกเตอร์ แต่ก็ต้องระวังเรื่องการจัดการทรัพยากรของระบบด้วย

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น