بارگذاری

یکی از ویژگی‌های مهم 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 - عدد صحیح ۶۴ بیتی، با محدوده از -9223372036854775808 تا 9223372036854775807.

مثال‌های انفرادی و چندگانه از integer:

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

اعداد اعشاری

float - عدد اعشاری ۶۴ بیتی.

مثال‌های انفرادی و چندگانه از 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 (معماری)

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 API (Schema):

POST /collections/{collection_name}/points/payload

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

حذف بارگیرها

این متد کلیدهای بارگیر مشخص شده را از نقاط مشخص شده حذف می‌کند.

REST API (Schema):

POST /collections/{collection_name}/points/payload/delete

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

پاک کردن بارگیرها

این متد تمامی کلیدهای بارگیر را از نقاط مشخص شده حذف می‌کند.

REST API (Schema):

POST /collections/{collection_name}/points/payload/clear

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

شما همچنین می‌توانید از models.FilterSelector برای حذف نقاطی که با شرایط فیلتر داده شده همخوانی دارند استفاده کنید، به جای ارائه شناسه‌ها.

شاخص‌گذاری بارگیرها

برای انجام جستجوهای فیلتر شده به صورت کارآمد، Qdrant به شما اجازه می‌دهد تا با مشخص کردن نام و نوع فیلد، یک شاخص برای فیلدهای بارگیر ایجاد کنید.

فیلدهای شاخص‌گذاری شده همچنین بر روی شاخص بردار تأثیر می‌گذارند.

در عمل، توصیه می‌شود که ایندکس‌ها را بر روی فیلدهایی ایجاد کنید که احتمالاً نتایج را بیشتر محدود می‌کنند. به عنوان مثال، انجام ایندکس‌گذاری بر روی شناسه شیء موثرتر از ایندکس‌گذاری بر روی رنگ خواهد بود، زیرا شناسه شیء برای هر رکورد منحصر به فرد است، در حالی که رنگ تنها چند مقدار ممکن دارد.

در پرس و جوهای ترکیبی که شامل چندین فیلد می‌شوند، Qdrant سعی می‌کند ابتدا از شاخصی که بیشترین محدودیت را ایجاد می‌کند استفاده کند.

برای ایجاد یک شاخص برای یک فیلد، می‌توانید از مقادیر زیر استفاده کنید:

REST API (Schema)

PUT /collections/{collection_name}/index

{
    "field_name": "نام فیلد برای ایندکس‌گذاری",
    "field_schema": "نوع‌فیلد"
}

فیلدهای ایندکس‌گذاری شده در طرح بارگیر همراه با API اطلاعات مجموعه نمایش داده می‌شوند.

نمونه طرح بارگیر:

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