22 điểm bởi xguru 2024-12-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • Một tiện ích mở rộng tìm kiếm vector mới cho PostgreSQL nhằm quản lý lượng vector lớn với chi phí hiệu quả
  • Với 100 triệu vector 768 chiều, có thể đạt QPS 131 ở truy vấn top 10 với độ chính xác 0,95
    • Có thể chạy trên một máy đơn với chi phí 250 USD/tháng
  • Có thể lưu 400.000 vector với giá 1 USD:
    • Rẻ hơn 6 lần so với Pinecone (instance tối ưu cho lưu trữ)
    • Rẻ hơn 26 lần so với pgvector

Vấn đề của cơ sở dữ liệu vector dựa trên HNSW(Hierarchical Navigable Small Worlds)

  • Thời gian tạo chỉ mục dài: mất hơn 2 giờ cho 5 triệu bản ghi
  • Yêu cầu bộ nhớ cao: cần tới 40GB khi lưu 10 triệu vector

Giải pháp đột phá của VectorChord: IVF+RaBitQ thân thiện với đĩa

  • Sử dụng lượng tử hóa IVF (inverted file index)RaBitQ
    • Chuyển vector 32-bit thành biểu diễn bit nén để giảm chi phí tính toán
    • Phần lớn phép so sánh dùng vector nén, và chỉ thực hiện tính toán đầy đủ độ chính xác cho một số ít vector để đảm bảo độ chính xác
  • Tìm kiếm nhanh và hiệu quả hơn HNSW:
    • RaBitQ nén vector xuống 1 bit, giúp tăng tốc tính toán 100 lần
    • Có thể tối ưu tốc độ trong khi vẫn duy trì độ chính xác cao

Kết quả benchmark chính

Bộ dữ liệu GIST (1M, 960 chiều)

  • VectorChord có QPS cao gấp 2 lần so với pgvector
  • Tận dụng cách làm chạy phân cụm KMeans trên GPU bên ngoài rồi nhập vào PostgreSQL
  • Thời gian lập chỉ mục cho 700.000 vector trên instance AWS i4i.large (2 vCPU, 16GB RAM): 186 giây
    • Nhanh hơn 16 lần so với pgvector
    • Tốc độ chèn cũng nhanh hơn 14 lần

Bộ dữ liệu LAION 5M

  • Thử nghiệm trên máy r6a.xlarge (4 vCPU, 32GB RAM, 200GB EBS):
    • Vẫn duy trì phản hồi nhanh ngay cả ở độ chính xác cao
    • Cung cấp hiệu năng tương đương với chi phí 165,56 USD/tháng, hiệu quả chi phí hơn các nền tảng cạnh tranh

Bộ dữ liệu LAION 100M

  • Trên instance AWS i4i.xlarge (4 vCPU, 32GB RAM, 937GB SSD):
    • QPS 16,2 @ recall 0,95 (theo top 10 kết quả)
    • Quan sát thấy QPS tăng tuyến tính theo số lượng yêu cầu trong môi trường đa luồng

Ưu điểm chính của VectorChord

  • Tương thích với physical replication và các tính năng khác của PostgreSQL
  • Hỗ trợ tạo chỉ mục bên ngoài:
    • Tạo chỉ mục trên máy mạnh hơn, rồi nhập vào máy nhỏ hơn để chạy truy vấn
    • Có thể hỗ trợ hàng tỷ vector trên một máy đơn
  • Chi phí thấp, hiệu năng cao: giảm đáng kể chi phí hàng tháng so với các nền tảng cạnh tranh

Tóm tắt và thông tin thêm

  • VectorChord cung cấp tìm kiếm vector hiệu quả trong môi trường PostgreSQL
  • Tối ưu tốc độ và mức sử dụng bộ nhớ cho bộ dữ liệu lớn thông qua lượng tử hóa IVF và RaBitQ
  • Dịch vụ cloud managed: PGVecto.rs Cloud
    • Dễ triển khai và có thể mở rộng

1 bình luận

 
xguru 2024-12-10

Vector là JSON mới của PostgreSQL
pgvector được trích dẫn trong bài viết trên và pgvecto.rs, tiền thân của VectorChord, là hai extension khác nhau.
pgvector vs. pgvecto.rs in 2024: So sánh toàn diện cho tìm kiếm vector trong PostgreSQL

Đội ngũ tạo ra pgvecto.rs đã phát triển VectorChord và đang quản lý song song cả hai; hiện vẫn còn những tính năng chưa được chuyển hết sang VectorChord. Họ cho biết khoảng năm sau sẽ ngừng hỗ trợ pgvecto.rs và chuyển sang VectorChord.

Những ai đang lưu trữ vector trong Postgres có thể tham khảo.