برمجياتقراءة دقيقتين

Tiger Data تطلق pg_vectorsearch لـ PostgreSQL بفهرس يُبنى في 3 دقائق بدل 21.7 ساعة

أطلقت شركة Tiger Data إضافة جديدة لـ PostgreSQL اسمها pg_vectorsearch، تحتوي على فهرس للبحث في الـ vectors اسمه PRISM. وبحسب أرقام الشركة، عند مليون vector ودقة بحث 99%، يردّ PRISM في 15 مللي ثانية على ماكينة بذاكرة 2 جيجابايت، بينما يحتاج فهرس HNSW المستخدم في pgvector إلى 392 مللي ثانية على ماكينة بضعف الذاكرة.

والفرق في طريقة العمل. فـHNSW يبني graph يصل كل vector بجيرانه، والبحث فيه يتطلب قراءات عشوائية كثيرة، لذلك يجب أن يبقى الـ graph في الذاكرة. أما PRISM فيجمع الـ vectors المتشابهة في أقسام، ويخزّنها مضغوطة ومتراصة في صفحات قاعدة البيانات، فتصبح القراءة متسلسلة. والنتيجة بحسب الشركة فهرس أصغر بـ7 مرات واستعلام أسرع بـ40 مرة عند الدقة نفسها.

والرقم الأبرز يخص بناء الفهرس. فعلى ماكينة بذاكرة 4 جيجابايت، بنى PRISM الفهرس في نحو 3 دقائق، بينما استغرق HNSW نحو 21.7 ساعة. والسبب ليس بطء الخوارزمية، بل أن الـ graph لا يتسع في الذاكرة، فيتعثر البناء.

وعند 100 مليون vector، بنى PRISM الفهرس على ماكينة بذاكرة 128 جيجابايت في ساعة و40 دقيقة، وردّ في 6 مللي ثانية عند دقة 95% و21 مللي ثانية عند 99%. أما HNSW فلم يستطع البناء على هذه الماكينة إطلاقًا، واحتاج إلى ماكينة بذاكرة 512 جيجابايت، استغرق عليها 42 ساعة، وردّ في 8 مللي ثانية عند 95% دون أن يبلغ 99% بزمن مقبول. وتقول الشركة إن ماكينة r8i.16xlarge بذاكرة 512 جيجابايت تكلّف أربعة أضعاف r8i.4xlarge بذاكرة 128 جيجابايت في الساعة. وقيست أرقام HNSW كلها باستخدام halfvec بدقة 16 بت، وهو الإعداد الذي أعطاه أفضل نتيجة بحسب الشركة.

وللإضافة قيود واضحة. فهي ما زالت في مرحلة alpha، والمستودع نفسه يصفها بأنها للتجربة لا للإنتاج. كما أعلنت الشركة أن إضافتها السابقة pgvectorscale تدخل وضع الصيانة.

وإذا صمدت هذه الأرقام خارج اختبارات الشركة، فقد تتغير حسابات فرق كثيرة افترضت أن البحث الدلالي يحتاج قاعدة بيانات منفصلة وذاكرة مكلفة، بينما بياناتها موجودة في PostgreSQL أصلًا.

المصادر

  1. مقالة Tiger Data الرسمية
  2. المستودع على GitHub

من عدد الخميس 4 جمادى الأولى - 15 أكتوبر

أخبار ذات صلة

أخبار الخميس 4 جمادى الأولى - 15 أكتوبر