مقدمة إلى قواعد البيانات المتجهية
سبب وجود قواعد البيانات المتجهية، واستخدام FAISS للبحث المحلي عن التشابه، وتخزين التضمينات لاسترجاع الذكاء الاصطناعي.
مقدمة إلى قواعد البيانات المتجهية درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ما بعد المطابقات التامة
تعثر قواعد البيانات التقليدية على الصفوف باستخدام قيم مطابقة تمامًا (WHERE name = "x"). لكن الذكاء الاصطناعي يتعامل مع التضمينات — وهي متجهات تلتقط المعنى — وغالبًا ما تريد العناصر الأكثر تشابهًا مع الاستعلام، لا المطابقات التامة.
توجد قواعد بيانات المتجهات لجعل هذا البحث بالتشابه سريعًا.
ما هو التضمين؟
التضمين هو قائمة من الأرقام (متجه) تمثّل نصًا أو صورة أو ملفًا صوتيًا، بحيث تقع العناصر المتشابهة بالقرب من بعضها في فضاء المتجهات.
يعتمد كل من البحث الدلالي والتوصيات والتوليد المعزّز بالاسترجاع (RAG) على التضمينات.
import numpy as np
# A toy 4-dim embedding for a sentence
vec = np.array([0.12, -0.43, 0.88, 0.05], dtype="float32")
print(vec.shape) # (4,)لماذا لا نستخدم قاعدة بيانات عادية؟
إن مقارنة استعلام بملايين المتجهات باستخدام حلقة بحث بالقوة الغاشمة بطيئة. تستخدم قواعد بيانات المتجهات فهارس متخصصة وحسابات للمسافات لإرجاع أقرب الجيران خلال أجزاء من الثانية.
كما أنها قابلة للتوسّع، وتحفظ البيانات، وتتعامل مع البيانات الوصفية إلى جانب المتجهات.
قياس التشابه
يُقاس التقارب باستخدام مقياس مسافة:
- L2 (الإقليدية) — المسافة في خط مستقيم؛ الأصغر يعني تقاربًا أكبر
- Cosine — الزاوية بين المتجهات؛ مناسب للنصوص
يدعم FAISS عدة مقاييس؛ وسنستخدم L2.
التعريف بـ FAISS
FAISS (Facebook AI Similarity Search) مكتبة سريعة ومجانية للبحث في المتجهات. تعمل محليًا من دون خادم، ما يجعلها مثالية للتعلّم وإنشاء النماذج الأولية.
import faiss
import numpy as np
# pip install faiss-cpuإنشاء فهرس باستخدام IndexFlatL2
ينشئ IndexFlatL2(dim) فهرسًا مسطّحًا (بالقوة الغاشمة وتامًّا) باستخدام مسافة L2. يجب أن تحدد له بُعد متجهاتك.
تعني كلمة "Flat" أن النتائج تامة، وهذا مثالي للمجموعات الصغيرة والمتوسطة.
import faiss
dim = 4
index = faiss.IndexFlatL2(dim)
print(index.is_trained) # True (flat index needs no training)إضافة المتجهات باستخدام index.add
مرّر التضمينات على هيئة مصفوفة NumPy ثنائية الأبعاد من النوع float32 وبالشكل (n, dim). تخزّنها index.add، بينما يعرض index.ntotal العدد.
import numpy as np
embeddings = np.random.random((100, dim)).astype("float32")
index.add(embeddings)
print(index.ntotal) # 100البحث باستخدام index.search
يعيد index.search(query, k) أقرب k من المتجهات. ويُرجع مصفوفتين: المسافات D والفهارس I (المواضع بالترتيب الذي أضفتها به).
query = np.random.random((1, dim)).astype("float32")
D, I = index.search(query, k=5)
print("nearest ids:", I[0])
print("distances:", D[0])من الفهارس إلى العناصر
يعيد FAISS المواضع، لا بياناتك الأصلية. احتفظ بقائمة موازية (أو قاعدة بيانات) تربط موضع الفهرس بالعنصر الفعلي، حتى تتمكن من البحث عن النتائج.
docs = ["doc about cats", "doc about dogs", "doc about cars"]
# after search:
for pos in I[0]:
print(docs[pos]) # map id -> original documentخط أنابيب صغير للبحث الدلالي
النمط الكامل هو: أنشئ تضمينات لمستنداتك، وأضفها إلى فهرس، وأنشئ تضمينًا للاستعلام، ثم ابحث وأرجع المستندات المطابقة. (تنتج نماذج التضمين مثل sentence-transformers هذه المتجهات.)
import faiss, numpy as np
# doc_vectors: (n, dim) from an embedding model
index = faiss.IndexFlatL2(doc_vectors.shape[1])
index.add(doc_vectors)
# query_vec: (1, dim) embedding of the user query
D, I = index.search(query_vec, k=3)
results = [docs[i] for i in I[0]]
print(results)متى تستخدم قاعدة بيانات المتجهات؟
استخدم قاعدة بيانات متجهات عندما تحتاج إلى:
- بحث دلالي في النصوص أو الصور
- توصيات بناءً على التشابه
- RAG: استرجاع السياق ذي الصلة لنموذج لغوي كبير
يُعد FAISS رائعًا للاستخدام المحلي؛ بينما تضيف الخيارات المُدارة (Pinecone وWeaviate وpgvector) إمكانات الحفظ والتوسّع.
اختبار سريع: البحث باستخدام FAISS
تستدعي index.search(query, k=5) على فهرس FAISS.
مراجعة: قواعد بيانات المتجهات
لقد تعلّمت أساسيات البحث بالتشابه:
- تضع التضمينات العناصر المتشابهة بالقرب من بعضها في فضاء المتجهات
- تجعل قواعد بيانات المتجهات البحث عن أقرب الجيران سريعًا على نطاق واسع
- ينشئ FAISS الفهرس الدقيق باستخدام L2 عبر
IndexFlatL2(dim) - تخزّن
index.add(embeddings)المتجهات، بينما يعيدindex.search(query, k)المسافات والفهارس - اربط الفهارس المُعادة بعناصرك الأصلية
وبذلك تكتمل وحدة قواعد البيانات. التالي: تنظيم مشاريع الذكاء الاصطناعي باستخدام Git.
الأسئلة الشائعة
هل درس «مقدمة إلى قواعد البيانات المتجهية» مجاني؟
نعم — نص درس «مقدمة إلى قواعد البيانات المتجهية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «مقدمة إلى قواعد البيانات المتجهية»؟
سبب وجود قواعد البيانات المتجهية، واستخدام FAISS للبحث المحلي عن التشابه، وتخزين التضمينات لاسترجاع الذكاء الاصطناعي. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «مقدمة إلى قواعد البيانات المتجهية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- SQLite مع وحدة sqlite3 في Python
- تكامل Pandas وSQL
- تخزين نتائج ML والاستعلام عنها
- مقدمة إلى قواعد البيانات المتجهية