Tworzenie kolekcji
Ten temat opisuje, jak utworzyć kolekcję w Milvus.
Kolekcja składa się z jednej lub więcej partycji. Podczas tworzenia nowej kolekcji, Milvus automatycznie tworzy domyślną partycję o nazwie _default
.
W poniższym przykładzie tworzona jest kolekcja o nazwie book
z dwoma fragmentami. Zawiera ona pole klucza głównego o nazwie book_id
, skalarnym polem word_count
typu INT64
oraz dwuwymiarowe pole wektorowe o zmiennoprzecinkowych liczbach zmiennoprzecinkowych o nazwie book_intro
. W rzeczywistych aplikacjach wymiary wektorów mogą być wyższe niż te przedstawione w przykładzie.
Definicja schematu kolekcji
Kolekcja, którą chcemy utworzyć, musi zawierać pole klucza głównego i pole wektorowe. Pole klucza głównego obsługuje typy danych INT64 i VarChar.
Wskazówka: Definicja schematu kolekcji jest podobna do definiowania struktury tabeli w MYSQL.
Na początku przygotuj niezbędne parametry, w tym schematy pól, schematy kolekcji i nazwy kolekcji.
Przed zdefiniowaniem schematu kolekcji, należy utworzyć schemat dla każdego pola w kolekcji. Aby uproszczyć złożoność wstawiania danych, Milvus pozwala określić domyślną wartość dla każdego pola skalarne (z wyjątkiem pola klucza głównego). Oznacza to, że jeśli pole pozostanie puste podczas wstawiania danych, zostanie użyta skonfigurowana domyślna wartość dla tego pola podczas tworzenia schematu pola.
var (
collectionName = "book"
)
schema := &entity.Schema{
CollectionName: collectionName,
Description: "Wyszukiwanie testowych książek",
Fields: []*entity.Field{
{
Name: "book_id",
DataType: entity.FieldTypeInt64,
PrimaryKey: true,
AutoID: false,
},
{
Name: "word_count",
DataType: entity.FieldTypeInt64,
PrimaryKey: false,
AutoID: false,
},
{
Name: "book_intro",
DataType: entity.FieldTypeFloatVector,
TypeParams: map[string]string{
"dim": "2",
},
},
},
EnableDynamicField: true
}
Typ | Parametr | Opis | Opcje |
---|---|---|---|
entity.Schema |
CollectionName |
Nazwa tworzonej kolekcji | N/A |
Description |
Opis tworzonej kolekcji | N/A | |
AutoID |
Przełącznik używany do włączenia lub wyłączenia automatycznej alokacji ID (klucza głównego) | True lub False |
|
Fields |
Schematy pól w tworzonej kolekcji. Aby uzyskać więcej informacji, zobacz schemat | N/A | |
EnableDynamicField |
Czy włączyć dynamiczny schemat. Aby uzyskać więcej informacji na temat dynamicznego schematu, zobacz Przewodnik Użytkownika Dynamicznym Schematem i Zarządzaniem Kolekcjami | N/A | |
entity.Field |
Name |
Nazwa tworzonego pola | N/A |
PrimaryKey |
Czy to pole jest kluczem głównym. Wymagane dla pól klucza głównego | N/A | |
AutoID |
Czy wartość pola jest autoinkrementowana. Wymagane dla pól klucza głównego | N/A | |
Description |
Opis pola | N/A | |
DataType |
Typ danych tworzonego pola | Dla pól klucza głównego: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Dla pól skalarnych: - entity.FieldTypeBool(Boolean) - entity.FieldTypeInt8(numpy.int8) - entity.FieldTypeInt16(numpy.int16) - entity.FieldTypeInt32(numpy.int32) - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeFloat(numpy.float32) - entity.FieldTypeDouble(numpy.double) - entity.FieldTypeVarChar(VARCHAR) Dla pól wektorowych: - entity.FieldTypeBinaryVector (Wektor binarny) - entity.FieldTypeFloatVector (Wektor zmiennoprzecinkowy) |
|
TypeParams |
Mapowanie do ciągu ustawiającego parametry dla konkretnych typów danych | N/A | |
IndexParams |
Mapowanie do ciągu ustawiającego parametry indeksu kolekcji | N/A | |
IsDynamic |
Czy to pole umożliwia dynamiczny schemat | N/A | |
IsPartitionKey |
Czy to pole działa jako klucz partycji | N/A |
Utwórz kolekcję na podstawie zdefiniowanej struktury
Następnie utwórz kolekcję z użyciem określonego schematu.
err = milvusClient.CreateCollection(
context.Background(), // ctx
schema,
2, // shardNum
)
if err != nil {
log.Fatal("Nie udało się utworzyć kolekcji: ", err.Error())
}
Parametr | Opis | Opcje |
---|---|---|
ctx |
Kontekst kontrolujący proces wywołania API | N/A |
shardNum |
Liczba fragmentów w tworzonej kolekcji | [1,16] |
Ograniczenia kolekcji
Konfiguracja zasobów
Funkcja | Maksymalne ograniczenie |
---|---|
Długość nazwy kolekcji | 255 znaków |
Liczba partycji w kolekcji | 4,096 |
Liczba pól w kolekcji | 64 |
Liczba shardów w kolekcji | 16 |
Parametr default_value
-
default_value
dotyczy tylko pól skalarnych niebędących tablicami ani obiektami JSON. -
default_value
nie ma zastosowania do kluczy głównych. - Typ danych parametru
default_value
musi być taki sam jak określony wdtype
, w przeciwnym razie mogą wystąpić błędy. - Jeśli używane jest
auto_id
, nie wolno ustawić wszystkich pozostałych pól na wartości domyślne. Innymi słowy, podczas wykonywania operacji wstawiania lub aktualizacji, należy określić wartość przynajmniej jednego pola, w przeciwnym razie mogą wystąpić błędy.
Sprawdź, czy kolekcja istnieje
collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
log.Fatal("Nie udało się sprawdzić, czy kolekcja istnieje: ", err.Error())
}
Usuń kolekcję
_ = milvusClient.DropCollection(ctx, collectionName)
Zapytaj o wszystkie kolekcje
collections, err := milvusClient.ListCollections(ctx)