مرحبًا بكم في مشروع قاعدة المتجهات التعليمية - مشروع مبسّط ومكتوب بلغة بايثون يهدف إلى شرح فكرة Vector Databases بطريقة واضحة وسهلة القراءة، بعيدًا عن التعقيد الموجود في الأنظمة الإنتاجية مثل Pinecone أو Milvus أو FAISS أو Chroma.
🎯 الهدف من المشروع هو التعليم والفهم الداخلي لكيفية عمل قواعد المتجهات وليس المنافسة مع أنظمة الإنتاج.
قاعدة المتجهات هي نظام يقوم بتخزين متجهات (Vectors) تمثل:
- نصوص
- صور
- جمل
- منتجات
- مستخدمين
ثم البحث عن أقرب المتجهات باستخدام خوارزميات مثل:
- Cosine Similarity
- Dot Product
- Euclidean Distance
هذه التقنية تُستخدم اليوم في:
- أنظمة البحث الدلالي (Semantic Search)
- الذكاء الاصطناعي التوليدي
- RAG (Retrieval-Augmented Generation)
- توصية المحتوى (Recommendations)
- فهرسة النصوص
وهذا المشروع يشرح كل ذلك بشكل مبسّط.
لأن معظم قواعد المتجهات الحديثة:
- معقدة جدًا
- غير مناسبة للطلاب أو المبتدئين
- تحتوي آلاف الأسطر من الكود
- مبنية لأغراض الإنتاج وليس التعليم
بينما هذا المشروع:
✔️ بسيط ومقروء
✔️ مناسب للدراسة والتجارب
✔️ يحتوي على مثال واضح
✔️ قابل للتطوير خطوة بخطوة
✔️ يساعدك تفهم "كيف يعمل Vector DB من الداخل"
src/
vectordb/
api.py # الواجهة الرئيسية لقاعدة المتجهات
storage.py # تخزين المتجهات والـ metadata داخل الذاكرة
index.py # حساب Cosine Similarity
embeddings.py # واجهة Embeddings + نموذج تجريبي DummyEmbeddings
examples/
basic_text_search.py
requirements.txt
README.md
setup.cfg
pyproject.toml
pip install -r requirements.txtمن داخل مجلد المشروع (الذي يحتوي setup.cfg و pyproject.toml):
pip install -e .python examples/basic_text_search.pyfrom vectordb import VectorDB, DummyEmbeddings
dim = 16
embed = DummyEmbeddings(dim)
db = VectorDB(dim, embeddings=embed)
db.add_text("I love machine learning")
db.add_text("Neural networks learn patterns")
db.add_text("Football is my hobby")
results = db.search_text("deep learning", k=2)
for r in results:
print(r["score"], r["metadata"].get("text"))- تحويل النص إلى متجه باستخدام Embeddings
- جلب جميع المتجهات المخزنة من InMemoryStorage
- تطبيع المتجهات (Normalization)
- حساب Cosine Similarity بين الاستعلام وباقي المتجهات
- ترتيب النتائج من الأعلى إلى الأقل
- إرجاع أفضل K نتائج مع
idوscoreوmetadata
| الخاصية | متوفرة؟ |
|---|---|
| تخزين في الذاكرة In-Memory | ✔️ |
| Cosine Similarity | ✔️ |
| دعم metadata | ✔️ |
| البحث عن أقرب K نتائج | ✔️ |
| Embeddings تجريبية (Dummy) | ✔️ |
| مثال جاهز | ✔️ |
| قابلية التوسع | ✔️ |
- التخزين على القرص (save/load)
- واجهة REST باستخدام FastAPI
- دعم مسافات أخرى (Euclidean, Dot Product)
- دعم نماذج Embeddings حقيقية
- لوحة تحكم بسيطة لعرض النتائج
- RAG pipeline مبسّط
- Indexing أسرع (ANN مثل HNSW)
هذا المشروع مناسب لـ:
- الطلاب
- الجامعات
- معلمي الذكاء الاصطناعي
- مطوري NLP و ML
- الباحثين في RAG
- الهواة الذين يريدون بناء Vector DB بأنفسهم
المشروع مرخص تحت:
MIT License