الحمولة

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

يتيح لك Qdrant تخزين أي معلومات يمكن تمثيلها باستخدام JSON.

وفيما يلي مثال على حمولة نموذجية:

{
    "name": "سترة",
    "color": ["أحمر", "أزرق"],
    "quantity": 10,
    "price": 11.99,
    "location": [
        {
            "longitude": 52.5200,
            "latitude": 13.4050
        }
    ],
    "reviews": [
        {
            "user": "أليس",
            "score": 4
        },
        {
            "user": "بوب",
            "score": 5
        }
    ]
}

أنواع الحمولة

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

خلال عملية التصفية ، سيقوم Qdrant بفحص شروط القيم التي تلبي معايير المرشح. إذا لم تلبي نوعية القيم المخزنة معيار المرشح ، يُعتبر غير مرضٍ.

على سبيل المثال ، تطبيق شروط المدى على بيانات السلسلة سيؤدي إلى إخراج فارغ.

ومع ذلك ، فإن التعامل مع المصفوفات (قيم متعددة من نفس النوع) مختلف قليلاً. عند تطبيق مرشحات على مصفوفة ، إذا كانت قيمة واحدة على الأقل في المصفوفة تلبي الشرط ، سينجح المرشح.

يتم إجراء مناقشة مفصلة لعملية التصفية في قسم التصفية.

دعونا نلقي نظرة على أنواع البيانات التي يدعمها Qdrant:

عدد صحيح

integer - عدد صحيح بسعة 64 بت ، متراوح بين -9223372036854775808 و 9223372036854775807.

أمثلة لقيم "integer" فردية ومتعددة:

{
    "quantity": 10,
    "sizes": [35, 36, 38]
}

عدد عشري

float - عدد عشري بسعة 64 بت.

أمثلة لقيم "float" فردية ومتعددة:

{
    "price": 11.99,
    "rating": [9.1, 9.2, 9.4]
}

بولياني

bool - قيمة ثنائية. مساوية لـ true أو false.

أمثلة لقيم "bool" فردية ومتعددة:

{
    "delivered": true,
    "replies": [false, false, true, false]
}

كلمة مفتاحية

keyword - قيمة سلسلة.

أمثلة لقيم "keyword" فردية ومتعددة:

{
    "name": "أليس",
    "friends": [
        "بوب",
        "إيفا",
        "جاك"
    ]
}

الإحداثيات الجغرافية

geo يُستخدم لتمثيل الإحداثيات الجغرافية.

أمثلة لقيم "geo" فردية ومتعددة:

{
    "location": {
        "longitude": 52.5200,
        "latitude": 13.4050
    },
    "cities": [
        {
            "longitude": 51.5072,
            "latitude": 0.1276
        },
        {
            "longitude": 40.7128,
            "latitude": 74.0060
        }
    ]
}

يجب وصف الإحداثيات ككائن يحتوي على حقلين: longitude - يمثل خط الطول ، latitude - يمثل خط العرض.

إنشاء نقاط بحمولات

REST API (architecture)

PUT /collections/{collection_name}/points

{
    "points": [
        {
            "id": 1,
            "vector": [0.05, 0.61, 0.76, 0.74],
            "payload": {"city": "برلين", "price": 1.99}
        },
        {
            "id": 2,
            "vector": [0.19, 0.81, 0.75, 0.11],
            "payload": {"city": ["برلين", "لندن"], "price": 1.99}
        },
        {
            "id": 3,
            "vector": [0.36, 0.55, 0.47, 0.94],
            "payload": {"city": ["برلين", "موسكو"], "price": [1.99, 2.99]}
        }
    ]
}

ضبط الحمولات

واجهة برمجة التطبيقات REST (المخطط):

POST /collections/{اسم_المجموعة}/points/payload

{
    "payload": {
        "property1": "string",
        "property2": "string"
    },
    "points": [
        0, 3, 100
    ]
}

حذف الحمولات

تقوم هذه الطريقة بإزالة مفاتيح الحمولة المحددة من النقاط المحددة.

واجهة برمجة التطبيقات REST (المخطط):

POST /collections/{اسم_المجموعة}/points/payload/delete

{
    "keys": ["color", "price"],
    "points": [0, 3, 100]
}

مسح الحمولات

تقوم هذه الطريقة بإزالة جميع مفاتيح الحمولة من النقاط المحددة.

واجهة برمجة التطبيقات REST (المخطط):

POST /collections/{اسم_المجموعة}/points/payload/clear

{
    "points": [0, 3, 100]
}

يمكنك أيضًا استخدام models.FilterSelector لإزالة النقاط التي تُطابق ظروف الفلتر المعطاة، بدلاً من تقديم معرّفات.

فهرسة الحمولات

للقيام بعمليات البحث المُصفّيّة بكفاءة، يسمح Qdrant بإنشاء فهرس لحقول الحمولة عن طريق تحديد اسم ونوع الحقل.

تؤثر الحقول المُفَهّرَسة أيضًا على فهرس الناقل.

عمليًا، يُنصَح بإنشاء فهارس على الحقول التي من المرجح أن تقيّد النتائج أكثر. على سبيل المثال، ستكون فهرسة معرّف الكائن أكثر كفاءة من فهرسة اللون، حيث إن معرّف الكائن فريد لكل سجل، بينما اللون يحتوي فقط على قيم محدودة.

في الاستعلامات المركّبة التي تشمل عدة حقول، سيحاول Qdrant استخدام الفهرس الأكثر قيدًا أولاً.

يمكن استخدام الطريقة التالية لإنشاء فهرس لحقل:

واجهة برمجة التطبيقات REST (المخطط)

PUT /collections/{اسم_المجموعة}/index

{
    "field_name": "اسم الحقل للفهرسة",
    "field_schema": "كلمة مفتاحية"
}

تُعرض الحقول المُفَهّرَسة في مخطط الحمولة مع واجهة برمجة التطبيقات لمعلومات المجموعة.

مثال على مخطط الحمولة:

{
    "payload_schema": {
        "property1": {
            "data_type": "keyword"
        },
        "property2": {
            "data_type": "integer"
        }
    }
}