บทนี้จะแนะนำการเริ่มต้น nstalling Qdrant vector database และวิธีการดำเนินการกับฐานข้อมูลเวกเตอร์โดยใช้ RESTful API
การติดตั้ง 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 vector database รองรับ RESTful API สำหรับดำเนินการฐานข้อมูล และยังรองรับ SDKs สำหรับภาษาโปรแกรม เช่น Python, Go เป็นต้น บทแนะนำนี้เน้นการอธิบายการใช้งาน RESTful API
ตัวอย่างการเข้าถถึง 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 vector database สามารถเปรียบเทียบได้กับโครงสร้างตารางของ 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 // ส่งกลับ 3 ข้อมูลที่มีความคล้ายคำสูงสุด
}
คำอธิยาาพารามิเตอร์:
- เวกเตอร์: พารามิเตอร์เวกเตอร์ ที่ใช้เพื่อการค้นหาเนื้อหาที่คล้ายกันกับเวกเตอร์นี้ ตัวอย่าง: คุณสามารถแปลงคำคีย์เวิร์ดที่ผู้ใช้ต้องการค้นหาเป็นเวกเตอร์แล้วค้นหาเนื้อหาที่เกี่ยงกับข้อมูลผู้ใช้
การกรองแอตทริบิวต์
เมื่อค้นหาข้อมูล นอกจากการทำการค้นหาความคล้ายคลึงโดยใช้เวกเตอร์ บางครั้งเราต้องการดำเนินการกรองแอตทริบิวต์ที่คล้ายกับ WHERE clause ใน SQL เพื่อกรองบางแอตทริบิวต์ออกไป Qdrant รองรับคิวรีสำหรับการกรองแอตทริบิวต์ที่เกี่ยวข้องกับโหลดข้อมูลจุด
ตัวอย่าง
// collection_name - ชื่อคอลเล็กชัน
POST /collections/{collection_name}/points/search
{
"filter": { // ใช้สำหรับกรองแอตทริบิวต์ที่เกี่ยวข้องกับโหลดข้อมูล และรูปแบบไวยากร์ทั้งหมดคล้ายกับ Elasticsearch syntax พารามิเตอร์นี้เป็นทางเลือก
"must": [ // กรองข้อมูลจุดที่มีสีเป็นแดง
{
"key": "color",
"match": {
"value": "red"
}
}
]
},
"vector": [0.2, 0.1, 0.9, 0.7], // พารามิเตอร์เวกเตอร์
"limit": 3
}
สำหรับบทช่วยสอนที่ละเอียดมากยิ่งขึ้น โปรดอย่างให้คำตอบในบทถัดไป