SQLite Vector Extension ก่อให้เกิดข้อถกเถียงเรื่องลิขสิทธิ์แม้จะอ้างประสิทธิภาพที่ดี

ทีมชุมชน BigGo
SQLite Vector Extension ก่อให้เกิดข้อถกเถียงเรื่องลิขสิทธิ์แม้จะอ้างประสิทธิภาพที่ดี

ส่วนขยาย SQLite ใหม่ที่เรียกว่า sqlite-vector ได้เกิดขึ้นมา โดยสัญญาว่าจะให้ความสามารถในการค้นหาเวกเตอร์ที่เร็วกว่าสำหรับนักพัฒนาที่ทำงานกับ embeddings และการค้นหาความคล้ายคลึง อย่างไรก็ตาม โครงการนี้ได้จุดประกายการถกเถียงอย่างรุนแรงในชุมชนไม่ใช่เกี่ยวกับคุณค่าทางเทคนิค แต่เกี่ยวกับแนวทางการออกใบอนุญาตที่ทำให้เส้นแบ่งระหว่างซอฟต์แวร์โอเพนซอร์สและซอฟต์แวร์กรรมสิทธิ์เบลอ

ส่วนขยาย sqlite-vector ถูกสร้างขึ้นเพื่อแก้ไขข้อจำกัดในโซลูชันการค้นหาเวกเตอร์ SQLite ที่มีอยู่ ตัวเลือกปัจจุบันเช่น sqlite-vec ต้องการการตั้งค่าตารางเสมือนที่ซับซ้อน ในขณะที่การใช้งาน HNSW ของ libsql อาจใช้เวลาหลายชั่วโมงในการสร้างดัชนี ส่วนขยายใหม่นี้มีเป้าหมายที่จะให้ทางเลือกกลางๆ ด้วยการค้นหาแบบ brute-force ที่ปรับให้เหมาะสมซึ่งสามารถจัดการเวกเตอร์หลายล้านตัวได้อย่างมีประสิทธิภาพบนฮาร์ดแวร์ทั่วไปเช่นแล็ปท็อปและเซิร์ฟเวอร์ขนาดเล็ก

ความสับสนเรื่องลิขสิทธิ์สร้างการต่อต้านจากชุมชน

ประเด็นที่ถกเถียงกันมากที่สุดเกี่ยวกับ sqlite-vector คือกลยุทธ์การออกใบอนุญาต แม้ว่านักพัฒนาจะอ้างว่าเป็นฟรีทั้งหมดสำหรับโครงการโอเพนซอร์ส แต่ส่วนขยายนี้ใช้ Elastic License 2.0 พร้อมกับการให้สิทธิ์เพิ่มเติมสำหรับการใช้งานโอเพนซอร์ส แนวทางนี้ได้รับการวิพากษ์วิจารณ์อย่างรุนแรงจากชุมชนนักพัฒนา ซึ่งโต้แย้งว่าการเรียกโครงการนี้ว่าโอเพนซอร์สนั้นเป็นการทำให้เข้าใจผิด

ปัญหาหลักอยู่ที่ความเข้ากันได้ของลิขสิทธิ์ แม้จะมีการให้สิทธิ์เพิ่มเติมที่อนุญาตให้ใช้ในโครงการโอเพนซอร์ส นักพัฒนาก็ไม่สามารถออกใบอนุญาตส่วนขยายนี้ใหม่ภายใต้ลิขสิทธิ์โอเพนซอร์สมาตรฐานเช่น Apache 2.0 หรือ MIT ได้ นี่หมายความว่าโครงการโอเพนซอร์สที่แท้จริงที่รวม sqlite-vector เข้าไปจะสูญเสียสถานะโอเพนซอร์ส ทำให้เกิดผลกระทบการปนเปื้อนของลิขสิทธิ์

หากโครงการโอเพนซอร์สของฉันรวมแง่มุมของโครงการนี้เข้าไป พวกมันก็จะไม่ใช่โอเพนซอร์สอีกต่อไป!

สมาชิกชุมชนได้ติดป้ายแนวทางนี้ว่าเป็น source available มากกว่าโอเพนซอร์สที่แท้จริง โดยวิพากษ์วิจารณ์ว่าเป็นความพยายามที่จะได้รับความน่าเชื่อถือของโอเพนซอร์สโดยไม่มีเสรีภาพที่แท้จริงที่ลิขสิทธิ์โอเพนซอร์สให้

การเปรียบเทียบใบอนุญาต

  • sqlite-vec: ใช้ใบอนุญาตแบบคู่ภายใต้ Apache 2.0 และ MIT (โอเพนซอร์สแท้จริง)
  • sqlite-vector: ใช้ Elastic License 2.0 พร้อมสิทธิ์เพิ่มเติมสำหรับโครงการโอเพนซอร์ส (ซอร์สโค้ดเปิดให้ใช้ได้)
  • libsql: เป็นโอเพนซอร์ส แต่ต้องใช้เวลาหลายชั่วโมงในการสร้างดัชนีสำหรับการใช้งาน HNSW

การอ้างประสิทธิภาพแสดงให้เห็นความหวัง

แม้จะมีข้อถกเถียงเรื่องลิขสิทธิ์ แต่ประสิทธิภาพทางเทคนิคของ sqlite-vector ดูน่าประทับใจ การทดสอบเกณฑ์มาตรฐานโดยใช้เวกเตอร์ 100,000 ตัวขนาด 384 มิติบน Apple M1 Pro แสดงการปรับปรุงที่สำคัญเมื่อเทียบกับโซลูชันที่มีอยู่ ส่วนขยายนี้ทำได้เวลาการแทรกที่เร็วกว่า 50% เมื่อเทียบกับ sqlite-vec และประสิทธิภาพการสืบค้นที่เร็วกว่า 16% ในการดำเนินการมาตรฐาน

ประสิทธิภาพที่เพิ่มขึ้นจริงๆ มาจากคุณสมบัติ quantization ของส่วนขยาย เมื่อเปิดใช้งาน 8-bit quantization การสืบค้นทำงานเร็วกว่าแนวทางมาตรฐานสามเท่า เมื่อรวมกับการโหลดหน่วยความจำล่วงหน้า เวลาการสืบค้นลดลงเหลือต่ำกว่า 4 มิลลิวินาที - เร็วกว่า sqlite-vec ประมาณ 17 เท่าในขณะที่ยังคงความแม่นยำในการเรียกคืนที่สมบูรณ์แบบ การใช้หน่วยความจำยังคงอยู่ในระดับที่เหมาะสมที่ 37 เมกะไบต์สำหรับเวกเตอร์ 100,000 ตัว ทำให้เหมาะสมสำหรับสภาพแวดล้อมที่มีทรัพยากรจำกัด

ส่วนขยายนี้ยังทำให้การออกแบบฐานข้อมูลง่ายขึ้นโดยอนุญาตให้เก็บเวกเตอร์ในตารางปกติพร้อมกับข้อมูลอื่นๆ ทำให้ไม่จำเป็นต้องใช้การดำเนินการ JOIN ที่ซับซ้อนที่โซลูชันอื่นต้องการ

การเปรียบเทียบประสิทธิภาพ (100,000 เวกเตอร์, 384 มิติ)

เมตริก sqlite-vec sqlite-vector sqlite-vector (quantized)
เวลาในการแทรกข้อมูล 1179.07 มิลลิวินาที 563.04 มิลลิวินาที 563.04 มิลลิวินาที
เวลาในการสืบค้น 67.84 มิลลิวินาที 56.65 มิลลิวินาที 17.44 มิลลิวินาที
การใช้หน่วยความจำ N/A N/A 37.38 MB
Recall@20 N/A N/A 1.0000 (สมบูรณ์แบบ)

ข้อกังวลเรื่องเครื่องหมายการค้าเพิ่มอีกชั้นหนึ่ง

นอกเหนือจากปัญหาลิขสิทธิ์แล้ว โครงการนี้ยังทำให้เกิดความกังวลเกี่ยวกับการใช้เครื่องหมายการค้า SQLite นักพัฒนาดำเนินงานภายใต้โดเมน sqlite.ai และชื่อบริษัท SQLite Cloud, Inc. ทำให้เกิดความกังวลเกี่ยวกับความสับสนของผู้บริโภคที่อาจเกิดขึ้น อย่างไรก็ตาม ทีมงานอ้างว่าได้รับการสนับสนุนจากผู้เขียนต้นฉบับของ SQLite คือ Dr. Richard Hipp และมีสิทธิ์เต็มที่ในการใช้ชื่อ SQLite

โซลูชันทางเลือกยังคงได้รับความนิยม

เนื่องจากข้อกังวลเรื่องลิขสิทธิ์ นักพัฒนาจำนวนมากยังคงใช้ทางเลือกที่มีอยู่ ส่วนขยาย sqlite-vec แม้จะช้ากว่าในการทดสอบเกณฑ์มาตรฐาน แต่ก็เสนอลิขสิทธิ์โอเพนซอร์สที่แท้จริงภายใต้ลิขสิทธิ์ Apache 2.0 และ MIT สมาชิกชุมชนยังสังเกตว่าข้อจำกัดของ sqlite-vec ไม่ได้รุนแรงอย่างที่แสดงไว้ในตอนแรก โดยการอัปเดตล่าสุดอนุญาตให้เรียกใช้ฟังก์ชันระยะทางโดยตรงโดยไม่ต้องใช้ตารางเสมือนแยกต่างหาก

ข้อถกเถียงเรื่อง sqlite-vector เน้นย้ำความตึงเครียดที่กำลังดำเนินอยู่ระหว่างความยั่งยืนทางการค้าและหลักการโอเพนซอร์สในพื้นที่เครื่องมือนักพัฒนา แม้ว่าการปรับปรุงประสิทธิภาพของส่วนขยายจะน่าสังเกต แต่แนวทางการออกใบอนุญาตได้สร้างอุปสรรคต่อการยอมรับที่อาจจำกัดผลกระทบในชุมชนโอเพนซอร์ส

อ้างอิง: The State of Vector Search in SQLite