این فصل معرفی سریع دیتابیس برداری 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 برای عملیات دیتابیس پشتیبانی میکند، همچنین از SDK های زبانهای برنامه نویسی مانند Python، Go و غیره پشتیبانی میکند. این آموزش اصلیاً بر روی توضیح استفاده از رابط برنامه نویسی RESTful تمرکز دارد.
مثال دسترسی به API
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 میتواند با ساختار جدول 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] // اطلاعات بردار نماینده ویژگیهای داده تجارتی فعلی
}
]
}
جستجوی بردار
پس از اضافه کردن دادههای بردار، ما میتوانیم جستجوی مشابهیت معنایی با استفاده از بردارها انجام دهیم.
مثال
// collection_name - نام کالکشن
POST /collections/{collection_name}/points/search
{
"vector": [0.2, 0.1, 0.9, 0.7], // پارامتر بردار
"limit": 3 // بازگشت سه داده بالاترین شباهت
}
توضیحات پارامتر:
- بردار: پارامتر بردار برای جستجوی محتوای مشابه با این بردار استفاده میشود. به عنوان مثال: میتوانید کلمات کلیدی مورد نیاز کاربران را به بردارها تبدیل کرده و سپس محتوای مرتبط با ورودی کاربر را جستجو کنید.
فیلترینگ ویژگیها
در هنگام جستجو برای دادهها، بهجای انجام جستجوهای شباهت با استفاده از بردارها، گاهی اوقات میخواهیم نیز فیلترینگ ویژگیها را مانند کلاوز WHERE SQL برای فیلتر کردن برخی ویژگیها اجرا کنیم. Qdrant از پرسمانهای فیلتر برای فیلتر کردن ویژگیهای مرتبط با بار (payload) پشتیبانی میکند.
مثال
// collection_name - نام مجموعه
POST /collections/{collection_name}/points/search
{
"filter": { // این اصلًا برای فیلتر کردن ویژگیهای مرتبط با بار استفاده میشود و قالب کلی نحوهٔ نوشتاری مشابه نحوهٔ نوشتاری الاستیکسرچ است. این پارامتر اختیاری است.
"must": [ // دادههای نقطه را با رنگ=قرمز فیلتر کنید
{
"key": "color",
"match": {
"value": "red"
}
}
]
},
"vector": [0.2, 0.1, 0.9, 0.7], // پارامتر بردار
"limit": 3
}
برای آموزشهای جزئیتر، لطفا به فصلهای زیر مراجعه کنید.