คิวรี่ที่ต้องการ
หัวข้อนี้จะนำเสนอวิธีการทำคิวรีที่มีเงื่อนไข
ไม่เหมือนกับการค้นหาความคล้ายคลึงบนเวกเตอร์ คิวรีที่มีเงื่อนไขนำคืนเวกเตอร์โดยใช้ตัวกรองของตัวเลขผ่านการใช้สูตรสัจพจสถานัย Milvus รองรับคิวรีบนฟิลด์ตัวเลขและสูตรสร้างสรรค์แบบตัวเลขต่างๆ สูตรสุริ สามารถใช้ตัวกรองฟิลด์ตัวเลขหรือฟิลด์หลักเพื่อหาผลลัพธ์ทั้งหมดที่ตรงกับเงื่อนไขการกรอง
ตัวอย่างต่อไปนี้อธิพลการคิวรี่ชุดข้อมูลของ 2000 แถวของหนังสือ ซึ่งรวมถึง ID ของหนังสือ (หลัก), word count (ฟิลด์ตัวเลข), และ book introduction (ฟิลด์เวกเตอร์) ซึ่งจะจำลองบรรยากาศการค้นหาหนังสือที่แน่นอนโดยการใช้ ID ของหนังสือ
โหลดคอลเล็กชัน
ก่อนจะทำคิวรี คอลเล็กชันจำเป็นต้องถูกโหลดเข้าในหน่วยความจำ
from pymilvus import Collection
collection = Collection("book") # ได้รับคอลเล็กชันที่มีอยู่
collection.load()
ดำเนินการคิวรี
ตัวอย่างต่อไปนี้กรองเวกเตอร์โดยใช้ค่า book_id
ที่แน่นอน และ คืนฟิลด์ book_id
และ book_intro
ในผลลัพธ์
Milvus รองรับการตั้งระดับความสัมพันธ์สำหรับคิวรี ตัวอย่างในหัวข้อนี้ตั้งความสัมพันธ์ไปยัง Strong
คุณยังสามารถตั้งระดับความสัมพันธ์ไปยัง Bounded
, Session
, หรือ Eventually
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับความสัมพันธ์ที่สี่ของ Milvus โปรดอ่านที่เกี่ยวกับความสัมพันธ์
คุณยังสามารถใช้ฟิลด์แบบไดนามิกในสมการกรอง และระบุฟิลด์เอาท์พุทที่กำหนดในคำขอคิวรี ตัวอย่างเช่น อ่านไดนามิกสเคีม่า
res = collection.query(
expr = "book_id in [2,4,6,8]",
offset = 0,
limit = 10,
output_fields = ["book_id", "book_intro"],
)
พารามิเตอร์ | คำอธิบาย |
---|---|
expr |
สูตรสัจพจใช้กรองคุณสมบัติ |
limit |
จำนวนผลลัพธ์ที่คล้ายกันที่สุดที่จะคืนค่า ผลรวมของค่านี้และ offset ควรน้อยกว่า 16384 |
offset |
จำนวนผลรวมที่ต้องข้ามในคอลเล็กชัน จะมีเป็นไปได้เมื่อ limit ถูกระบุ และผลรวมของค่านี้และ limit ควรน้อยกว่า 16384 เช่น ถ้าคุณต้องการคิวรีคนองที่ 9 และ 10 ของเวกเตอร์ ตั้งค่า limit เป็น 2 และ offset เป็น 8 |
output_fields (ไม่บังคับ) |
รายชื่อชื่อฟิลด์ที่จะคืนค่า |
partition_names (ไม่บังคับ) |
รายชื่อชื่อพาร์ทิชันที่จะคิวรี |
consistency_level (ไม่บังคับ) |
ระดับความสัมพันธ์สำหรับคิวรี |
ตรวจสอบผลลัพธ์ที่คืนค่า
sorted_res = sorted(res, key=lambda k: k['book_id'])
sorted_res
นับ Entity
เมื่อทำการคิวรี คุณสามารถเพิ่ม count(*)
ใน output_fields
เพื่อซึ่ง Milvus จะสามารถคืนค่าจำนวนของ entities ในคอลเล็กชัน หากคุณต้องการนับจำนวนของ entities ที่ตรงเงื่อนไขที่เจอใช้ expr
เพื่อกำหนดสูตรสัจพจ
นับ entities ทั้งหมดในคอลเล็กชัน
res = collection.query(
expr="",
output_fields = ["count(*)"],
)
print(res)
print(res[0])
นับจำนวน entities ที่ตรงเงื่อนไขการกรองที่เจอ
res = collection.query(
expr="book_id in [2,4,6,8]",
output_fields = ["count(*)"],
)
print(res)
print(res[0])
ความจำกัด
เมื่อใช้ count(*)
ใน output_fields
การใช้พารามิเตอร์ limit
ถูกห้าม