Milvus'taki Collection sınıfı, verileri düzenlemek için kullanılan MySQL'deki bir tabloya benzer ve bir veya daha fazla bölümden oluşur.
Bir Collection Oluşturma
Bir koleksiyon, bir veya daha fazla bölümden oluşur. Yeni bir koleksiyon oluşturulduğunda, Milvus varsayılan olarak _default
adında bir bölüm oluşturur. Daha fazla bilgi için, koleksiyonlarla ilgili terimler açıklamasına bakınız.
Aşağıdaki örnek, book_id
adında birincil anahtar alanı, word_count
adında bir INT64
skalası alanı ve book_intro
adında iki boyutlu kayan nokta vektör alanı içeren iki bölüm içeren bir "book" koleksiyonu oluşturacaktır. Gerçek uygulamalar genellikle örnektekinden daha yüksek boyutlu vektörler kullanır.
Hazırlık Modu
Bu mod, bir MYSQL tablosunun yapısını tanımlamaya benzer.
Oluşturulacak koleksiyon, birincil anahtar alanı ve vektör alanını içermelidir. Birincil anahtar alanı INT64 ve VarChar veri tiplerini destekler.
İlk olarak, alan şeması, koleksiyon şeması ve koleksiyon adı da dahil olmak üzere gerekli parametreleri hazırlayın.
Koleksiyon şemasını tanımlamadan önce, koleksiyondaki her alan için bir şema oluşturun. Veri ekleme karmaşıklığını azaltmak için, Milvus, her skaler alan için (birincil anahtar alanı hariç) varsayılan bir değer belirtmenize izin verir. Bu, veri eklerken bir alanı boş bırakırsanız, alan şeması oluşturulurken yapılandırılan varsayılan değerin kullanılacağı anlamına gelir.
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="Bilinmiyor" # Varsayılan değer "Bilinmiyor"
)
word_count = FieldSchema(
name="word_count",
dtype=DataType.INT64,
default_value=9999 # Varsayılan değer 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="Test kitap araması", # Açıklama "Test kitap araması"
enable_dynamic_field=True # Dinamik şemayı etkinleştir
)
collection_name = "kitap"
Şema Türü | Parametre | Açıklama | Seçenekler |
---|---|---|---|
FieldSchema |
name |
Oluşturulacak alanın adı. | Yok |
dtype |
Oluşturulacak alanın veri tipi. | Birincil anahtar alanı: - DataType.INT64 (numpy.int64) - DataType.VARCHAR (VARCHAR) Skaler alanlar: - 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) Vektör alanları: - BINARY_VECTOR (Binary vector) - FLOAT_VECTOR (Float vector) |
|
is_primary |
Alanın birincil anahtar alanı olup olmadığını kontrol eden bir anahtar. Bu parametre birincil anahtar alanları için belirtilmelidir. | True veya False |
|
auto_id |
Otomatik ID (birincil anahtar) atamasını etkinleştirmek veya devre dışı bırakmak için anahtar. Bu parametre birincil anahtar alanları için belirtilmelidir ve varsayılan olarak False olarak ayarlanmıştır. |
True veya False |
|
max_length (VARCHAR alanları için gereklidir) |
Eklenebilecek dizenin maksimum uzunluğu. | [1, 65,535] | |
default_value |
Alanın varsayılan değeri. Bu parametre yalnızca dizi olmayan ve JSON olmayan skaler alanlar için geçerlidir. Birincil anahtar alanı için varsayılan bir değer belirtmek mümkün değildir. Daha fazla bilgi için lütfen default_value parametresine bakın. |
Yok | |
dim (Vektör alanları için gerekli) |
Vektörün boyutu. | [1, 32,768] | |
description (İsteğe bağlı) |
Alanın açıklaması. | Yok | |
CollectionSchema |
fields |
Koleksiyon için oluşturulacak alanlar. | Yok |
description (İsteğe bağlı) |
Oluşturulacak koleksiyonun açıklaması. | Yok | |
enable_dynamic_field |
Dinamik şemayı etkinleştirmek için bir anahtar. Veri tipi: Boolean (true veya false ). İsteğe bağlı, varsayılan olarak False 'dur. Dinamik şema hakkında daha fazla bilgi için lütfen dinamik şema ve koleksiyon yönetimi kullanıcı kılavuzuna bakın. |
||
collection_name |
Oluşturulacak koleksiyonun adı. | Yok |
Şemayla Birlikte Bir Koleksiyon Oluşturma
Sonraki adımda, belirtilen şemaya sahip bir koleksiyon oluşturun.
from pymilvus import Collection
collection = Collection(
name=koleksiyon_adi,
schema=şema,
using='varsayılan',
shards_num=2
)
Parametre | Açıklama | Seçenekler |
---|---|---|
using (isteğe bağlı) |
Sunucunun takma adını burada belirtin ve koleksiyonu Milvus sunucusunda nereye oluşturacağını seçin. | YOK |
shards_num (isteğe bağlı) |
Oluşturulacak koleksiyonun shard'ları sayısı. | [1,16] |
num_partitions (isteğe bağlı) |
Oluşturulacak koleksiyon için bölümlerin mantıksal numarası. | [1,4096] |
*kwargs: collection.ttl.seconds (isteğe bağlı) |
Koleksiyonun TTL'si koleksiyonun süresi. Süresi dolan koleksiyondaki veriler temizlenecek ve aramalara veya sorgulara katılmayacaktır. TTL'yi saniye cinsinden belirtin. | Değer 0 veya daha büyük olmalıdır. 0, TTL'yi devre dışı bırakır. |
Sınırlamalar
Kaynak Yapılandırması
Özellik | Maksimum Limit |
---|---|
Koleksiyon Adı Uzunluğu | 255 karakter |
Koleksiyondaki Bölüm Sayısı | 4,096 |
Koleksiyondaki Alan Sayısı | 64 |
Koleksiyondaki Shard Sayısı | 16 |
default_value
Parametresi
-
default_value
yalnızca dizi olmayan ve JSON olmayan skaler alanlara uygulanır. -
default_value
anahtar alana uygulanmaz. -
default_value
'nun veri türü,dtype
tarafından belirtilen veri türüyle aynı olmalıdır. Aksi takdirde hatalar meydana gelebilir. -
auto_id
kullanımında, kalan tüm alanların varsayılan değeri kullanılmasına izin verilmez. Başka bir deyişle, ekleme veya güncelleme işlemlerini gerçekleştirirken en az bir alanın değerini belirtmeniz gerekir. Aksi takdirde hatalar meydana gelebilir.
Bir Koleksiyonun Yeniden Adlandırılması
Bir koleksiyonun adını değiştirmek istiyorsanız, koleksiyonun adını değiştirme API'sini kullanarak Milvus ile etkileşimde bulunabilirsiniz. Bu rehber, mevcut bir koleksiyonu yeniden adlandırmak için seçtiğiniz SDK'yı nasıl kullanacağınızı anlamanıza yardımcı olacaktır.
Aşağıdaki kod örneğinde, bir koleksiyon oluştururuz ve ona eski_koleksiyon
adını veririz, ardından onu yeni_koleksiyon
olarak yeniden adlandırırız.
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="eski_koleksiyon", schema=schema)
utility.rename_collection("eski_koleksiyon", "yeni_koleksiyon") # Çıktı: True
utility.has_collection("yeni_koleksiyon") # Çıktı: False
Bir Koleksiyonu Düzenleme
Şu anda, TTL özelliği sadece Python'da mevcuttur.
collection.set_properties(properties={"collection.ttl.seconds": 1800})
Yukarıdaki örnek, koleksiyonun TTL'sini 1800 saniyeye değiştirir.
Bir Koleksiyonun Varlığını Kontrol Etme
Koleksiyonun Milvus'ta var olup olmadığını doğrulayın.
from pymilvus import utility
utility.has_collection("kitap")
Koleksiyon Detaylarını Kontrol Etme
from pymilvus import Collection
collection = Collection("kitap") # Var olan bir koleksiyon alın.
collection.schema # Koleksiyonun CollectionSchema'sını döndürür.
collection.description # Koleksiyonun açıklamasını döndürür.
collection.name # Koleksiyonun adını döndürür.
collection.is_empty # Koleksiyonun boş olup olmadığını belirten bir boolean döndürür.
collection.num_entities # Koleksiyondaki varlıkların sayısını döndürür.
collection.primary_field # Anahtar alanın schema.FieldSchema'sını döndürür.
collection.partitions # [Partition] nesneleri listesini döndürür.
collection.indexes # [Index] nesneleri listesini döndürür.
collection.properties # Koleksiyondaki verilerin son kullanma zamanını döndürür.
Tüm koleksiyonları listele
from pymilvus import utility
utility.list_collections()
Bir koleksiyonu sil
from pymilvus import utility
utility.drop_collection("kitap")
Bir koleksiyon takma adı oluştur
from pymilvus import utility
utility.create_alias(
collection_name = "kitap",
alias = "yayin"
)
Bir koleksiyon takma adını sil
from pymilvus import utility
utility.drop_alias(alias = "yayin")
Bir koleksiyon takma adını değiştirme
Mevcut bir takma adı, farklı bir koleksiyona işaret etmek üzere değiştirin. Aşağıdaki örnek, publication
takma adının başlangıçta başka bir koleksiyon için oluşturulduğu senaryoya dayanmaktadır.
from pymilvus import utility
utility.alter_alias(
collection_name = "book",
alias = "publication"
)
Bir koleksiyonu yükleme
Arama veya sorgu işlemlerinden önce bir koleksiyonu belleğe nasıl yükleyeceğiniz. Milvus'ta tüm arama ve sorgu işlemleri bellekte gerçekleştirilir.
Milvus, kullanıcılara koleksiyonları ek CPU ve bellek kaynakları kullanarak birden fazla replika olarak yüklemelerine izin verir. Bu özellik, ek donanım olmaksızın genel QPS ve verimliliği arttırır. Bir koleksiyonu yüklemek için önce onun için bir indeks oluşturduğunuzdan emin olun.
from pymilvus import Collection, utility
collection = Collection("book")
collection.load(replica_number=2)
utility.load_state("book")
utility.loading_progress("book")
Bir koleksiyonu serbest bırakma
Arama veya sorgu işlemlerinden sonra bellek kullanımını azaltmak için bir koleksiyonu nasıl serbest bırakacağınızı gösterir.
from pymilvus import Collection
collection = Collection("book")
collection.release()