Creazione di una collezione

Questa sezione descrive come creare una collezione in Milvus.

Una collezione è composta da una o più partizioni. Quando si crea una nuova collezione, Milvus crea automaticamente una partizione predefinita chiamata _default.

Nell'esempio seguente viene creata una collezione chiamata book con due shard. Essa include un campo chiave primaria chiamato book_id, un campo scalare INT64 chiamato word_count e un campo vettoriale a due dimensioni in virgola mobile chiamato book_intro. Le applicazioni effettive possono utilizzare dimensioni vettoriali più alte rispetto a quelle nell'esempio.

Definizione dello Schema della Collezione

La collezione da creare deve includere un campo chiave primaria e un campo vettoriale. Il campo chiave primaria supporta i tipi di dati INT64 e VarChar.

Suggerimento: la definizione dello schema della collezione è simile alla definizione di una struttura di tabella in MYSQL.

Prima, preparare i parametri necessari, inclusi gli schemi dei campi, gli schemi delle collezioni e i nomi delle collezioni.

Prima di definire lo schema della collezione, creare uno schema per ciascun campo nella collezione. Per semplificare la complessità dell'inserimento dei dati, Milvus consente di specificare un valore predefinito per ciascun campo scalare (ad eccezione del campo chiave primaria). Ciò significa che se durante l'inserimento dei dati viene lasciato vuoto un campo, verrà utilizzato il valore predefinito configurato per questo campo durante la creazione dello schema del campo.

var (
    collectionName = "book"
    )
schema := &entity.Schema{
  CollectionName: collectionName,
  Description:    "Ricerca di libri di prova",
  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
}

Tipo Parametro Descrizione Opzioni
entity.Schema CollectionName Nome della collezione da creare N/A
Description Descrizione della collezione da creare N/A
AutoID Interruttore utilizzato per abilitare o disabilitare l'assegnazione automatica dell'ID (chiave primaria) True o False
Fields Schemi dei campi nella collezione da creare. Per ulteriori informazioni, vedere lo schema N/A
EnableDynamicField Se abilitare lo schema dinamico. Per ulteriori informazioni sullo schema dinamico, consultare la Guida utente sullo Schema dinamico e la Gestione delle collezioni N/A
entity.Field Name Nome del campo da creare N/A
PrimaryKey Se questo campo è una chiave primaria. Richiesto per i campi chiave primaria N/A
AutoID Se il valore del campo è auto-incrementato. Richiesto per i campi chiave primaria N/A
Description Descrizione del campo N/A
DataType Tipo di dato del campo da creare Per i campi chiave primaria: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Per i campi scalari: - 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) Per i campi vettoriali: - entity.FieldTypeBinaryVector (Vettore binario) - entity.FieldTypeFloatVector (Vettore float)
TypeParams Mappatura alla stringa che imposta i parametri per tipi di dati specifici N/A
IndexParams Mappatura alla stringa che imposta i parametri dell'indice della collezione N/A
IsDynamic Se questo campo abilita lo schema dinamico N/A
IsPartitionKey Se questo campo funge da chiave di partizione N/A

Creare una collezione in base alla struttura definita

Successivamente, creare una collezione utilizzando lo schema specificato.

err = milvusClient.CreaCollezione(
    context.Background(), // ctx
    schema,
    2, // shardNum
)
if err != nil {
    log.Fatal("Impossibile creare la collezione: ", err.Error())
}
Parametro Descrizione Opzioni
ctx Contesto per controllare il processo di chiamata dell'API N/A
numeroShard Numero di shard nella collezione da creare [1,16]

Limitazioni della Raccolta

Configurazione delle Risorse

Funzionalità Limite Massimo
Lunghezza del nome della raccolta 255 caratteri
Numero di partizioni nella raccolta 4.096
Numero di campi nella raccolta 64
Numero di shard nella raccolta 16

Parametro default_value

  • default_value si applica solo ai campi scalari non di tipo array e non di tipo JSON.
  • default_value non si applica alle chiavi primarie.
  • Il tipo di dati di default_value deve essere lo stesso del tipo di dati specificato in dtype, altrimenti potrebbero verificarsi errori.
  • Se viene utilizzato auto_id, non è consentito impostare tutti i campi rimanenti per utilizzare valori predefiniti. In altre parole, durante l'esecuzione delle operazioni di inserimento o aggiornamento, è necessario specificare un valore per almeno un campo, altrimenti potrebbero verificarsi errori.

Verifica dell'esistenza di una raccolta

collExists, err := milvusClient.HasCollection(ctx, nomeRaccolta)
if err != nil {
    log.Fatal("Impossibile verificare l'esistenza della raccolta: ", err.Error())
}

Eliminazione di una raccolta

_ = milvusClient.DropCollection(ctx, nomeRaccolta)

Interrogazione di tutte le raccolte

raccolte, err := milvusClient.ListCollections(ctx)