Bab ini memperkenalkan langkah cepat untuk database vektor Qdrant dan cara mengoperasikan database vektor berdasarkan RESTful API.
Menginstal Qdrant
Catatan: Tutorial ini didasarkan pada instalasi basis data Qdrant menggunakan Docker. Harap install Docker sebelum melanjutkan.
Unduh gambar qdrant
docker pull qdrant/qdrant
Mulai layanan basis data vektor qdrant
docker run -p 6333:6333 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
Secara default, kita memetakan direktori file lokal ke dalam kontainer, dan semua data disimpan di direktori ./qdrant_storage.
Sekarang Anda dapat mengakses Qdrant melalui localhost:6333.
Basis data vektor Qdrant mendukung RESTful API untuk operasi basis data, serta SDK untuk bahasa pemrograman seperti Python, Go, dll. Tutorial ini terutama fokus pada menjelaskan penggunaan RESTful API.
Contoh mengakses API
curl -X PUT 'http://localhost:6333/collections/test_collection' \
-H 'Content-Type: application/json' \
--data-raw '{
"vectors": {
"size": 4,
"distance": "Dot"
}
}'
Antarmuka Web Qdrant
Akses antarmuka web melalui alamat http://localhost:6333/dashboard
Membuat Koleksi
Konsep koleksi dalam basis data vektor Qdrant dapat dibandingkan dengan struktur tabel MYSQL, digunakan untuk menyimpan secara seragam tipe data vektor yang sama. Setiap data yang disimpan dalam koleksi, disebut sebagai titik dalam Qdrant, memiliki arti serupa dengan titik-titik dalam ruang geometri matematika, yang mewakili representasi vektor dalam ruang geometri (anggap saja itu sebagai sebuah data).
PUT /collections/{nama_koleksi}
{
"vectors": {
"size": 300,
"distance": "Cosine"
}
}
Penjelasan Parameter:
Parameter | Deskripsi |
---|---|
collection_name | Nama koleksi (wajib) |
vectors | Definisi parameter vektor (wajib) |
vectors.size | Mewakili ukuran vektor (atau dimensi vektor) |
vectors.distance | Mewakili algoritma kesamaan vektor, terutama termasuk tiga algoritma: "Cosine," "Euclid," "Dot" |
Menambahkan Vektor (Titik)
Setelah membuat koleksi, kita dapat menambahkan data vektor ke dalam koleksi. Di Qdrant, data vektor direpresentasikan menggunakan titik, di mana setiap data titik mencakup tiga bagian: id, muatan (data terkait), dan data vektor.
Contoh
PUT /collections/{nama_koleksi}/points
{
"points": [
{
"id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // id
"payload": {"color": "red"}, // Data atribut terkait, biasanya atribut bisnis terkait, seperti: ID pesanan, ID produk, judul, dll.
"vector": [0.9, 0.1, 0.1] // Data vektor yang mewakili fitur data bisnis saat ini
}
]
}
Pencarian Vektor
Setelah menambahkan data vektor, kita dapat melakukan pencarian kesamaan semantik menggunakan vektor.
Contoh
// collection_name - nama koleksi
POST /collections/{nama_koleksi}/points/search
{
"vector": [0.2, 0.1, 0.9, 0.7], // parameter vektor
"limit": 3 // Mengembalikan 3 data teratas dengan kesamaan tertinggi
}
Penjelasan Parameter:
- vector: Parameter vektor yang digunakan untuk mencari konten yang serupa dengan vektor ini. Misalnya: Anda dapat mengonversi kata kunci yang dibutuhkan pengguna ke dalam vektor dan kemudian mencari konten terkait dengan input pengguna.
Penyaringan Atribut
Saat mencari data, selain melakukan pencarian kesamaan menggunakan vektor, terkadang kita juga ingin melakukan penyaringan atribut yang mirip dengan klausa WHERE SQL untuk menyaring beberapa atribut. Qdrant mendukung kueri penyaringan untuk menyaring atribut terkait muatan titik.
Contoh
// collection_name - nama koleksi
POST /collections/{collection_name}/points/search
{
"filter": { // Ini digunakan terutama untuk menyaring atribut terkait muatan, dan format sintaks keseluruhannya mirip dengan sintaks Elasticsearch. Parameter ini bersifat opsional.
"must": [ // Saring data titik dengan warna=merah
{
"key": "color",
"match": {
"value": "red"
}
}
]
},
"vector": [0.2, 0.1, 0.9, 0.7], // Parameter vektor
"limit": 3
}
Untuk panduan lebih rinci, silakan lihat bab-bab berikut.