يقدم هذا الفصل مقدمة سريعة لقاعدة بيانات Qdrant الخاصة بالمتجهات وكيفية تشغيل قاعدة بيانات المتجهات استنادًا إلى واجهة برمجة التطبيقات RESTful.

تثبيت Qdrant

ملاحظة: يُعتمد هذا البرنامج التعليمي على تثبيت قاعدة بيانات Qdrant باستخدام Docker. يرجى تثبيت Docker قبل الاستمرار.

تنزيل صورة qdrant

docker pull qdrant/qdrant

تشغيل خدمة قاعدة بيانات المتجهات Qdrant

docker run -p 6333:6333 \
    -v $(pwd)/qdrant_storage:/qdrant/storage:z \
    qdrant/qdrant

بشكل افتراضي، نقوم بتعيين مجلد الملفات المحلي إلى الحاوية، ويتم تخزين جميع البيانات في مجلد ./qdrant_storage.

يمكنك الآن الوصول إلى Qdrant عبر localhost:6333.

تدعم قاعدة بيانات المتجهات Qdrant واجهة برمجة التطبيقات RESTful لعمليات قاعدة البيانات، بالإضافة إلى مجموعات تطوير البرمجيات (SDKs) للغات البرمجة مثل Python و Go، وما إلى ذلك. يركز هذا البرنامج التعليمي بشكل رئيسي على شرح استخدام واجهة برمجة التطبيقات RESTful.

مثال على استخدام واجهة البرمجة

curl -X PUT 'http://localhost:6333/collections/test_collection' \
  -H 'Content-Type: application/json' \
  --data-raw '{
    "vectors": {
      "size": 4,
      "distance": "Dot"
    }
  }'

واجهة المستخدم الرسومية لـ Qdrant

الوصول إلى واجهة المستخدم الرسومية من خلال العنوان http://localhost:6333/dashboard

واجهة المستخدم الرسومية ل Qdrant

إنشاء المجموعات

يمكن مقارنة مفهوم المجموعات في قاعدة بيانات المتجهات Qdrant ببنية الجداول في MYSQL، حيث يتم استخدامها لتخزين بشكل موحد نفس نوع بيانات المتجهات. كل بيانات تخزن في المجموعة، المُشار إليها بـ النقاط في Qdrant، تحمل معنى مماثل للنقاط في الفضاء الهندسي الرياضي، تمثل تمثيل المتجه في الفضاء الهندسي (ببساطة استعرضه على أنها قطعة بيانات).

PUT /collections/{collection_name}

{
    "vectors": {
      "size": 300,
      "distance": "Cosine"
    }
}

شرح المعلمات:

المعلمة الوصف
collection_name اسم المجموعة (مطلوب)
vectors تعريف معلمات المتجه (مطلوب)
vectors.size يمثل حجم المتجه (أو بُعد المتجه)
vectors.distance يمثل خوارزمية تشابه المتجه، تشمل بشكل رئيسي ثلاث خوارزميات: "Cosine"، "Euclid"، "Dot"

إضافة المتجهات (النقاط)

بعد إنشاء مجموعة، يمكننا إضافة بيانات المتجهات إلى المجموعة. في Qdrant، تُمثل بيانات المتجهات باستخدام النقاط، حيث تشتمل كل بيانات نقطة على ثلاثة أجزاء: الهوية، الحمولة (البيانات المرتبطة)، وبيانات المتجه.

مثال

PUT /collections/{collection_name}/points

{
    "points": [
        {
            "id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // الهوية
            "payload": {"color": "red"}, // بيانات السمات المرتبطة، عادةً ما تتعلق بالسمات التجارية المرتبطة، مثل: معرف الطلب، معرف المنتج، العنوان، وما إلى ذلك
            "vector": [0.9, 0.1, 0.1] // بيانات المتجه الrepresenting the features of the current business data
        }
    ]
}

بحث المتجهات

بعد إضافة بيانات المتجهات، يمكننا القيام ببحث عن التشابه الدلالي باستخدام المتجهات.

مثال

// collection_name - اسم المجموعة
POST /collections/{collection_name}/points/search

{
    "vector": [0.2, 0.1, 0.9, 0.7], // معلمة المتجه
    "limit": 3 // إعادة أعلى 3 بيانات تشابه
}

شرح المعلمات:

  • vector: معلمة المتجه المستخدمة للبحث عن المحتوى المشابه لهذا المتجه. على سبيل المثال: يمكنك تحويل الكلمات الرئيسية التي يحتاجها المستخدمون للبحث إلى متجهات ومن ثم البحث عن المحتوى المتعلق بإدخال المستخدم.

تصفية السمات

عند البحث عن البيانات، بالإضافة إلى إجراء عمليات بحث عن الشبه باستخدام الفيكتورات، نرغب أحيانًا أيضًا في تنفيذ تصفية السمات المشابهة لـ WHERE clause في SQL لتصفية بعض السمات. يدعم Qdrant استعلامات التصفية لتصفية السمات المرتبطة بحمولة النقطة.

مثال

// collection_name - اسم المجموعة
POST /collections/{collection_name}/points/search

{
    "filter": { // يُستخدم هذا بشكل رئيسي لتصفية السمات المرتبطة بالحمولة، وصيغة البناء العامة مشابهة لصيغة Elasticsearch اللغة. هذا المعلم اختياري.
        "must": [ // تصفية بيانات النقطة باللون=أحمر
            {
                "key": "color",
                "match": {
                    "value": "red"
                }
            }
        ]
    },
    "vector": [0.2, 0.1, 0.9, 0.7], // معلم الفيكتور
    "limit": 3
}

للحصول على دروس تفصيلية أكثر، يرجى الرجوع إلى الفصول التالية.