शर्त सवाल

यह विषय शर्त सवाल करने के तरीके को पेश करता है।

वेक्टर पर समानता खोजने की तरह, शर्त सवाल स्केलर फ़िल्टर का उपयोग सम्पूर्ण संख्यात्मक उदाहरणों के माध्यम से वेक्टर को हासिल करता है। Milvus स्कैलर फ़ील्ड और विभिन्न बूलियन अभिव्यक्तियों पर क्वेरी समर्थन करता है। बूलियन अभिव्यक्तियों का उपयोग स्कैलर फ़ील्ड या प्राथमिक कुंजी फ़ील्ड को फ़िल्टर करने के लिए किया जा सकता है ताकि फ़िल्टरिंग शर्तों से मेल खाते सभी परिणाम प्राप्त किए जा सकें।

निम्नलिखित उदाहरण दिखाता है कि कैसे 2000 पंक्तियों के पुस्तकों के डेटासेट को क्वेरी करना,जिसमें पुस्तक आईडी (प्राथमिक कुंजी), शब्द गणना (स्केलर फ़ील्ड) और पुस्तक परिचय (वेक्टर फ़ील्ड) शामिल है, के किसी विशिष्ट पुस्तक की आईडी के आधार पर क्वेरी करने की स्थिति का नकल करने के लिए कैसे।

संग्रह लोड करें

क्वेरी आयोजित करने से पहले, संग्रह को मेमोरी में लोड किया जाना चाहिए।

from pymilvus import Collection
collection = Collection("book")      # मौजूदा संग्रह प्राप्त करें।
collection.load()

क्वेरी का निष्पादन

निम्नलिखित उदाहरण विशिष्ट book_id मानों के आधार पर वेक्टर को फ़िल्टर करता है और परिणामों में book_id फ़ील्ड और book_intro फ़ील्ड लौटाता है।

Milvus क्वेरी के लिए संदर्भता स्तर सेट करने का समर्थन करता है। इस विषय में उदाहरण का संगर्भ स्तर मजबूत सेट करता है। आप संगर्भ स्तर को सीमित, सत्र, या आखिरकर तक सेट कर सकते हैं। 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

संख्या एंटिटी

क्वेरी निष्पादित करते समय, आप count(*) को output_fields में जोड़ सकते हैं ताकि Milvus संग्रह में एंटिटी की संख्या लौटा सके। यदि आप विशिष्ट शर्तों को पूरा करने वाली एंटिटियों की संख्या गिनना चाहते हैं, तो expr का उपयोग करें।

संग्रह में सभी एंटिटियों की गणना:

res = collection.query(
  expr="", 
  output_fields = ["count(*)"],
)

print(res)
print(res[0])

निश्चित फ़िल्टरिंग शर्तों को पूरा करने वाली एंटिटियों की संख्या गिनते हैं:

res = collection.query(
  expr="book_id in [2,4,6,8]", 
  output_fields = ["count(*)"],
)

print(res)
print(res[0])

सीमितियां

output_fields में count(*) का उपयोग करते समय, limit पैरामीटर का उपयोग करना प्रतिबंधित है।