Chương này giới thiệu cách bắt đầu nhanh với cơ sở dữ liệu vector Qdrant và cách vận hành cơ sở dữ liệu vector dựa trên RESTful API.
Cài đặt Qdrant
Lưu ý: Hướng dẫn này dựa trên việc cài đặt cơ sở dữ liệu Qdrant bằng Docker. Vui lòng cài đặt Docker trước khi tiếp tục.
Tải hình ảnh qdrant
docker pull qdrant/qdrant
Bắt đầu dịch vụ cơ sở dữ liệu vector qdrant
docker run -p 6333:6333 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
Mặc định, chúng ta ánh xạ thư mục tệp cục bộ vào container, và tất cả dữ liệu được lưu trữ trong thư mục ./qdrant_storage.
Bây giờ bạn có thể truy cập Qdrant qua localhost:6333.
Cơ sở dữ liệu vector Qdrant hỗ trợ RESTful API cho các hoạt động cơ sở dữ liệu, cũng như các SDK cho các ngôn ngữ lập trình như Python, Go, v.v. Hướng dẫn này chủ yếu tập trung vào việc giải thích việc sử dụng RESTful API.
Ví dụ về truy cập API
curl -X PUT 'http://localhost:6333/collections/test_collection' \
-H 'Content-Type: application/json' \
--data-raw '{
"vectors": {
"size": 4,
"distance": "Dot"
}
}'
Giao diện người dùng web Qdrant
Truy cập giao diện người dùng web qua địa chỉ http://localhost:6333/dashboard
Tạo Bộ sưu tập
Khái niệm về bộ sưu tập trong cơ sở dữ liệu vector Qdrant có thể được so sánh với cấu trúc bảng của MYSQL, được sử dụng để lưu trữ đồng nhất loại dữ liệu vector. Mỗi dữ liệu được lưu trữ trong bộ sưu tập, được gọi là điểm trong Qdrant, có ý nghĩa tương tự như điểm trong không gian hình học toán học, đại diện cho biểu diễn của vector trong không gian hình học (chỉ đơn giản là một mảnh dữ liệu).
PUT /collections/{collection_name}
{
"vectors": {
"size": 300,
"distance": "Cosine"
}
}
Giải thích tham số:
Tham số | Mô tả |
---|---|
collection_name | Tên bộ sưu tập (bắt buộc) |
vectors | Định nghĩa tham số vector (bắt buộc) |
vectors.size | Đại diện cho kích thước vector (hoặc số chiều của vector) |
vectors.distance | Đại diện cho thuật toán tương tự vector, chủ yếu bao gồm ba thuật toán: "Cosine," "Euclid," "Dot" |
Thêm Vector (Điểm)
Sau khi tạo bộ sưu tập, chúng ta có thể thêm dữ liệu vector vào bộ sưu tập. Trong Qdrant, dữ liệu vector được biểu diễn bằng cách sử dụng điểm, trong đó mỗi dữ liệu điểm bao gồm ba phần: id, dữ liệu payload (dữ liệu liên quan) và dữ liệu vector.
Ví dụ
PUT /collections/{collection_name}/points
{
"points": [
{
"id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // id
"payload": {"color": "red"}, // Dữ liệu thuộc tính liên quan, thường là các thuộc tính kinh doanh liên quan, như: ID đơn hàng, ID sản phẩm, tiêu đề, v.v.
"vector": [0.9, 0.1, 0.1] // Dữ liệu vector đại diện cho các đặc trưng của dữ liệu kinh doanh hiện tại
}
]
}
Tìm kiếm Vector
Sau khi thêm dữ liệu vector, chúng ta có thể thực hiện tìm kiếm tương tự ngữ nghĩa bằng cách sử dụng vector.
Ví dụ
// collection_name - tên bộ sưu tập
POST /collections/{collection_name}/points/search
{
"vector": [0.2, 0.1, 0.9, 0.7], // tham số vector
"limit": 3 // Trả về 3 dữ liệu có độ tương tự cao nhất
}
Mô tả Tham số:
- vector: Tham số vector được sử dụng để tìm kiếm nội dung tương tự với vector này. Ví dụ: Bạn có thể chuyển đổi các từ khóa cần tìm kiếm của người dùng thành vector và sau đó tìm kiếm nội dung liên quan đến đầu vào của người dùng.
Lọc Thuộc Tính
Khi tìm kiếm dữ liệu, ngoài việc thực hiện tìm kiếm tương tự bằng cách sử dụng vector, đôi khi chúng ta cũng muốn thực hiện việc lọc thuộc tính tương tự như là WHERE clause trong SQL để lọc một số thuộc tính. Qdrant hỗ trợ truy vấn lọc để lọc các thuộc tính liên kết với dữ liệu điểm.
Ví dụ
// collection_name - tên bộ sưu tập
POST /collections/{collection_name}/points/search
{
"filter": { // Đây chủ yếu được sử dụng để lọc các thuộc tính liên kết của dữ liệu điểm, và định dạng cú pháp tổng thể tương tự cú pháp Elasticsearch. Tham số này là tùy chọn.
"must": [ // Lọc dữ liệu điểm với color=red
{
"key": "color",
"match": {
"value": "red"
}
}
]
},
"vector": [0.2, 0.1, 0.9, 0.7], // Tham số Vector
"limit": 3
}
Để biết thêm chi tiết về hướng dẫn, vui lòng tham khảo các chương sau đây.