22 คะแนน โดย xguru 2024-12-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ส่วนขยายการค้นหาเวกเตอร์ใหม่สำหรับ PostgreSQL เพื่อจัดการเวกเตอร์ขนาดใหญ่ได้อย่างคุ้มค่า
  • สำหรับเวกเตอร์ 100 ล้านรายการขนาด 768 มิติ สามารถทำได้ที่ QPS 131 และความแม่นยำ 0.95 สำหรับคิวรี top 10
    • รันบนเครื่องเดี่ยวได้ด้วยค่าใช้จ่าย $250 ต่อเดือน
  • จัดเก็บเวกเตอร์ 400,000 รายการได้ด้วย $1:
    • ถูกกว่า Pinecone (storage-optimized instance) 6 เท่า
    • ถูกกว่า pgvector 26 เท่า

ปัญหาของฐานข้อมูลเวกเตอร์ที่ใช้ HNSW(Hierarchical Navigable Small Worlds)

  • ใช้เวลาสร้างดัชนีนาน: ใช้เวลามากกว่า 2 ชั่วโมงสำหรับ 5 ล้านเรคอร์ด
  • ต้องการหน่วยความจำสูง: การเก็บเวกเตอร์ 10 ล้านรายการอาจต้องใช้สูงสุด 40GB

โซลูชันเชิงนวัตกรรมของ VectorChord: IVF+RaBitQ ที่เป็นมิตรกับดิสก์

  • ใช้การทำควอนไทซ์ด้วย IVF(inverted file index) และ RaBitQ
    • แปลงเวกเตอร์ 32 บิตให้เป็น การแทนค่าแบบบิตที่ถูกบีบอัด เพื่อลดต้นทุนการคำนวณ
    • การเปรียบเทียบส่วนใหญ่ใช้เวกเตอร์ที่ถูกบีบอัด และจะคำนวณแบบความละเอียดเต็มกับเวกเตอร์เพียงส่วนน้อยเพื่อรับประกันความแม่นยำ
  • ค้นหาได้เร็วและมีประสิทธิภาพกว่า HNSW:
    • RaBitQ บีบอัดเวกเตอร์เหลือ 1 บิต ทำให้ความเร็วในการคำนวณเพิ่มขึ้น 100 เท่า
    • ปรับแต่งความเร็วได้โดยยังคงรักษาความแม่นยำในระดับสูง

ผลเบนช์มาร์กหลัก

ชุดข้อมูล GIST (1M, 960 มิติ)

  • VectorChord มี QPS สูงกว่า 2 เท่า เมื่อเทียบกับ pgvector
  • ใช้วิธีทำ KMeans clustering บน GPU ภายนอกแล้วนำเข้ามายัง PostgreSQL
  • เวลาที่ใช้ในการทำดัชนีเวกเตอร์ 700,000 รายการบนอินสแตนซ์ AWS i4i.large (2 vCPUs, 16GB RAM): 186 วินาที
    • เร็วกว่า pgvector 16 เท่า
    • ความเร็วในการแทรกข้อมูลก็ เร็วกว่า 14 เท่า

ชุดข้อมูล LAION 5M

  • ทดสอบบนเครื่อง r6a.xlarge (4 vCPUs, 32GB RAM, 200GB EBS):
    • ยังคงตอบสนองได้รวดเร็วแม้ที่ ความแม่นยำสูง
    • ให้ประสิทธิภาพใกล้เคียงกันที่ค่าใช้จ่าย $165.56/เดือน และคุ้มค่ากว่าแพลตฟอร์มคู่แข่ง

ชุดข้อมูล LAION 100M

  • บนอินสแตนซ์ AWS i4i.xlarge (4 vCPUs, 32GB RAM, 937GB SSD):
    • QPS 16.2 @ recall 0.95 (อิงจากผลลัพธ์ top 10)
    • ในสภาพแวดล้อมแบบหลายเธรด พบว่า QPS เพิ่มขึ้นแบบเชิงเส้น ตามจำนวนคำขอที่เพิ่มขึ้น

จุดเด่นหลักของ VectorChord

  • ทำงานร่วมกับ physical replication และฟีเจอร์อื่น ๆ ของ PostgreSQL ได้
  • รองรับ การสร้างดัชนีภายนอก:
    • สร้างดัชนีบนเครื่องที่ทรงพลังกว่า แล้วนำเข้ามายังเครื่องขนาดเล็กเพื่อรันคิวรี
    • รองรับเวกเตอร์ได้ หลายพันล้านรายการ บนเครื่องเดี่ยว
  • ต้นทุนต่ำ ประสิทธิภาพสูง: ลดค่าใช้จ่ายรายเดือนได้มากเมื่อเทียบกับแพลตฟอร์มคู่แข่ง

สรุปและข้อมูลเพิ่มเติม

  • VectorChord มอบการค้นหาเวกเตอร์ที่มีประสิทธิภาพในสภาพแวดล้อม PostgreSQL
  • ใช้ IVF และการทำควอนไทซ์แบบ RaBitQ เพื่อปรับแต่งความเร็วและการใช้หน่วยความจำ จึงเหมาะกับชุดข้อมูลขนาดใหญ่
  • บริการคลาวด์แบบมีการจัดการ: PGVecto.rs Cloud
    • ดีพลอยและขยายระบบได้อย่างง่ายดาย

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

 
xguru 2024-12-10

Vector คือ JSON ตัวใหม่ของ PostgreSQL
pgvector ที่อ้างถึงในบทความข้างต้น กับ pgvecto.rs ซึ่งเป็นรุ่นก่อนหน้าของ VectorChord นั้นเป็นส่วนขยายคนละตัวกัน
pgvector vs. pgvecto.rs in 2024: A Comprehensive Comparison for Vector Search in PostgreSQL

ทีมที่สร้าง pgvecto.rs ได้สร้าง VectorChord ขึ้นมาและกำลังดูแลทั้งสองตัวร่วมกัน โดยตอนนี้ฟีเจอร์ทั้งหมดยังย้ายมาอยู่บน VectorChord ไม่ครบครับ และเขาบอกว่าประมาณปีหน้าจะยุติการซัพพอร์ต pgvecto.rs แล้วเปลี่ยนไปใช้ VectorChord

ใครที่เก็บเวกเตอร์บน Postgres อยู่ ลองใช้เป็นข้อมูลอ้างอิงได้ครับ