Dữ liệu nguyên liệu
Một trong những tính năng quan trọng của Qdrant là khả năng lưu trữ thông tin bổ sung bên ngoài các vector (quản lý lưu trữ các thuộc tính kinh doanh). Trong thuật ngữ của Qdrant, thông tin bổ sung này được gọi là "pay_load".
Qdrant cho phép bạn lưu trữ bất kỳ thông tin nào có thể được biểu diễn bằng JSON.
Dưới đây là một ví dụ về pay_load điển hình:
{
"name": "áo khoác",
"color": ["đỏ", "xanh"],
"quantity": 10,
"price": 11.99,
"location": [
{
"longitude": 52.5200,
"latitude": 13.4050
}
],
"reviews": [
{
"user": "Alice",
"score": 4
},
{
"user": "Bob",
"score": 5
}
]
}
Các loại dữ liệu Pay_load
Ngoài việc lưu trữ các pay_load, Qdrant cũng cho phép bạn tìm kiếm dựa trên các loại giá trị cụ thể. Tính năng này được triển khai như các bộ lọc bổ sung trong quá trình tìm kiếm và cho phép bạn nhúng logic tùy chỉnh lên trên sự tương tự ngữ nghĩa.
Trong quá trình lọc, Qdrant sẽ kiểm tra các điều kiện của các giá trị thỏa mãn tiêu chí bộ lọc. Nếu loại giá trị lưu trữ không thỏa mãn tiêu chí lọc, nó được coi là không thỏa mãn.
Ví dụ, áp dụng các điều kiện phạm vi cho dữ liệu kiểu chuỗi sẽ dẫn đến kết quả trống.
Tuy nhiên, việc xử lý các mảng (nhiều giá trị cùng loại) có chút khác biệt. Khi chúng ta áp dụng bộ lọc cho một mảng, nếu ít nhất một giá trị trong mảng thỏa mãn điều kiện, thì bộ lọc sẽ thành công.
Một cuộc thảo luận chi tiết về quá trình lọc được thực hiện trong phần lọc.
Hãy cùng xem xét các loại dữ liệu được hỗ trợ bởi Qdrant:
Số nguyên
số nguyên
- Số nguyên 64 bit, có phạm vi từ -9223372036854775808
đến 9223372036854775807
.
Ví dụ về giá trị số nguyên
đơn và nhiều:
{
"quantity": 10,
"sizes": [35, 36, 38]
}
Số thực
số thực
- Số thập phân 64 bit.
Ví dụ về giá trị số thực
đơn và nhiều:
{
"price": 11.99,
"rating": [9.1, 9.2, 9.4]
}
Luận lý
luận lý
- Giá trị nhị phân. Bằng đúng
hoặc sai
.
Ví dụ về giá trị luận lý
đơn và nhiều:
{
"delivered": true,
"replies": [false, false, true, false]
}
Từ khóa
từ khóa
- Giá trị chuỗi.
Ví dụ về giá trị từ khóa
đơn và nhiều:
{
"name": "Alice",
"friends": [
"Bob",
"Eva",
"Jack"
]
}
Tọa độ địa lý
địa lý
được sử dụng để biểu diễn tọa độ địa lý.
Ví dụ về giá trị địa lý
đơn và nhiều:
{
"location": {
"longitude": 52.5200,
"latitude": 13.4050
},
"cities": [
{
"longitude": 51.5072,
"latitude": 0.1276
},
{
"longitude": 40.7128,
"latitude": 74.0060
}
]
}
Tọa độ được mô tả dưới dạng một đối tượng chứa hai trường: longitude
- biểu thị kinh độ, latitude
- biểu thị vĩ độ.
Tạo điểm với pay_load
REST API (kiến trúc)
PUT /collections/{tên_bộ_sưu_tập}/points
{
"points": [
{
"id": 1,
"vector": [0.05, 0.61, 0.76, 0.74],
"payload": {"city": "Berlin", "price": 1.99}
},
{
"id": 2,
"vector": [0.19, 0.81, 0.75, 0.11],
"payload": {"city": ["Berlin", "London"], "price": 1.99}
},
{
"id": 3,
"vector": [0.36, 0.55, 0.47, 0.94],
"payload": {"city": ["Berlin", "Moscow"], "price": [1.99, 2.99]}
}
]
}
Thiết lập payloads
REST API (Schema):
POST /collections/{collection_name}/points/payload
{
"payload": {
"property1": "string",
"property2": "string"
},
"points": [
0, 3, 100
]
}
Xóa payloads
Phương pháp này loại bỏ các khóa payloads cụ thể từ các điểm đã chỉ định.
REST API (Schema):
POST /collections/{collection_name}/points/payload/delete
{
"keys": ["color", "price"],
"points": [0, 3, 100]
}
Xóa tất cả payloads
Phương pháp này loại bỏ tất cả các khóa payloads từ các điểm đã chỉ định.
REST API (Schema):
POST /collections/{collection_name}/points/payload/clear
{
"points": [0, 3, 100]
}
Bạn cũng có thể sử dụng
models.FilterSelector
để loại bỏ các điểm phù hợp với các điều kiện bộ lọc cung cấp, thay vì cung cấp IDs.
Chỉ mục payloads
Để thực hiện tìm kiếm lọc hiệu quả, Qdrant cho phép bạn tạo chỉ mục cho các trường payload bằng cách xác định tên và loại trường.
Các trường được chỉ mục cũng ảnh hưởng đến chỉ mục vector.
Trong thực tế, nên tạo chỉ mục trên các trường có thể hạn chế kết quả nhất. Ví dụ, việc tạo chỉ mục trên ID đối tượng sẽ hiệu quả hơn việc tạo chỉ mục trên màu sắc, vì ID đối tượng là duy nhất cho mỗi bản ghi, trong khi màu sắc chỉ có vài giá trị có thể.
Trong truy vấn kết hợp liên quan đến nhiều trường, Qdrant sẽ cố gắng sử dụng chỉ mục hạn chế nhất trước.
Để tạo chỉ mục cho một trường, có thể sử dụng:
REST API (Schema)
PUT /collections/{collection_name}/index
{
"field_name": "tên trường cần chỉ mục",
"field_schema": "keyword"
}
Các trường đã được chỉ mục được hiển thị trong schema payload cùng với collection info API.
Ví dụ schema payload:
{
"payload_schema": {
"property1": {
"data_type": "keyword"
},
"property2": {
"data_type": "integer"
}
}
}