في المشهد سريع التطور للذكاء الاصطناعي وتعلم الآلة، أصبح إجراء البحث الدلالي capability حاسماً للتطبيقات الحديثة. بينما ظهرت قواعد بيانات متجهة مخصصة مثل Pinecone وWeaviate وMilvus للتعامل مع بيانات المتجهات عالية الأبعاد، يوجد بديل مقنع يعمل بهدوء داخل عالم قاعدة البيانات العلائقية مفتوحة المصدر الأكثر شعبية: pgvector.
بالنسبة للمطورين الذين استثمروا بكثافة في نظام PostgreSQL البيئي، يوفر pgvector مساراً عملياً للمضي قدماً. فهو يلغي العبء التشغيلي للحفاظ على خدمة قاعدة بيانات منفصلة، بينما يوفر capabilities بحث عن التشابه عالية الأداء. تستكشف هذه المقالة ما هو pgvector، وكيف يعمل، وكيف يمكنك تنفيذه في مشاريعك.
ما هو pgvector؟
pgvector هو امتداد مفتوح المصدر لـ PostgreSQL يدعم البحث عن تشابه المتجهات. يتيح لك تخزين، وفهرسة، واستعلام المتجهات مباشرة داخل مثيلات PostgreSQL الحالية الخاصة بك. من خلال دمج capabilities المتجهات في قاعدة بيانات علائقية، يمكّن pgvector المطورين من الاستفادة من متانة، واتساق، وسلامة المعاملات في PostgreSQL لميزات المدعومة بالذكاء الاصطناعي.
يدعم الامتداد ثلاثة مقاييس مسافة أساسية:
- مسافة L2 (الإقليدية): الأفضل للمتجهات الكثيفة حيث يهم المقدار.
- الجداء الداخلي (جيب التمام): مثالي لتضمينات النص حيث يهم الاتجاه أكثر من المقدار.
- مسافة جيب التمام: متغير معياري يُستخدم غالباً في مهام معالجة اللغات الطبيعية (NLP).
البدء مع pgvector
بافتراض تثبيت PostgreSQL، فإن إضافة pgvector أمر بسيط. يمكنك تثبيته عبر مدير حزم نظام التشغيل الخاص بك أو تجميعه من المصدر. بمجرد التثبيت، تقوم بتمكين الامتداد داخل قاعدة البيانات الخاصة بك.
التثبيت والإعداد
-- Connect to your database
\c my_database;
-- Enable the pgvector extension
CREATE EXTENSION vector;
بعد تمكين الامتداد، يمكنك إنشاء عمود لتخزين متجهاتك. يتطلب نوع البيانات vector تحديد الأبعاد للمتجهات التي تنوي تخزينها.
إنشاء عمود متجه
CREATE TABLE items (
id SERIAL PRIMARY KEY,
content TEXT NOT NULL,
embedding VECTOR(1536) -- For OpenAI Ada-002 embeddings
);
الفهرسة للأداء
البحث بالقوة الغاشمة بطيء لمجموعات البيانات الكبيرة. لتحقيق زمن استجابة أقل من المللي ثانية على نطاق واسع، يستخدم pgvector هياكل بحث الفهرسة، وتحديداً IVFFlat وHNSW.
- IVFFlat (ملف معكوس مع تكميم مسطح): أسرع في البناء ولكن قد يكون أبطأ عند الاستعلام. الأفضل لمجموعات البيانات حيث تكون النتائج التقريبية مقبولة والمساحة على القرص مصدر قلق.
- HNSW (عالم صغير قابل للتنقل هرمي): يقدم أفضل أداء استعلام واسترجاع، مما يجعله مناسباً للتطبيقات عالية الإنتاجية، على الرغم من أنه يتطلب ذاكرة تخزين أكبر.
إليك مثال لإنشاء فهرس HNSW لمحاذاة جيب التمام:
CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops);
إجراء بحث التشابه
بمجرد فهرسة بياناتك، يكون استعلام العناصر المشابهة بديهياً. يمكنك استخدام المشغل ->> لمسافة جيب التمام أو <-> لمسافة L2. يوضح المثال التالي العثور على 5 عناصر الأكثر تشابهاً لتضمين معين.
SELECT id, content
FROM items
ORDER BY embedding <-> '[0.1, 0.2, ..., 0.9]'::vector
LIMIT 5;
بالنسبة لمحاذاة جيب التمام، قد تفضل حساب درجة المحاذات الفعلية بدلاً من المسافة، حيث تشير المسافات الأصغر إلى تشابه أعلى.
أفضل الممارسات والاعتبارات
بينما يعتبر pgvector قوياً، فهو ليس حلاً سحرياً. إليك بعض الاعتبارات للمطورين من المستوى المتوسط إلى المتقدم:
- إدارة الأبعاد: تأكد من أن نماذج التضمين الخاصة بك تنتج متجهات بأبعاد متسقة. ستسبب الأبعاد غير المتطابقة أخطاء في الإدراج.
- ضبط الفهرس: بالنسبة لـ IVFFlat، يتحكم المعلمة
listsفي عدد العناقيد. يحسن العدد الأعلى الدقة ولكنه يزيد وقت البناء. بالنسبة لـ HNSW، تعدmوef_constructionمعلمات رئيسية لضبطها بناءً على قيود الأجهزة لديك. - الامتثال لـ ACID: على عكس العديد من قواعد البيانات المتجهة المخصصة، يستفيد pgvector من خصائص ACID في PostgreSQL. يضمن ذلك بقاء بيانات المتجهات الخاصة بك متسقة مع بياناتك العلائقية، مما يبسط التحديثات والحذف.
- التوسع: بينما يعتبر pgvector ممتازاً لنشر العقدة الواحدة، فإن توسيع نطاق بحث المتجهات أفقياً عبر عقد متعددة يتطلب تخطيطاً دقيقاً، وغالباً ما يتضمن استراتيجيات التجزئة.
الخاتمة
يمثل pgvector تحولاً كبيراً في كيفية تعاملنا مع تخزين بيانات المتجهات. من خلال جلب capabilities المتجهات إلى المجال العلائقي، فإنه يقلل من التعقيد المعماري للفرق التي تعتمد بالفعل على PostgreSQL. سواء كنت تبني محرك توصيات، أو ميزة بحث دلالي، أو تطبيق RAG (الاسترجاع المعزز بالتوليد)، يوفر pgvector أساساً قوياً، وعالي الأداء، ومألوفاً. مع نضج نظام الذكاء الاصطناعي البيئي، من المرجح أن يظل الاستفادة من البنية التحتية الموجودة مثل PostgreSQL ميزة استراتيجية للعديد من المنظمات.