قواعد بيانات المتجهات وأنظمة البحث بالتمثيلات المضمنة
قواعد بيانات المتجهات هي قواعد بيانات متخصصة مُحسّنة لتخزين وإجراء عمليات البحث عن التشابه على المتجهات عالية الأبعاد. وهي المكوّن الأساسي لتطبيقات الذكاء الاصطناعي الحديثة، وخاصة أنظمة RAG (Retrieval-Augmented Generation).
ما هي قاعدة بيانات المتجهات؟
بينما تُحسَّن قواعد البيانات التقليدية للاستعلامات المطابقة تمامًا، تركز قواعد بيانات المتجهات على البحث عن الجار الأقرب التقريبي (ANN).
المفاهيم الأساسية
Embedding: تمثيل عددي على شكل متجه للبيانات (نص، صورة، صوت).
"Artificial intelligence" → [0.12, -0.45, 0.89, ..., 0.34] (e.g., 1536 dimensions)
البحث عن التشابه: إيجاد المتجهات الأقرب إلى متجه الاستعلام.
query_vector → Top-K most similar vectors
مقاييس المسافة:
- Cosine Similarity: تشابه الاتجاه.
- Euclidean Distance (L2): المسافة الهندسية.
- Dot Product: الضرب الداخلي للمتجهات.
مقاييس التشابه: تحليل مفصّل
Cosine Similarity
cos(A, B) = (A · B) / (||A|| × ||B||)
نطاق القيمة: [-1، 1]
- 1: نفس الاتجاه (متطابقان).
- 0: متعامدان (غير مرتبطين).
- -1: اتجاه معاكس.
حالة الاستخدام: تشابه النصوص، البحث الدلالي.
Euclidean Distance (L2)
d(A, B) = √(Σ(Aᵢ - Bᵢ)²)
نطاق القيمة: [0، ∞) حالة الاستخدام: تشابه الصور، التجميع (clustering).
Dot Product
A · B = Σ(Aᵢ × Bᵢ)
حالة الاستخدام: يكافئ Cosine عند استخدام embeddings مُطبّعة.
خوارزميات الفهرسة
1. Brute Force (Flat Index)
مقارنة الاستعلام مع كل متجه في قاعدة البيانات.
التعقيد: O(n × d)
- n: عدد المتجهات.
- d: الأبعاد.
الميزة: دقة 100%. العيب: بطيء جدًا مع البيانات الضخمة.
2. IVF (Inverted File Index)
تضييق مساحة البحث عبر تقسيم المتجهات إلى عناقيد.
الخوارزمية:
- إنشاء centroids باستخدام K-means.
- إسناد كل متجه لأقرب centroid.
- أثناء البحث، يتم النظر فقط داخل عناقيد nprobe الأقرب.
1Parameters: 2- nlist: Number of clusters (typically √n) 3- nprobe: Number of clusters to search 4 5Trade-off: Higher nprobe → higher accuracy, lower speed.
3. HNSW (Hierarchical Navigable Small World)
نهج قائم على الرسوم البيانية وهو الأكثر شيوعًا اليوم.
البنية:
1Layer 2: o-------o-------o (sparse) 2 | | | 3Layer 1: o-o-o---o-o-o---o-o-o (medium) 4 | | | | | | | | | 5Layer 0: o-o-o-o-o-o-o-o-o-o-o-o (dense)
المعاملات:
- M: الحد الأقصى لعدد الروابط لكل عقدة.
- ef_construction: عدد المرشحين أثناء بناء الفهرس.
- ef_search: عدد المرشحين أثناء تنفيذ الاستعلام.
المزايا:
- بحث سريع جدًا: O(log n).
- معدلات استرجاع عالية.
- يدعم الإدراج والحذف الديناميكي.
4. Product Quantization (PQ)
تقليل استخدام الذاكرة عبر ضغط المتجهات.
الطريقة:
- تقسيم المتجه إلى M من المتجهات الفرعية.
- تعيين كل متجه فرعي إلى واحد من K centroids.
- تخزين معرفات centroids بدلاً من القيم الأصلية.
1Original: 1536 dim × 4 bytes = 6KB 2PQ (M=96, K=256): 96 × 1 byte = 96 bytes 3Compression: ~64x
5. Scalar Quantization (SQ)
تحويل تمثيلات Float32 إلى Int8.
1Original: 1536 × 4 bytes = 6KB 2SQ8: 1536 × 1 byte = 1.5KB 3Compression: 4x 4## مقارنة قواعد بيانات المتجهات الشائعة 5 6### Pinecone 7 8**الميزات:** 9- خدمة سحابية مُدارة بالكامل. 10- قابلية التوسع التلقائي. 11- تصفية البيانات الوصفية. 12- عزل المساحات (Namespaces). 13 14**الاستخدام:** 15```python 16import pinecone 17 18pinecone.init(api_key="xxx", environment="us-west1-gcp") 19index = pinecone.Index("my-index") 20 21# Upsert 22index.upsert(vectors=[ 23 {"id": "vec1", "values": [0.1, 0.2, ...], "metadata": {"category": "tech"}} 24]) 25 26# Query 27results = index.query(vector=[0.1, 0.2, ...], top_k=10, filter={"category": "tech"})
Weaviate
الميزات:
- مفتوح المصدر.
- تضمين (Vectorization) مدمج.
- دعم GraphQL API.
- بحث هجين (متجه + كلمات مفتاحية).
Qdrant
الميزات:
- مكتوب بلغة Rust للأداء العالي.
- خيارات تصفية غنية.
- فهرسة البيانات الإضافية (Payload).
- دعم النشر الموزع.
Milvus
الميزات:
- تسريع باستخدام GPU.
- بحث متعدد المتجهات.
- Time travel (الإصدارات التاريخية).
- بنية متوافقة أصلاً مع Kubernetes.
ChromaDB
الميزات:
- مناسب للمطورين وسهل الإعداد.
- أوضاع التخزين في الذاكرة + التخزين الدائم.
- موجه بشكل أساسي للغة Python.
- مثالي للنماذج الأولية.
جدول المقارنة
| الميزة | Pinecone | Weaviate | Qdrant | Milvus |
|---|---|---|---|---|
| الاستضافة | سحابي | كلاهما | كلاهما | كلاهما |
| قابلية التوسع | تلقائي | يدوي | يدوي | تلقائي |
| البحث الهجين | ✓ | ✓ | ✓ | ✓ |
| دعم GPU | - | - | ✓ | ✓ |
| التسعير | لكل متجه | مجاني/مدفوع | مجاني/مدفوع | مجاني/مدفوع |
التصفية والبيانات الوصفية
التصفية المسبقة مقابل التصفية اللاحقة
التصفية المسبقة:
- تطبيق مرشح البيانات الوصفية أولاً.
- إجراء البحث المتجهي داخل المجموعة المصفّاة.
- الميزة: أسرع.
- العيب: قد يقلل من معدل الاسترجاع.
التصفية اللاحقة:
- إيجاد نتائج Top-K × multiplier عبر البحث المتجهي.
- تطبيق مرشح البيانات الوصفية على هذه النتائج.
- إرجاع أفضل K نهائية.
- الميزة: استرجاع أفضل.
- العيب: أداء أبطأ.
البحث الهجين
دمج البحث بالكلمات المفتاحية (BM25) + البحث المتجهي:
final_score = α × vector_score + (1-α) × keyword_score
تحسين الأداء
إعدادات الفهرس
إعدادات HNSW المثلى:
1High Recall: M=32, ef=200 2High Speed: M=16, ef=50 3Balanced: M=24, ef=100
المعالجة على دفعات
1# Poor: Singular insert 2for vec in vectors: 3 index.upsert([vec]) 4 5# Good: Batch insert 6index.upsert(vectors, batch_size=100)
تجميع الاتصالات
1from pinecone import Pinecone 2 3pc = Pinecone( 4 api_key="xxx", 5 pool_threads=30 # Parallel connections 6)
مثال على معمارية المؤسسات
1┌─────────────────────────────────────────────────────┐ 2│ Application │ 3└──────────────────────┬──────────────────────────────┘ 4 │ 5┌──────────────────────▼──────────────────────────────┐ 6│ Vector Search Service │ 7│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 8│ │ Query │ │ Reranker │ │ Cache │ │ 9│ │ Engine │ │ Service │ │ (Redis) │ │ 10│ └─────────────┘ └─────────────┘ └─────────────┘ │ 11└──────────────────────┬──────────────────────────────┘ 12 │ 13┌──────────────────────▼──────────────────────────────┐ 14│ Vector Database Cluster │ 15│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 16│ │ Shard 1 │ │ Shard 2 │ │ Shard 3 │ │ 17│ └─────────┘ └─────────┘ └─────────┘ │ 18└─────────────────────────────────────────────────────┘
المراقبة وقابلية الملاحظة
المقاييس الأساسية
- زمن الاستجابة (p50, p95, p99)
- معدل الاسترجاع
- QPS (عدد الطلبات في الثانية)
- حجم الفهرس
- استخدام الذاكرة
عتبات التنبيه
1alerts: 2 - name: high_latency 3 condition: p99_latency > 200ms 4 severity: warning 5 6 - name: low_recall 7 condition: recall < 0.9 8 severity: critical 9## الخلاصة 10 11تُعد قواعد البيانات المعتمدة على المتجهات مكونات لا غنى عنها في تطبيقات الذكاء الاصطناعي الحديثة. ومع الاختيار الصحيح لقاعدة البيانات، واستراتيجية الفهرسة، والتحسينات المناسبة، يمكنك بناء أنظمة بحث دلالي عالية الأداء. 12 13في Veni AI، نقدم حلول بحث متجهي موجهة للمؤسسات. تواصل معنا لمناقشة متطلباتك.
