मिलवस में कलेक्शन क्लास माइक्रोसॉफ्ट एमाइएस्क्यूएल की तालिका के जैसा होता है, जिसका उपयोग डेटा को संगठित करने के लिए किया जाता है और एक से अधिक पार्टीशन से बना होता है।
कलेक्शन बनाना
कलेक्शन एक से अधिक पार्टीशन से बना होता है। जब एक नया कलेक्शन बनाया जाता है, तो मिलवस डिफ़ॉल्ट पार्टीशन को '_default' नाम देगा। अधिक जानकारी के लिए, कृपया कलेक्शन से संबंधित शब्दावली-सम्बंधित बयान देखें।
निम्नलिखित उदाहरण में दो पार्टीशनों के साथ 'book' नाम का एक कलेक्शन बनाया जाएगा, जिसमें एक प्राइमरी कुंजी फ़ील्ड 'book_id', एक 'INT64' स्कैलर फ़ील्ड 'word_count' और एक दो-आयामी फ्लोटिंग-प्वाइंट वेक्टर फ़ील्ड 'book_intro' शामिल होंगे। वास्तविक अनुप्रयोग अक्सर उदाहरण से अधिक आयामी वेक्टर का उपयोग करते हैं।
तैयारी मोड
यह मोड MYSQL तालिका की संरचना को परिभाषित करने के तरीके के समान है।
बनाया जाने वाला संग्रह एक प्राथमिक कुंजी फ़ील्ड और एक वेक्टर फ़ील्ड को आवश्यक रूप से शामिल करना चाहिए। प्राथमिक कुंजी फ़ील्ड INT64 और VarChar डेटा प्रकार का समर्थन करता है।
सबसे पहले, फ़ील्ड स्कीमा, संग्रह स्कीमा, और संग्रह नाम समेत आवश्यक पैरामीटर तैयार करें।
संग्रह स्कीमा को परिभाषित करने से पहले, संग्रह में प्रत्येक फ़ील्ड के लिए एक स्कीमा बनाएँ। डेटा प्रवेश की जटिलता को कम करने के लिए, Milvus आपको प्रत्येक स्कैलर फ़ील्ड के लिए (प्राथमिक कुंजी फ़ील्ड को छोड़कर) एक डिफ़ॉल्ट मान निर्धारित करने की अनुमति देता है। इसका मतलब है कि यदि आप डेटा डालते समय किसी फ़ील्ड को खाली छोड़ दें, तो फ़ील्ड स्कीमा निर्माण के दौरान विन्यासित किया गया डिफ़ॉल्ट मान का उपयोग किया जाएगा।
from pymilvus import CollectionSchema, FieldSchema, DataType
book_id = FieldSchema(
name="book_id",
dtype=DataType.INT64,
is_primary=True,
)
book_name = FieldSchema(
name="book_name",
dtype=DataType.VARCHAR,
max_length=200,
default_value="अज्ञात" # डिफ़ॉल्ट मूल्य "अज्ञात" है
)
word_count = FieldSchema(
name="word_count",
dtype=DataType.INT64,
default_value=9999 # डिफ़ॉल्ट मूल्य 9999 है
)
book_intro = FieldSchema(
name="book_intro",
dtype=DataType.FLOAT_VECTOR,
dim=2
)
schema = CollectionSchema(
fields=[book_id, book_name, word_count, book_intro],
description="टेस्ट बुक खोज", # विवरण "टेस्ट बुक खोज" है
enable_dynamic_field=True # डायनामिक स्कीमा सक्षम करें
)
collection_name = "book"
स्कीमा प्रकार | पैरामीटर | विवरण | विकल्प |
---|---|---|---|
FieldSchema |
name |
बनाने वाले फ़ील्ड का नाम। | N/A |
dtype |
बनाने वाले फ़ील्ड का डेटा प्रकार। | प्राथमिक कुंजी फ़ील्ड: - DataType.INT64 (numpy.int64) - DataType.VARCHAR (VARCHAR) स्कैलर फ़ील्ड: - DataType.BOOL (Boolean) - DataType.INT8 (numpy.int8) - DataType.INT16 (numpy.int16) - DataType.INT32 (numpy.int32) - DataType.INT64 (numpy.int64) - DataType.FLOAT (numpy.float32) - DataType.DOUBLE (numpy.double) - DataType.VARCHAR (VARCHAR) - DataType.JSON (JSON) वेक्टर फ़ील्ड: - BINARY_VECTOR (बाइनरी वेक्टर) - FLOAT_VECTOR (फ़्लोट वेक्टर) |
|
is_primary |
फ़ील्ड के यहाँ निर्धारित करने के लिए एक स्विच कि क्या फ़ील्ड प्राथमिक कुंजी फ़ील्ड है। इस पैरामीटर की जरूरत प्राथमिक कुंजी फ़ील्ड्स के लिए है। | सही या गलत |
|
auto_id |
स्वचालित आईडी (प्राथमिक कुंजी) नियुक्ति सक्षम या अक्षम करने का स्विच। इस पैरामीटर की जरूरत प्राथमिक कुंजी फ़ील्ड के लिए है और इसकी डिफ़ॉल्ट मान गलत है। |
सही या गलत |
|
max_length (VARCHAR फ़ील्ड के लिए आवश्यक) |
वो सबसे अधिक लंबाई वाली तार स्ट्रिंग। | [1, 65,535] | |
default_value |
फ़ील्ड का डिफ़ॉल्ट मूल्य। यह पैरामीटर केवल गैर-अर्रे और गैर-JSON स्कैलर फ़ील्ड्स के लिए है। प्राथमिक कुंजी फ़ील्ड के लिए एक डिफ़ॉल्ट मान स्पष्ट करना संभव नहीं है। अधिक जानकारी के लिए कृपया डिफ़ॉल्ट मूल्य पैरामीटर देखें। |
N/A | |
dim (वेक्टर फ़ील्ड्स के लिए आवश्यक) |
वेक्टर का आयाम। | [1, 32,768] | |
description (वैकल्पिक) |
फ़ील्ड का विवरण। | N/A | |
CollectionSchema |
fields |
संग्रह के लिए बनाए जाने वाले फ़ील्ड्स। | N/A |
description (वैकल्पिक) |
बनाए जाने वाले संग्रह का विवरण। | N/A | |
enable_dynamic_field |
क्या डायनामिक स्कीमा सक्षम करना है। डेटा प्रकार: बूलियन (सही या गलत )। वैकल्पिक, डिफ़ॉल्ट गलत है। डायनामिक स्कीमा के बारे में अधिक जानकारी के लिए, कृपया डायनामिक स्कीमा और संग्रह प्रबंधन के लिए उपयोगकर्ता गाइड देखें। |
||
collection_name |
बनाए जाने वाले संग्रह का नाम। | N/A |
स्कीमा के साथ कलेक्शन बनाएँ
अगले चरण में, निर्दिष्ट स्कीमा के साथ एक कलेक्शन बनाएँ।
from pymilvus import Collection
कलेक्शन = Collection(
name=कलेक्शन_नाम,
स्कीमा=स्कीमा,
using='default',
shards_num=2
)
पैरामीटर | विवरण | विकल्प |
---|---|---|
using (वैकल्पिक) |
यहाँ सर्वर की उपनाम की विशेषता करें, और मिलवस सर्वर में कलेक्शन बनाने का चयन करें। | N/A |
shards_num (वैकल्पिक) |
बनाए जाने वाले कलेक्शन के लिए शार्ड्स की संख्या। | [1,16] |
num_partitions (वैकल्पिक) |
बनाए जाने वाले कलेक्शन के लिए विभाजनों की लॉजिकल संख्या। | [1,4096] |
*kwargs: collection.ttl.seconds (वैकल्पिक) |
कलेक्शन की TTL को समाप्ति समय कहा जाता है। समाप्त हो जाने वाले कलेक्शन में डेटा साफ हो जाएगा और खोज या प्रश्नों में भागीदारी नहीं करेगा। TTL को सेकंड में निर्दिष्ट करें। | मान 0 या इससे अधिक करना चाहिए। 0 का अर्थ है TTL को अक्षम कर देना। |
प्रतिबंधन
संसाधन कॉन्फ़िगरेशन
सुविधा | अधिकतम सीमा |
---|---|
कलेक्शन नाम लंबाई | 255 अक्षर |
कलेक्शन में विभाजनों की संख्या | 4,096 |
कलेक्शन में क्षेत्रों की संख्या | 64 |
कलेक्शन में शार्ड्स की संख्या | 16 |
default_value
पैरामीटर
-
default_value
केवल गैर-ऐरे और गैर-JSON स्कैलर फ़ील्ड के लिए होता है। -
default_value
मुख्य कुंजी पर लागू नहीं होता है। -
default_value
का डेटा प्रकारdtype
में निर्दिष्ट किए गए डेटा प्रकार के समान होना चाहिए। अन्यथा, त्रुटियां हो सकती हैं। -
auto_id
के मामले में, शेष सभी क्षेत्रों को डिफ़ॉल्ट मान का उपयोग करने की अनुमति नहीं है। अन्य शब्दों में, इंसर्ट या अपडेट ऑपरेशन करते समय, आपको कम से कम एक फ़ील्ड के मान की निर्दिष्टि करनी होगी। अन्यथा, त्रुटियां हो सकती हैं।
कलेक्शन का नाम बदलना
यदि आप किसी कलेक्शन का नाम बदलना चाहते हैं, तो आप कलेक्शन नामकरण API का उपयोग करके मिलवस के साथ संवाद कर सकते हैं। यह गाइड आपको समझने में मदद करेगा कि आपने अपने चयनित SDK का उपयोग करके मौजूदा कलेक्शन का नाम बदलने के लिए कैसे करना है।
निम्नलिखित कोड स्निपेट में, हम एक कलेक्शन बनाते हैं और उसे old_collection
का नाम देते हैं, और फिर उसे new_collection
का नाम देते हैं।
from pymilvus import Collection, FieldSchema, CollectionSchema, DataType, connections, utility
connections.connect(alias="default")
schema = CollectionSchema(fields=[
... FieldSchema("int64", DataType.INT64, description="int64", is_primary=True),
... FieldSchema("float_vector", DataType.FLOAT_VECTOR, is_primary=False, dim=128),
... ])
collection = Collection(name="old_collection", schema=schema)
utility.rename_collection("old_collection", "new_collection") # Output: True
utility.has_collection("new_collection") # Output: False
कलेक्शन को संशोधित करना
वर्तमान में, TTL सुविधा केवल Python में उपलब्ध है।
collection.set_properties(properties={"collection.ttl.seconds": 1800})
उपरोक्त उदाहरण में, कलेक्शन की TTL को 1800 सेकंड में बदलता है।
जांचें कि क्या कलेक्शन मौजूद है
मिलवस में क्या कलेक्शन मौजूद है, यह जांचें।
from pymilvus import utility
utility.has_collection("book")
कलेक्शन विवरण जांचें
from pymilvus import Collection
कलेक्शन = Collection("book") # मौजूदा कलेक्शन प्राप्त करें।
कलेक्शन.स्कीमा # कलेक्शन का CollectionSchema लौटाता है।
कलेक्शन.विवरण # कलेक्शन का विवरण लौटाता है।
कलेक्शन.नाम # कलेक्शन का नाम लौटाता है।
कलेक्शन.रिक्त_है # क्या कलेक्शन रिक्त है, उसकी संकेतक लौटाता है।
कलेक्शन.संख्या_कायमियां # कलेक्शन में एंटिटियों की संख्या लौटाता है।
कलेक्शन.मुख्य_फील्ड # मुख्य कुंजी फ़ील्ड का schema.FieldSchema वापस देता है।
कलेक्शन.विभाजन # [विभाजन] ऑब्जेक्ट्स की एक सूची वापस देता है।
कलेक्शन.सूचियों # [सूची] ऑब्जेक्ट्स की एक सूची वापस देता है।
कलेक्शन.गुण # कलेक्शन में डेटा की समाप्ति समय लौटाता है।
सभी कलेक्शन सूचीबद्ध करें
from pymilvus import utility
utility.list_collections()
कलेक्शन ड्रॉप करें
from pymilvus import utility
utility.drop_collection("book")
कलेक्शन उपनाम बनाएँ
from pymilvus import utility
utility.create_alias(
collection_name = "book",
alias = "publication"
)
कलेक्शन उपनाम ड्रॉप करें
from pymilvus import utility
utility.drop_alias(alias = "publication")
`
संग्रह उपनाम संशोधित करें
मौजूदा उपनाम को एक विभिन्न संग्रह की दिशा में दिखाने के लिए संशोधित करें। निम्नलिखित उदाहरण का आधार उपनाम प्रकाशन
को पहले से मौजूदा किसी भी अन्य संग्रह के लिए बनाया गया था।
from pymilvus import utility
utility.alter_alias(
collection_name = "book",
alias = "publication"
)
संग्रह लोड करें
खोज या प्रश्न अभिक्रियाएँ करने से पहले संग्रह को मेमोरी में लोड कैसे करें। Milvus में, सभी खोज और प्रश्न अभिक्रियाएँ मेमोरी में निष्पादित की जाती हैं।
Milvus उपयोगकर्ताओं को संग्रहों को अतिरिक्त CPU और मेमोरी संसाधनों का उपयोग करने के लिए कई प्रतिरूपों के रूप में लोड करने की अनुमति देता है। यह सुविधा अतिरिक्त हार्डवेयर के बिना संपूर्ण क्यूपीएस और संचार को सुधारती है। संग्रह को लोड करने से पहले, सुनिश्चित करें कि आपने इसके लिए एक सूचकांक बनाया है।
from pymilvus import Collection, utility
collection = Collection("book")
collection.load(replica_number=2)
utility.load_state("book")
utility.loading_progress("book")
संग्रह रिहाई
खोज या प्रश्न अभिक्रियाओं के बाद संग्रह को मेमोरी उपयोग कम करने के लिए कैसे रिहाई करें।
from pymilvus import Collection
collection = Collection("book")
collection.release()