Vector Database
تخزّن قاعدة بيانات المتجهات التضمينات مع المعرّفات والبيانات الوصفية، وتفهرسها لإجراء بحث سريع عن أقرب الجيران؛ وهي طبقة الاسترجاع في التوليد المعزز بالاسترجاع (RAG) والبحث عن الصور.
تخزّن قاعدة البيانات المتجهية التضمينات، وهي متجهات رقمية تنتجها النماذج للنصوص أو الصور أو الصوت أو الفيديو، إلى جانب معرّف وبيانات وصفية لكل عنصر، وتجيب عن الاستعلام «ما المتجهات المخزنة الأقرب إلى هذا المتجه؟» خلال أجزاء من الثانية عبر ملايين أو مليارات العناصر. وهي تضم فهرس البحث المتجهي إلى ميزات قاعدة البيانات، مثل الإدراج والتحديث والحذف، والتصفية حسب البيانات الوصفية، والاستمرارية، والتحكم في الوصول، والنسخ المتماثل بين الأجهزة. وتوفر قواعد البيانات المتجهية خطوة الاسترجاع في التوليد المعزز بالاسترجاع (RAG) والبحث الدلالي وأنظمة التوصية.
آلية عمل قاعدة البيانات المتجهية#
في مسار الكتابة، يحوّل نموذج التضمين، سواء كان خارج قاعدة البيانات أو مدمجًا فيها، كل عنصر إلى متجه، وتخزّن قاعدة البيانات هذا المتجه مع معرّف وحمولة بيانات وصفية، مثل الملف المصدر أو التاريخ أو الكاميرا أو العميل. إن مقارنة استعلام بكل متجه مخزن دقيقة لكنها بطيئة على نطاق واسع، لذا تنشئ قاعدة البيانات فهرس أقرب الجيران التقريبي (ANN). تربط HNSW كل متجه بجيرانه القريبين في رسم بياني متعدد الطبقات يجتازه البحث بطريقة جشعة؛ وتجمع فهارس الملفات المعكوسة (IVF) المتجهات باستخدام التجميع بخوارزمية k-means، ولا تفحص إلا العناقيد الأقرب إلى الاستعلام؛ أما أساليب تكميم المتجهات، مثل تكميم المنتج، فتضغط كل متجه إلى بضعة بايتات. وفي مسار القراءة، يُنشأ تضمين للاستعلام باستخدام النموذج نفسه، ثم يُقارن بمقياس مثل التشابه الجيبي أو الضرب النقطي أو المسافة الإقليدية، وتعيد قاعدة البيانات أعلى k من المعرّفات والدرجات والحمولات، التي تدمجها أنظمة كثيرة مع نتائج الكلمات المفتاحية في البحث الهجين.
يستخدم هذا المثال Chroma، وهي قاعدة بيانات متجهية مفتوحة المصدر تعمل في الذاكرة ضمن عملية Python:
import chromadb
# عميل يعمل في الذاكرة؛ يحفظ chromadb.PersistentClient(path="db") البيانات على القرص
client = chromadb.Client()
collection = client.create_collection("inspection_notes")
# تنشئ Chroma تضمينًا لكل مستند باستخدام نموذج التضمين الافتراضي وتفهرس المتجهات
collection.add(
ids=["n1", "n2", "n3"],
documents=[
"Hairline crack found near the weld on bracket B7",
"Paint scratch on the left door panel",
"Porosity in the weld seam of the frame rail",
],
metadatas=[{"line": "A"}, {"line": "B"}, {"line": "B"}],
)
# بحث عن أقرب الجيران مقصور على خط إنتاج واحد
results = collection.query(query_texts=["welding defects"], n_results=1, where={"line": "B"})
print(results["ids"][0], results["documents"][0])يعيد الاستعلام الملاحظة n3، وهي مسامية اللحام في الخط B. يستبعد مرشح البيانات الوصفية ملاحظة الشق في الخط A من البحث، رغم أن نصها قريب بالقدر نفسه من «عيوب اللحام».
قواعد البيانات المتجهية والأنظمة ذات الصلة#
- مكتبات البحث المتجهي مثل FAISS: فهارس ضمن العملية، تشمل HNSW وIVF وتكميم المنتج، من دون خادم أو تخزين للبيانات الوصفية أو نسخ متماثل. وتُبنى عدة قواعد بيانات متجهية عليها.
- قواعد البيانات المتجهية المصممة خصيصًا لهذا الغرض: Pinecone بوصفها خدمة مُدارة، وMilvus وQdrant وWeaviate وChroma بوصفها مشروعات مفتوحة المصدر، وقد صُممت جميعها حول التضمينات منذ البداية.
- امتدادات المتجهات مثل pgvector: تضيف أعمدة متجهية مع فهارس HNSW وIVFFlat إلى PostgreSQL، فتقيم التضمينات بجوار البيانات العلائقية. وتوفر Elasticsearch وOpenSearch وMongoDB Atlas وRedis حقولًا متجهية مماثلة إلى جوار البحث بالكلمات المفتاحية.
- مخازن الميزات: توفّر ميزات إدخال النموذج حسب مفتاح الكيان لأغراض التدريب والاستدلال. وهي تسترجع السجلات حسب المعرّف، لا حسب التشابه.
- بحيرات البيانات: تحتفظ بالملفات الخام، مثل الصور والسجلات، التي تشير إليها قاعدة البيانات المتجهية باستخدام معرّف أو مسار.
تطبيقات عملية#
- ذاكرة وكلاء الذكاء الاصطناعي: تخزّن مسارات RAG والوكلاء مقاطع المستندات والمحادثات السابقة، كي يتمكن نموذج لغوي كبير من استرجاعها عند الطلب.
- البحث البصري في التجزئة: تنشئ ميزات «تسوّق منتجات مشابهة» تضمينًا لكل صورة منتج، وتعيد العناصر الأقرب إلى المنتج الذي يشاهده المتسوق.
- اكتشاف الحالات الشاذة: تُعلَّم عينة جديدة بأنها غير مألوفة إذا كانت جميع العناصر المخزنة الأقرب إليها بعيدة، كمعاملة أو قراءة مستشعر مثلًا.
تحتاج مجموعات الصور إلى نموذج رؤية لإنتاج المتجهات. ويوفر Ultralytics YOLO26 ذلك عبر model.embed()، الذي يشغّل النموذج على كل صورة ويُرجع متجه سمات مُجمّعًا من الطبقة قبل الأخيرة، جاهزًا للتخزين بجانب مسار الصورة وبيانات الالتقاط الوصفية لاكتشاف النسخ شبه المتطابقة أو البحث عن الصور المشابهة، وهو نوع البحث الكامن وراء العثور على صور مشابهة في Ultralytics Platform.
تحديد الحجم والضبط#
توازن إعدادات الفهرس بين الاستدعاء وزمن استجابة الاستدلال: إذ يعثر كل من اتساع البحث في HNSW (ef_search) وعدد العناقيد التي يجري فحصها في IVF (nprobe) على مزيد من الجيران الحقيقيين مقابل استعلامات أبطأ، لذا تضبط الفرق هذه القيم بمقارنتها بالبحث الدقيق على استعلامات عيّنة. وتحدد الذاكرة تكلفة الأجهزة. فمليون تضمين بأبعاد 768 من النوع float32 تستهلك 3.07 GB (1,000,000 x 768 x 4 bytes) قبل احتساب أي عبء إضافي للفهرس، ويخفض التكميم القياسي int8 للمتجهات الحجم إلى 768 MB، ويمكن اقتطاع تضمينات Matryoshka إلى عدد أقل من الأبعاد لمزيد من التخفيض.










