pgvector مقابل Qdrant: اختبار أداء على 100 000 متجه بأبعاد 1536

نشر موقع Machine Learning Mastery اختبار أداء عمليًا لإضافة pgvector الخاصة بـ Postgres وقاعدة البيانات المتجهية المتخصصة Qdrant. يعمل النظامان داخل Docker على حاسوب محمول، ويستقبلان 100 000 متجه مُطبَّع بأبعاد 1536 نفسها، وبإعدادات فهرس HNSW نفسها. أهم ما في المنهجية أن القيم m=16 وef_construction=64 وef_search=64 مضبوطة بالتساوي في النظامين، وأن الاستعلامات تُنفَّذ على 200 متجه جديد غير موجود في مجموعة البيانات. بهذا تقتصر المقارنة على البنية المعمارية لا على اختلاف الإعدادات. وتُقاس المؤشرات p50 وp95 وp99 وQPS. • تعمل pgvector 0.8.6 مع Postgres 13 وما بعده، وتدعم خمسة مقاييس للمسافة • شملت المراجعة المقارنة Pinecone وQdrant وWeaviate وMilvus وChromaDB • يكفي لتشغيل الاختبار 8 غيغابايت من ذاكرة RAM وPython 3.10+

معالج بواسطة الذكاء الاصطناعي من Machine Learning Mastery؛ بتحرير Hamidun News
pgvector مقابل Qdrant: اختبار أداء على 100 000 متجه بأبعاد 1536
المصدر: Machine Learning Mastery. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليMachine Learning Mastery ↗
رئيس التحرير
حقيقة رئيسية #1تعمل pgvector 0.8.6 مع Postgres 13 وما بعده، وتدعم خمسة مقاييس للمسافة
حقيقة رئيسية #2شملت المراجعة المقارنة Pinecone وQdrant وWeaviate وMilvus وChromaDB
حقيقة رئيسية #3يكفي لتشغيل الاختبار 8 غيغابايت من ذاكرة RAM وPython 3.10+

عادةً ما يدور الجدل حول «Postgres مع إضافة أم قاعدة بيانات متجهية مستقلة» على مستوى التصريحات الواثقة. اقترح موقع Machine Learning Mastery استبدال هذه التصريحات بقياس فعلي: يعمل pgvector وQdrant داخل Docker على جهاز واحد، ويستقبلان 100 000 متجه بأبعاد 1536 نفسها (وهي أبعاد OpenAI text-embedding-3-small)، وبإعدادات فهرس HNSW نفسها. وتُقرأ النتيجة عبر أربعة مؤشرات: زمن الاستجابة الوسيط p50، وزمنا الذيل p95 وp99، وعدد الاستعلامات في الثانية.

جدل بلا أرقام

القصة المعتادة تسير على هذا النحو. تضيف فرقة العمل يوم الثلاثاء pgvector إلى قاعدة Postgres تعمل بالفعل، فتصبح التضمينات (embeddings) إلى جانب البيانات العلائقية، ويتولى استعلام واحد التصفية والبحث عن التشابه معًا. وبعد ستة أشهر تصل رسالة من أحد الموردين: حان وقت الانتقال إلى قاعدة بيانات متجهية «حقيقية» قبل أن يبلغ النظام سقف قدرته. لا يوجد في الرسالة اختبار أداء، بل ثقة فقط.

pgvector إضافة مفتوحة المصدر لـ Postgres، وإصدارها الحالي 0.8.6، وتدعم Postgres 13 وما بعده. تضيف الإضافة نوع البيانات الأصلي vector، وبحثًا دقيقًا وتقريبيًا عن أقرب الجيران. يُخزَّن المتجه في الجدول نفسه الذي يحتوي السجل الذي يصفه، وإن شئت في الصف نفسه، ويُستعلَم عنه بلغة SQL المعتادة. لا توجد خدمة منفصلة، ولا حاجة إلى مزامنة مصدر بيانات ثانٍ، ولا انتقال عبر الشبكة بين الجزء العلائقي والجزء المتجهي. وتدعم الإضافة المتجهات بدقة أحادية ونصفية، والمتجهات الثنائية والمتناثرة، إضافةً إلى خمس دوال للمسافة: L2 والجداء السلمي وجيب التمام وL1 ومسافة هامينغ.

خمس قواعد متخصصة تُقارَن بها Postgres

القاعدة المتجهية المتخصصة خدمة منفصلة بعمليتها ومخزنها الخاص، صُمّمت للبحث المتجهي من الأساس. وثمن هذا الخيار واضح: يلزم نشر نظام جديد ومراقبته وإنشاء نسخ احتياطية له ومزامنته مع مصدر الحقيقة. يستعرض الكاتب خمسة من أشهر الخيارات:

  • Pinecone — قاعدة سحابية مُدارة بالكامل ولا تتطلب إعدادًا، موجَّهة لنطاق المؤسسات بأدنى قدر من أعباء التشغيل.
  • Qdrant — قاعدة عالية الأداء مكتوبة بلغة Rust، وتتميز بسرعة الاستعلامات مع التصفية المعقدة وفق حمولة JSON.
  • Weaviate — نظام مفتوح المصدر موجَّه للذكاء الاصطناعي، ويوفر تحويلًا مدمجًا إلى متجهات وبحثًا هجينًا مع BM25.
  • Milvus — قاعدة موزعة مع تسريع عبر GPU للأحمال الضخمة التي تبلغ مليارات المتجهات.
  • ChromaDB — قاعدة خفيفة قابلة للتضمين للنمذجة الأولية المحلية والتطوير بلغة Python.

اختير Qdrant للمقارنة العملية، لأنه صاحب أوفى اختبار أداء علني وأوضحه منهجيًا في مواجهة pgvector، وهو الاختبار الذي تستند إليه المادة.

كيف يُبنى قياس نزيه

يُشغَّل Postgres 17 مع الإضافة من الصورة pgvector/pgvector:pg17، ويُشغَّل Qdrant بأمر docker run واحد على المنفذين 6333 و6334. تبلغ الأبعاد 1536 في النظامين، ويُستخدم مقياس جيب التمام. مجموعة البيانات اصطناعية: 100 000 متجه مولَّدة من توزيع طبيعي بقيمة seed=42 ثابتة، ومُطبَّعة إلى طول الوحدة كما تفعل نماذج التضمين الحقيقية. تُحمَّل البيانات إلى Qdrant على دفعات من 1000 نقطة، وإلى Postgres عبر محوّل pgvector-python.

القرار الجوهري: الفهرسان متطابقان. ففي pgvector يُنشأ فهرس HNSW بالقيمتين m=16 وef_construction=64 (وهما قيمه الافتراضية)، وفي Qdrant تُضبط القيم نفسها عبر HnswConfigDiff. ويقول الكاتب صراحةً إن المقارنة بمعاملات فهرس مختلفة تعطي نتيجتين لا يمكن مقارنتهما. وعلى جانب الاستعلام، تساوي قيمة hnsw.ef_search أيضًا 64، وحد النتائج المعادة 10.

تُنفَّذ الاستعلامات على 200 متجه جديد غير موجود في المجموعة المحمَّلة. ولولا ذلك لوجد المتجه الموجود أصلًا في الفهرس نفسه عند مسافة صفرية، ففقد القياس معناه. يُحتسب الزمن عبر perf_counter، وتُرتَّب أزمنة الاستجابة، وتؤخذ قيمتا p95 وp99 من المواضع المقابلة في القائمة المرتبة، ويُحسب QPS بوصفه نسبة عدد الاستعلامات إلى الزمن الكلي للتشغيل.

كيف تطبّق ذلك لديك

لإعادة التجربة تحتاج إلى Docker مع Compose، وPython 3.10+، ونحو 8 غيغابايت من الذاكرة الحرة. ولا حاجة إلى حسابات سحابية.

يتبع منطق الاختيار العملي من البنية المعمارية نفسها. إذا كانت بياناتك موجودة أصلًا في Postgres، وكان على الاستعلام أن يجمع بين التصفية على الحقول العلائقية والبحث بالتشابه، فإن pgvector يغنيك عن نظام ثانٍ وعن المزامنة. وإذا احتجت إلى تصفية على حقول JSON معقدة بسرعة عالية، فـ Qdrant مناسب. أما لمجموعات تبلغ مليارات المتجهات فيُنظر في Milvus، ولتشغيل بلا أعباء إدارية يُنظر في Pinecone، وللتحويل المدمج إلى متجهات مع BM25 يُنظر في Weaviate.

نصيحة واحدة تتجاوز المنهجية: المتجهات الطبيعية العشوائية لا تملك البنية العنقودية للتضمينات الحقيقية، كما أن السكربت يقيس أزمنة الاستجابة فقط. وقبل اتخاذ قرار الانتقال، شغّل الاختبار نفسه على تضميناتك الخاصة، وأضف فحص recall قياسًا إلى البحث الدقيق.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول جدل بلا أرقام؟

القصة المعتادة تسير على هذا النحو. تضيف فرقة العمل يوم الثلاثاء pgvector إلى قاعدة Postgres تعمل بالفعل، فتصبح التضمينات (embeddings) إلى جانب البيانات العلائقية، ويتولى استعلام واحد التصفية والبحث عن التشابه معًا. وبعد ستة أشهر تصل رسالة من أحد الموردين: حان وقت الانتقال إلى قاعدة بيانات متجهية «حقيقية» قبل أن يبلغ النظام سقف قدرته. لا يوجد في الرسالة اختبار أداء، بل ثقة فقط. pgvector إضافة مفتوحة المصدر لـ Postgres، وإصدارها الحالي 0.8.6، وتدعم Postgres 13 وما بعده. تضيف الإضافة نوع البيانات الأصلي vector، وبحثًا دقيقًا وتقريبيًا عن أقرب الجيران. يُخزَّن المتجه في الجدول

ما أبرز التفاصيل حول خمس قواعد متخصصة تُقارَن بها Postgres؟

القاعدة المتجهية المتخصصة خدمة منفصلة بعمليتها ومخزنها الخاص، صُمّمت للبحث المتجهي من الأساس. وثمن هذا الخيار واضح: يلزم نشر نظام جديد ومراقبته وإنشاء نسخ احتياطية له ومزامنته مع مصدر الحقيقة. يستعرض الكاتب خمسة من أشهر الخيارات: Pinecone — قاعدة سحابية مُدارة بالكامل ولا تتطلب إعدادًا، موجَّهة لنطاق المؤسسات بأدنى قدر من أعباء التشغيل. Qdrant — قاعدة عالية الأداء مكتوبة بلغة Rust، وتتميز بسرعة الاستعلامات مع التصفية المعقدة وفق حمولة JSON. Weaviate — نظام مفتوح المصدر موجَّه للذكاء الاصطناعي، ويوفر تحويلًا مدمجًا إلى متجهات وبحثًا هجينًا مع BM25. Milvus — قاعدة موزعة مع تس

ما أبرز التفاصيل حول كيف يُبنى قياس نزيه؟

يُشغَّل Postgres 17 مع الإضافة من الصورة pgvector/pgvector:pg17، ويُشغَّل Qdrant بأمر docker run واحد على المنفذين 6333 و6334. تبلغ الأبعاد 1536 في النظامين، ويُستخدم مقياس جيب التمام. مجموعة البيانات اصطناعية: 100 000 متجه مولَّدة من توزيع طبيعي بقيمة seed=42 ثابتة، ومُطبَّعة إلى طول الوحدة كما تفعل نماذج التضمين الحقيقية. تُحمَّل البيانات إلى Qdrant على دفعات من 1000 نقطة، وإلى Postgres عبر محوّل pgvector-python. القرار الجوهري: الفهرسان متطابقان. ففي pgvector يُنشأ فهرس HNSW بالقيمتين m=16 وef_construction=64 (وهما قيمه الافتراضية)، وفي Qdrant تُضبط القيم نفسها عبر HnswC

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…