قاعدة بيانات متجهية: إعداد pgvector خطوة بخطوة

RAG يحتاج قاعدة بيانات متجهية. pgvector على PostgreSQL = أسهل حل. نشرح التثبيت والإعداد وأول استعلام بحث دلالي.
ما هي قاعدة بيانات المتجهات؟
قاعدة بيانات المتجهات هي نظام تخزين مصمم خصيصاً للتعامل مع البيانات على شكل متجهات رقمية (Vectors). في عالم الذكاء الاصطناعي، كل نص أو صورة أو مقطع صوتي يتحول إلى متجه — مصفوفة أرقام تمثل المعنى الدلالي للمحتوى. قاعدة البيانات التقليدية تبحث بالتطابق الحرفي، لكن قاعدة المتجهات تبحث بالتشابه الدلالي.
pgvector هو امتداد مفتوح المصدر لقاعدة بيانات PostgreSQL يضيف دعم تخزين المتجهات والبحث فيها مباشرة داخل PostgreSQL. هذا يعني أنك لا تحتاج قاعدة بيانات منفصلة — تستخدم PostgreSQL اللي تعرفها مع قدرات متجهات كاملة.
لماذا pgvector تحديداً؟
| الميزة | pgvector | Pinecone | Weaviate | Milvus |
|---|---|---|---|---|
| مفتوح المصدر | نعم | لا | نعم | نعم |
| يعمل داخل PostgreSQL | نعم | لا | لا | لا |
| تكلفة إضافية | صفر | اشتراك شهري | موارد منفصلة | موارد منفصلة |
| حماية وتوطين البيانات | كاملة | سحابة خارجية | حسب الاستضافة | حسب الاستضافة |
| SQL عادي | نعم | API فقط | GraphQL | API فقط |
| النضج | +3 سنوات | +4 سنوات | +3 سنوات | +4 سنوات |
الميزة الأهم: بياناتك تبقى على سيرفرك السعودي. لا ترسل متجهات تمثل بياناتك الحساسة لخدمة خارجية.
متطلبات السيرفر
لتشغيل pgvector بكفاءة تحتاج:
- المعالج: 2 vCPU كحد أدنى (4 vCPU للإنتاج)
- الذاكرة: 4 GB RAM كحد أدنى — المتجهات تستهلك ذاكرة بكثافة
- التخزين: SSD إلزامي — الفهارس تحتاج سرعة قراءة عالية
- نظام التشغيل: Ubuntu 22.04 أو 24.04
خادم سحابي من كلاود بباقة نمو (2 vCPU، 4 GB RAM) يكفي للبداية، مع إمكانية الترقية لاحقاً حسب حجم البيانات.
التثبيت خطوة بخطوة
1. تثبيت PostgreSQL 16
sudo apt update
sudo apt install -y postgresql-16 postgresql-server-dev-16
2. تثبيت pgvector من المصدر
sudo apt install -y build-essential git
cd /tmp
git clone --branch v0.7.4 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install
3. تفعيل الامتداد
sudo -u postgres psql
CREATE EXTENSION vector;
\dx
يجب أن تظهر vector في قائمة الامتدادات المثبتة.
4. إنشاء جدول مع عمود متجه
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
content TEXT NOT NULL,
embedding vector(1536),
metadata JSONB,
created_at TIMESTAMP DEFAULT NOW
);
الرقم 1536 هو بُعد المتجه — يعتمد على نموذج التحويل المستخدم. OpenAI text-embedding-3-small ينتج 1536 بُعد.
إنشاء الفهارس
الفهارس هي ما يجعل البحث سريعاً. بدون فهرس، يفحص pgvector كل صف — وهذا بطيء جداً مع ملايين السجلات.
فهرس IVFFlat (أسرع في البناء)
CREATE INDEX ON documents
USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100);
فهرس HNSW (أدق في النتائج)
CREATE INDEX ON documents
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);
| نوع الفهرس | سرعة البناء | دقة البحث | استهلاك الذاكرة |
|---|---|---|---|
| IVFFlat | سريع | 95-98% | منخفض |
| HNSW | بطيء | 99%+ | عالي |
التوصية: ابدأ بـ HNSW إذا كانت البيانات أقل من 5 مليون سجل. انتقل لـ IVFFlat إذا كنت تحتاج بناء فهارس بشكل متكرر.
استعلامات البحث بالتشابه
البحث بأقرب المتجهات
SELECT id, content,
embedding <=> '[0.1, 0.2, ...]'::vector AS distance
FROM documents
ORDER BY embedding <=> '[0.1, 0.2, ...]'::vector
LIMIT 10;
العامل <=> يحسب المسافة بتشابه الجيب تمام (Cosine Distance). كلما كانت القيمة أصغر، كان التشابه أكبر.
البحث مع فلترة
SELECT id, content
FROM documents
WHERE metadata->>'category' = 'legal'
ORDER BY embedding <=> $1
LIMIT 5;
هذا يجمع البحث الدلالي مع الفلترة التقليدية — ميزة لا تتوفر بسهولة في قواعد متجهات منفصلة.
تطبيق عملي: نظام RAG
نظام RAG (Retrieval-Augmented Generation) يستخدم pgvector لتعزيز إجابات نماذج الذكاء الاصطناعي ببيانات محلية:
- تحويل المستندات إلى أجزاء صغيرة (500-1000 حرف)
- توليد متجه لكل جزء باستخدام نموذج Embedding
- تخزين المتجهات في pgvector
- عند السؤال: تحويل السؤال لمتجه والبحث عن أقرب النتائج
- إرسال النتائج مع السؤال لنموذج اللغة
هذا النظام يتيح لك بناء ChatGPT خاص ببيانات شركتك — والبيانات تبقى على سيرفرك في السعودية.
ضبط الأداء
- shared_buffers: اضبطها على 25% من الذاكرة المتاحة
- effective_cache_size: 75% من الذاكرة
- maintenance_work_mem: 1-2 GB أثناء بناء الفهارس
- work_mem: 256 MB كحد أدنى للاستعلامات المتجهية
# postgresql.conf
shared_buffers = 1GB
effective_cache_size = 3GB
maintenance_work_mem = 1GB
work_mem = 256MB
التكامل مع Python
import psycopg2
from pgvector.psycopg2 import register_vector
conn = psycopg2.connect("host=localhost dbname=mydb")
register_vector(conn)
cur = conn.cursor
cur.execute(
"SELECT content FROM documents ORDER BY embedding <=> %s LIMIT 5",
(embedding,)
)
results = cur.fetchall
الخطوة التالية
pgvector يحول PostgreSQL من قاعدة بيانات تقليدية إلى محرك بحث دلالي متكامل. مع خادم سحابي من كلاود (cloud.net.sa) في الرياض، تحصل على زمن استجابة زمن استجابة منخفض جداً وسيادة كاملة على بياناتك. ابدأ بباقة نمو وارفع الموارد حسب حجم بياناتك — بدون عقود معقدة أو تكاليف مخفية.
ابدأ الآن
جاهز تشغّل الذكاء الاصطناعي على سيرفرك؟ اكتشف حلول استضافة AI أو صمم سيرفرك بالمواصفات المطلوبة.


