Muatan
Salah satu fitur penting dari Qdrant adalah kemampuannya untuk menyimpan informasi tambahan di luar vektor (atribut bisnis manajemen penyimpanan). Dalam terminologi Qdrant, informasi tambahan ini disebut "muatan".
Qdrant memungkinkan Anda untuk menyimpan informasi apa pun yang dapat direpresentasikan menggunakan JSON.
Berikut adalah contoh muatan khas:
{
"nama": "jaket",
"warna": ["merah", "biru"],
"kuantitas": 10,
"harga": 11.99,
"lokasi": [
{
"bujur": 52.5200,
"lintang": 13.4050
}
],
"ulasan": [
{
"pengguna": "Alice",
"skor": 4
},
{
"pengguna": "Bob",
"skor": 5
}
]
}
Jenis Muatan
Selain menyimpan muatan, Qdrant juga memungkinkan Anda untuk mencari berdasarkan jenis nilai tertentu. Fitur ini diimplementasikan sebagai filter tambahan selama proses pencarian dan memungkinkan Anda untuk menanamkan logika kustom di atas kesamaan semantik.
Selama proses penyaringan, Qdrant akan memeriksa kondisi nilai yang memenuhi kriteria filter. Jika jenis nilai yang disimpan tidak memenuhi kriteria filter, itu dianggap tidak memuaskan.
Misalnya, menerapkan kondisi rentang pada data string akan menghasilkan output kosong.
Namun, penanganan array (beberapa nilai dengan jenis yang sama) sedikit berbeda. Ketika kami menerapkan filter ke array, jika setidaknya satu nilai dalam array memenuhi kondisi, filter akan berhasil.
Diskusi mendetail tentang proses penyaringan dilakukan dalam bagian penyaringan.
Mari kita lihat jenis data yang didukung oleh Qdrant:
Bilangan Bulat
integer
- bilangan bulat 64-bit, berkisar dari -9223372036854775808
hingga 9223372036854775807
.
Contoh nilai integer
tunggal dan ganda:
{
"kuantitas": 10,
"ukuran": [35, 36, 38]
}
Desimal
float
- bilangan desimal 64-bit.
Contoh nilai float
tunggal dan ganda:
{
"harga": 11.99,
"peringkat": [9.1, 9.2, 9.4]
}
Boolean
bool
- nilai biner. Sama dengan true
atau false
.
Contoh nilai bool
tunggal dan ganda:
{
"dikirim": true,
"balasan": [false, false, true, false]
}
Kata Kunci
keyword
- nilai string.
Contoh nilai keyword
tunggal dan ganda:
{
"nama": "Alice",
"teman": [
"Bob",
"Eva",
"Jack"
]
}
Koordinat Geografis
geo
digunakan untuk merepresentasikan koordinat geografis.
Contoh nilai geo
tunggal dan ganda:
{
"lokasi": {
"bujur": 52.5200,
"lintang": 13.4050
},
"kota": [
{
"bujur": 51.5072,
"lintang": 0.1276
},
{
"bujur": 40.7128,
"lintang": 74.0060
}
]
}
Koordinat harus dijelaskan sebagai objek yang berisi dua bidang: bujur
- mewakili bujur, lintang
- mewakili lintang.
Membuat titik dengan muatan
REST API (arsitektur)
PUT /koleksi/{nama_koleksi}/titik
{
"titik": [
{
"id": 1,
"vektor": [0.05, 0.61, 0.76, 0.74],
"muatan": {"kota": "Berlin", "harga": 1.99}
},
{
"id": 2,
"vektor": [0.19, 0.81, 0.75, 0.11],
"muatan": {"kota": ["Berlin", "London"], "harga": 1.99}
},
{
"id": 3,
"vektor": [0.36, 0.55, 0.47, 0.94],
"muatan": {"kota": ["Berlin", "Moskow"], "harga": [1.99, 2.99]}
}
]
}
Pengaturan muatan
REST API (Skema):
POST /collections/{nama_koleksi}/points/payload
{
"payload": {
"property1": "string",
"property2": "string"
},
"points": [
0, 3, 100
]
}
Penghapusan muatan
Metode ini menghapus kunci muatan yang ditentukan dari titik-titik yang ditentukan.
REST API (Skema):
POST /collections/{nama_koleksi}/points/payload/delete
{
"keys": ["warna", "harga"],
"points": [0, 3, 100]
}
Membersihkan muatan
Metode ini menghapus semua kunci muatan dari titik-titik yang ditentukan.
REST API (Skema):
POST /collections/{nama_koleksi}/points/payload/clear
{
"points": [0, 3, 100]
}
Anda juga dapat menggunakan
models.FilterSelector
untuk menghapus titik-titik yang cocok dengan kondisi filter yang diberikan, daripada menyediakan ID.
Pengindeksan muatan
Untuk melakukan pencarian terfilter dengan efisien, Qdrant memungkinkan Anda untuk membuat indeks untuk bidang muatan dengan menentukan nama dan tipe bidang.
Bidang yang diindeks juga mempengaruhi indeks vektor.
Secara praktis, disarankan untuk membuat indeks pada bidang yang kemungkinan besar akan membatasi hasil paling banyak. Misalnya, indeks pada ID objek akan lebih efisien daripada indeks pada warna, karena ID objek unik untuk setiap catatan, sementara warna hanya memiliki beberapa nilai yang mungkin.
Dalam kueri komposit yang melibatkan beberapa bidang, Qdrant akan mencoba menggunakan indeks yang paling membatasi terlebih dahulu.
Untuk membuat indeks untuk sebuah bidang, dapat digunakan:
REST API (Skema)
PUT /collections/{nama_koleksi}/index
{
"field_name": "nama bidang yang akan diindeks",
"field_schema": "keyword"
}
Bidang yang diindeks ditampilkan dalam skema muatan bersama dengan API info koleksi.
Contoh skema muatan:
{
"payload_schema": {
"property1": {
"data_type": "keyword"
},
"property2": {
"data_type": "integer"
}
}
}