Sie haben die gewünschten SDKs installiert. Sie können zwischen verschiedenen Sprachen wählen, darunter Python, Java, Go und Node.js.
Überblick
In Milvus speichern Sie Ihre Vektoreinbettungen in Sammlungen. Alle Vektoreinbettungen innerhalb einer Sammlung haben die gleiche Dimensionalität und Distanzmetrik zur Messung der Ähnlichkeit.
Milvus-Sammlungen unterstützen dynamische Felder (d. h. Felder, die nicht im Schema vordefiniert sind) und die automatische Inkrementierung von Primärschlüsseln.
Um verschiedenen Präferenzen gerecht zu werden, bietet Milvus zwei Methoden zur Erstellung einer Sammlung. Die eine bietet eine schnelle Einrichtung, während die andere eine detaillierte Anpassung des Sammlungsschemas und der Indexparameter ermöglicht.
Außerdem können Sie eine Sammlung bei Bedarf anzeigen, laden, freigeben und löschen.
Sammlung erstellen
Sie können eine Sammlung auf eine der beiden folgenden Weisen erstellen:
Schnelleinrichtung
Auf diese Weise können Sie eine Sammlung erstellen, indem Sie ihr einfach einen Namen geben und die Anzahl der Dimensionen der Vektoreinbettungen angeben, die in dieser Sammlung gespeichert werden sollen. Einzelheiten finden Sie unter Schnelleinrichtung.
Benutzerdefinierte Einrichtung
Anstatt In Milvus fast alles für Ihre Sammlung entscheiden zu lassen, können Sie das Schema und die Indexparameter der Sammlung selbst bestimmen. Details dazu finden Sie unter Benutzerdefinierte Einrichtung.
Schnelle Einrichtung
Vor dem Hintergrund des großen Sprungs in der KI-Industrie brauchen die meisten Entwickler nur eine einfache, aber dynamische Sammlung, um damit zu beginnen. Milvus ermöglicht eine schnelle Einrichtung einer solchen Sammlung mit nur drei Argumenten:
Name der zu erstellenden Sammlung,
Dimension der einzufügenden Vektoreinbettungen und
Metrischer Typ, der zur Messung der Ähnlichkeiten zwischen den Vektoreinbettungen verwendet wird.
Für eine schnelle Einrichtung verwenden Sie die create_collection() Methode der MilvusClient Klasse, um eine Sammlung mit dem angegebenen Namen und der Dimension zu erstellen.
Für eine schnelle Einrichtung verwenden Sie die createCollection() Methode der Klasse MilvusClientV2 Klasse, um eine Sammlung mit dem angegebenen Namen und der angegebenen Dimension zu erstellen.
Für eine schnelle Einrichtung verwenden Sie die createCollection() Methode der Klasse MilvusClient Klasse, um eine Sammlung mit dem angegebenen Namen und der angegebenen Dimension zu erstellen.
Für eine schnelle Einrichtung verwenden Sie die Methode CreateCollection() auf eine Instanz der Schnittstelle Client mit der Methode NewClient() um eine Sammlung mit dem angegebenen Namen und der angegebenen Dimension zu erstellen.
Für eine schnelle Einrichtung verwenden Sie den POST /v2/vectordb/collections/create API-Endpunkt, um eine Sammlung mit dem angegebenen Namen und der angegebenen Dimension zu erstellen.
Die im obigen Code generierte Sammlung enthält nur zwei Felder: id (als Primärschlüssel) und vector (als Vektorfeld), wobei die Einstellungen auto_id und enable_dynamic_field standardmäßig aktiviert sind.
auto_id
Durch die Aktivierung dieser Einstellung wird sichergestellt, dass der Primärschlüssel automatisch inkrementiert wird. Die manuelle Bereitstellung von Primärschlüsseln während der Dateneingabe ist nicht erforderlich.
enable_dynamic_field
Wenn diese Einstellung aktiviert ist, werden alle Felder, außer id und vector in den einzufügenden Daten, als dynamische Felder behandelt. Diese zusätzlichen Felder werden als Schlüssel-Wert-Paare in einem speziellen Feld namens $meta gespeichert. Diese Funktion ermöglicht die Einbeziehung zusätzlicher Felder beim Einfügen von Daten.
Die automatisch indizierte und geladene Sammlung aus dem bereitgestellten Code ist für die sofortige Dateneinfügung bereit.
Benutzerdefinierte Einrichtung
Anstatt Milvus fast alles für Ihre Sammlung entscheiden zu lassen, können Sie das Schema und die Indexparameter der Sammlung selbst bestimmen.
Schritt 1: Schema einrichten
Ein Schema definiert die Struktur einer Sammlung. Innerhalb des Schemas haben Sie die Möglichkeit, enable_dynamic_field zu aktivieren oder zu deaktivieren, vordefinierte Felder hinzuzufügen und Attribute für jedes Feld festzulegen. Eine ausführliche Erläuterung des Konzepts und der verfügbaren Datentypen finden Sie unter Schema erklärt.
Um ein Schema einzurichten, verwenden Sie create_schema() um ein Schemaobjekt zu erstellen und add_field() um dem Schema Felder hinzuzufügen.
Um ein Schema einzurichten, verwenden Sie createSchema() um ein Schemaobjekt zu erstellen und addField() um dem Schema Felder hinzuzufügen.
Um ein Schema einzurichten, verwenden Sie entity.NewSchema(), um ein Schemaobjekt zu erstellen, und schema.WithField(), um dem Schema Felder hinzuzufügen.
Um ein Schema einzurichten, müssen Sie ein JSON-Objekt definieren, das dem Schemaformat entspricht, das auf der POST /v2/vectordb/collections/create API-Endpunkt-Referenzseite angezeigt wird.
Legt fest, ob das Primärfeld automatisch inkrementiert wird. Wenn dieser Wert auf True gesetzt wird, wird das Primärfeld automatisch inkrementiert. In diesem Fall sollte das Primärfeld nicht in den einzufügenden Daten enthalten sein, um Fehler zu vermeiden. Die automatisch generierten IDs haben eine feste Länge und können nicht geändert werden.
enable_dynamic_field
Legt fest, ob Milvus die Werte von undefinierten Feldern in einem dynamischen Feld speichert, wenn die in die Zielsammlung eingefügten Daten Felder enthalten, die nicht im Schema der Sammlung definiert sind. Wenn Sie dies auf True setzen, erstellt Milvus ein Feld namens $meta, um alle undefinierten Felder und deren Werte aus den eingefügten Daten zu speichern.
field_name
Der Name des Feldes.
datatype
Der Datentyp des Feldes. Eine Liste der verfügbaren Datentypen finden Sie unter DataType.
is_primary
Ob das aktuelle Feld das Primärfeld in einer Sammlung ist. Jede Sammlung hat nur ein Primärfeld. Ein Primärfeld sollte entweder vom Typ DataType.INT64 oder vom Typ DataType.VARCHAR sein.
dim
Die Dimension der Vektoreinbettungen. Dies ist obligatorisch für ein Feld vom Typ DataType.FLOAT_VECTOR, DataType.BINARY_VECTOR, DataType.FLOAT16_VECTOR oder DataType.BFLOAT16_VECTOR. Wenn Sie DataType.SPARSE_FLOAT_VECTOR verwenden, lassen Sie diesen Parameter weg.
Parameter
Beschreibung
fieldName
Der Name des Feldes.
dataType
Der Datentyp des Feldes. Eine Liste der verfügbaren Datentypen finden Sie unter DataType.
isPrimaryKey
Ob das aktuelle Feld das Primärfeld in einer Sammlung ist. Jede Sammlung hat nur ein Primärfeld. Ein Primärfeld sollte entweder vom Typ DataType.Int64 oder vom Typ DataType.VarChar sein.
autoID
Ob das Primärfeld automatisch inkrementiert werden kann. Wenn dieser Wert auf true gesetzt wird, wird das Primärfeld automatisch inkrementiert. In diesem Fall sollte das Primärfeld nicht in den einzufügenden Daten enthalten sein, um Fehler zu vermeiden.
dimension
Die Dimension der Vektoreinbettungen. Dies ist obligatorisch für ein Feld vom Typ DataType.FloatVector, DataType.BinaryVector, DataType.Float16Vector oder DataType.BFloat16Vector.
Parameter
Beschreibung
name
Der Name des Feldes.
data_type
Der Datentyp des Feldes. Eine Aufzählung aller verfügbaren Datentypen finden Sie unter DataType.
is_primary_key
Ob das aktuelle Feld das Primärfeld in einer Sammlung ist. Jede Sammlung hat nur ein Primärfeld. Ein Primärfeld sollte entweder vom Typ DataType.INT64 oder vom Typ DataType.VARCHAR sein.
auto_id
Ob das Primärfeld beim Einfügen von Daten in diese Sammlung automatisch inkrementiert wird. Der Standardwert ist False. Wenn Sie diesen Wert auf True setzen, wird das Primärfeld automatisch inkrementiert. Überspringen Sie diesen Parameter, wenn Sie eine Sammlung mit einem benutzerdefinierten Schema einrichten müssen.
dim
Die Dimensionalität des Sammlungsfelds, das die Vektoreinbettungen enthält. Der Wert sollte eine ganze Zahl größer als 1 sein und wird in der Regel durch das Modell bestimmt, das Sie zur Erzeugung von Vektoreinbettungen verwenden.
Parameter
Beschreibung
WithName()
Der Name des Feldes.
WithDataType()
Der Datentyp des Feldes.
WithIsPrimaryKey()
Ob das aktuelle Feld das Primärfeld in einer Sammlung ist. Jede Sammlung hat nur ein Primärfeld. Ein Primärfeld sollte entweder vom Typ entity.FieldTypeInt64 oder vom Typ entity.FieldTypeVarChar sein.
WithIsAutoID()
Ob das Primärfeld beim Einfügen von Daten in diese Sammlung automatisch inkrementiert wird. Der Standardwert ist false. Wenn Sie diesen Wert auf true setzen, wird das Primärfeld automatisch inkrementiert. Überspringen Sie diesen Parameter, wenn Sie eine Sammlung mit einem benutzerdefinierten Schema einrichten müssen.
WithDim()
Die Dimensionalität des Sammlungsfelds, das die Vektoreinbettungen enthält. Der Wert sollte eine ganze Zahl größer als 1 sein und wird in der Regel durch das Modell bestimmt, das Sie zur Erzeugung von Vektoreinbettungen verwenden.
Parameter
Beschreibung
fieldName
Der Name des zu erstellenden Feldes in der Zielsammlung.
dataType
Der Datentyp der Feldwerte.
isPrimary
Ob das aktuelle Feld das Primärfeld ist. Die Einstellung True macht das aktuelle Feld zum Primärfeld.
elementTypeParams
Zusätzliche Feldparameter.
dim
Ein optionaler Parameter für FloatVector- oder BinaryVector-Felder, der die Vektordimension bestimmt.
Schritt 2: Einrichten von Indexparametern
Die Indexparameter bestimmen, wie Milvus Ihre Daten innerhalb einer Sammlung organisiert. Sie können den Indexierungsprozess für bestimmte Felder anpassen, indem Sie deren metric_type und index_type einstellen. Für das Vektorfeld haben Sie die Möglichkeit, COSINE, L2, IP, HAMMING oder JACCARD als metric_type zu wählen, je nach Art der Vektoren, mit denen Sie arbeiten. Weitere Informationen finden Sie unter Ähnlichkeitsmetriken.
Um Indexparameter einzurichten, verwenden Sie prepare_index_params() um Index-Parameter vorzubereiten und add_index() um den Index hinzuzufügen.
Um Index-Parameter einzurichten, verwenden Sie IndexParam.
Um Index-Parameter einzurichten, verwenden Sie createIndex().
Um Index-Parameter einzurichten, verwenden Sie CreateIndex().
Um Index-Parameter einzurichten, müssen Sie ein JSON-Objekt definieren, das dem Format der Index-Parameter entspricht, das auf der POST /v2/vectordb/collections/create API-Endpunkt-Referenzseite angezeigt wird.
Der Name der Zieldatei, für die dieses Objekt gilt.
index_type
Der Name des Algorithmus, der für die Anordnung der Daten in dem betreffenden Feld verwendet wird. Anwendbare Algorithmen finden Sie unter In-memory Index und On-disk Index.
metric_type
Der Algorithmus, der zur Messung der Ähnlichkeit zwischen Vektoren verwendet wird. Mögliche Werte sind IP, L2, COSINE, JACCARD, HAMMING. Diese Option ist nur verfügbar, wenn das angegebene Feld ein Vektorfeld ist. Weitere Informationen finden Sie unter In Milvus unterstützte Indizes.
params
Die Feinabstimmungsparameter für den angegebenen Indextyp. Einzelheiten zu den möglichen Schlüsseln und Wertebereichen finden Sie unter In-Memory-Index.
Parameter
Beschreibung
fieldName
Der Name des Zielfeldes, auf das dieses IndexParam-Objekt angewendet wird.
indexType
Der Name des Algorithmus, der zur Anordnung der Daten in dem bestimmten Feld verwendet wird. Anwendbare Algorithmen finden Sie unter In-memory Index und On-disk Index.
metricType
Die für den Index zu verwendende Abstandsmetrik. Mögliche Werte sind IP, L2, COSINE, JACCARD, HAMMING.
Der Name des Zielfeldes, auf dem ein Index erstellt werden soll.
index_type
Der Name des Algorithmus, der verwendet wird, um Daten in einem bestimmten Feld anzuordnen. Anwendbare Algorithmen finden Sie unter In-Memory-Index und On-Disk-Index.
metric_type
Der Algorithmus, der zur Messung der Ähnlichkeit zwischen Vektoren verwendet wird. Mögliche Werte sind IP, L2, COSINE, JACCARD, HAMMING. Diese Option ist nur verfügbar, wenn das angegebene Feld ein Vektorfeld ist. Weitere Informationen finden Sie unter In Milvus unterstützte Indizes.
params
Die Feinabstimmungsparameter für den angegebenen Indextyp. Einzelheiten zu den möglichen Schlüsseln und Wertebereichen finden Sie unter In-Memory-Index.
Parameter
Beschreibung
index_type
Der Name des Algorithmus, der für die Anordnung der Daten in einem bestimmten Feld verwendet wird. Anwendbare Algorithmen finden Sie unter In-Memory-Index und On-Disk-Index.
metric_type
Der Algorithmus, der zur Messung der Ähnlichkeit zwischen Vektoren verwendet wird. Mögliche Werte sind IP, L2, COSINE, JACCARD, HAMMING. Diese Option ist nur verfügbar, wenn das angegebene Feld ein Vektorfeld ist. Weitere Informationen finden Sie unter In Milvus unterstützte Indizes.
nlist
Anzahl der Cluster-Einheiten. Cluster-Einheiten werden in IVF (Inverted File) basierten Indizes in Milvus verwendet. Bei IVF_FLAT unterteilt der Index die Vektordaten in "nlist"-Cluster-Einheiten und vergleicht dann die Abstände zwischen dem Ziel-Eingangsvektor und dem Zentrum jedes Clusters1. Der Wert muss zwischen 1 und 65536 liegen.
Parameter
Beschreibung
fieldName
Der Name des Zielfeldes, für das ein Index erstellt werden soll.
indexName
Der Name des zu erstellenden Indexes. Der Wert ist standardmäßig der Name des Zielfelds.
metricType
Der Algorithmus, der zur Messung der Ähnlichkeit zwischen Vektoren verwendet wird. Mögliche Werte sind IP, L2, COSINE, JACCARD, HAMMING. Diese Option ist nur verfügbar, wenn das angegebene Feld ein Vektorfeld ist. Weitere Informationen finden Sie unter In Milvus unterstützte Indizes.
params
Der Indextyp und die zugehörigen Einstellungen. Weitere Informationen finden Sie unter In-Memory-Index.
params.index_type
Der Typ des zu erstellenden Indexes.
params.nlist
Die Anzahl der Cluster-Einheiten. Dies gilt für IVF-bezogene Indextypen.
Der obige Codeschnipsel zeigt, wie Indexparameter für ein Vektorfeld bzw. ein Skalarfeld eingerichtet werden. Für das Vektorfeld müssen Sie sowohl den metrischen Typ als auch den Indextyp festlegen. Für ein Skalarfeld legen Sie nur den Indextyp fest. Es wird empfohlen, einen Index für das Vektorfeld und alle Skalarfelder zu erstellen, die häufig für die Filterung verwendet werden.
Schritt 3: Erstellen der Sammlung
Sie haben die Möglichkeit, eine Sammlung und eine Indexdatei separat zu erstellen oder eine Sammlung zu erstellen, bei der der Index gleichzeitig mit der Erstellung geladen wird.
Verwenden Sie create_collection(), um eine Collection mit den angegebenen Schema- und Indexparametern zu erstellen und get_load_state(), um den Ladezustand der Collection zu überprüfen.
Verwenden Sie createCollection(), um eine Sammlung mit den angegebenen Schema- und Indexparametern zu erstellen, und getLoadState(), um den Ladestatus der Sammlung zu überprüfen.
Verwenden Sie createCollection(), um eine Collection mit den angegebenen Schema- und Indexparametern zu erstellen und getLoadState(), um den Ladezustand der Collection zu überprüfen.
Erstellen Sie eine Sammlung, bei der der Index gleichzeitig mit der Erstellung geladen wird.
# 3.5. Create a collection with the index loaded simultaneously
client.create_collection(
collection_name="customized_setup_1",
schema=schema,
index_params=index_params
)
time.sleep(5)
res = client.get_load_state(
collection_name="customized_setup_1"
)
print(res)
# Output## {# "state": "<LoadState: Loaded>"# }
import io.milvus.v2.service.collection.request.CreateCollectionReq;
import io.milvus.v2.service.collection.request.GetLoadStateReq;
// 3.4 Create a collection with schema and index parametersCreateCollectionReqcustomizedSetupReq1= CreateCollectionReq.builder()
.collectionName("customized_setup_1")
.collectionSchema(schema)
.indexParams(indexParams)
.build();
client.createCollection(customizedSetupReq1);
// Thread.sleep(5000);// 3.5 Get load state of the collectionGetLoadStateReqcustomSetupLoadStateReq1= GetLoadStateReq.builder()
.collectionName("customized_setup_1")
.build();
res = client.getLoadState(customSetupLoadStateReq1);
System.out.println(res);
// Output:// true
// 3.3 Create a collection with fields and index parameters
res = await client.createCollection({
collection_name: "customized_setup_1",
fields: fields,
index_params: index_params,
})
console.log(res.error_code)
// Output// // Success//
res = await client.getLoadState({
collection_name: "customized_setup_1"
})
console.log(res.state)
// Output// // LoadStateLoaded//
Die oben erstellte Sammlung wird automatisch geladen. Weitere Informationen zum Laden und Freigeben einer Sammlung finden Sie unter Laden und Freigeben einer Sammlung.
Erstellen Sie eine Sammlung und eine Indexdatei separat.
# 3.6. Create a collection and index it separately
client.create_collection(
collection_name="customized_setup_2",
schema=schema,
)
res = client.get_load_state(
collection_name="customized_setup_2"
)
print(res)
# Output## {# "state": "<LoadState: NotLoad>"# }
// 3.6 Create a collection and index it separatelyCreateCollectionReqcustomizedSetupReq2= CreateCollectionReq.builder()
.collectionName("customized_setup_2")
.collectionSchema(schema)
.build();
client.createCollection(customizedSetupReq2);
// 3.4 Create a collection and index it seperately
res = await client.createCollection({
collection_name: "customized_setup_2",
fields: fields,
})
console.log(res.error_code)
// Output// // Success//
res = await client.getLoadState({
collection_name: "customized_setup_2"
})
console.log(res.state)
// Output// // LoadStateNotLoad//
// 3.4 Create a collection and index it seperately
schema.CollectionName = "customized_setup_2"
client.CreateCollection(ctx, schema, entity.DefaultShardNumber)
stateLoad, err := client.GetLoadState(context.Background(), "customized_setup_2", []string{})
if err != nil {
log.Fatal("failed to get load state:", err.Error())
}
fmt.Println(stateLoad)
// Output// 1// LoadStateNotExist -> LoadState = 0// LoadStateNotLoad -> LoadState = 1// LoadStateLoading -> LoadState = 2// LoadStateLoaded -> LoadState = 3
Die oben erstellte Sammlung wird nicht automatisch geladen. Sie können wie folgt einen Index für die Sammlung erstellen. Wenn Sie einen Index für die Sammlung auf eine andere Weise erstellen, wird die Sammlung nicht automatisch geladen. Weitere Informationen finden Sie unter Sammlung laden und freigeben.
Parameter
Beschreibung
collection_name
Der Name der Sammlung.
schema
Das Schema dieser Sammlung. Die Einstellung None bedeutet, dass diese Sammlung mit den Standardeinstellungen erstellt wird. Um eine Sammlung mit einem benutzerdefinierten Schema einzurichten, müssen Sie ein CollectionSchema-Objekt erstellen und es hier referenzieren. In diesem Fall ignoriert Milvus alle anderen schema-bezogenen Einstellungen, die in der Anfrage enthalten sind.
index_params
Die Parameter für die Erstellung des Indexes für das Vektorfeld in dieser Sammlung. Um eine Sammlung mit einem angepassten Schema einzurichten und die Sammlung automatisch in den Speicher zu laden, müssen Sie ein IndexParams-Objekt erstellen und es hier referenzieren. Sie sollten zumindest einen Index für das Vektorfeld in dieser Sammlung hinzufügen. Sie können diesen Parameter auch weglassen, wenn Sie die Indexparameter später einrichten möchten.
Parameter
Beschreibung
collectionName
Der Name der Sammlung.
collectionSchema
Das Schema dieser Sammlung. Wenn Sie diesen Parameter leer lassen, wird diese Sammlung mit den Standardeinstellungen erstellt. Um eine Sammlung mit einem benutzerdefinierten Schema einzurichten, müssen Sie ein CollectionSchema-Objekt erstellen und es hier referenzieren.
indexParams
Die Parameter für die Erstellung des Indexes für das Vektorfeld in dieser Sammlung. Um eine Sammlung mit einem benutzerdefinierten Schema einzurichten und die Sammlung automatisch in den Speicher zu laden, erstellen Sie ein IndexParams-Objekt mit einer Liste von IndexParam-Objekten und referenzieren Sie es hier.
Parameter
Beschreibung
collection_name
Der Name der Sammlung.
fields
Die Felder in der Auflistung.
index_params
Die Indexparameter für die zu erstellende Sammlung.
Parameter
Beschreibung
schema.CollectionName
Der Name der Sammlung.
schema
Das Schema dieser Sammlung.
index_params
Die Indexparameter für die zu erstellende Sammlung.
Parameter
Beschreibung
collectionName
Der Name der Sammlung.
schema
Das Schema ist für die Organisation der Daten in der Zielsammlung verantwortlich. Ein gültiges Schema sollte mehrere Felder haben, die einen Primärschlüssel, ein Vektorfeld und mehrere Skalarfelder umfassen müssen.
schema.autoID
Ob das Primärfeld automatisch inkrementiert werden kann. Wenn Sie diese Option auf True setzen, wird das Primärfeld automatisch inkrementiert. In diesem Fall sollte das Primärfeld nicht in den einzufügenden Daten enthalten sein, um Fehler zu vermeiden. Setzen Sie diesen Parameter in dem Feld, in dem is_primary auf True gesetzt ist.
schema.enableDynamicField
Erlaubt die Verwendung des reservierten Feldes $meta zur Aufnahme von nicht schema-definierten Feldern in Schlüssel-Wert-Paaren.
fields
Eine Liste von Feldobjekten.
fields.fieldName
Der Name des zu erstellenden Feldes in der Zielsammlung.
fields.dataType
Der Datentyp der Feldwerte.
fields.isPrimary
Ob das aktuelle Feld das Primärfeld ist. Durch die Einstellung auf True wird das aktuelle Feld zum Primärfeld.
fields.elementTypeParams
Zusätzliche Feldparameter.
fields.elementTypeParams.dim
Ein optionaler Parameter für FloatVector- oder BinaryVector-Felder, der die Vektordimension bestimmt.
Die oben erstellte Sammlung wird nicht automatisch geladen. Sie können einen Index für die Sammlung wie folgt erstellen. Wenn Sie einen Index für die Sammlung auf separate Weise erstellen, wird die Sammlung nicht automatisch geladen. Einzelheiten finden Sie unter Laden und Freigeben von Sammlungen.
CreateIndexReqcreateIndexReq= CreateIndexReq.builder()
.collectionName("customized_setup_2")
.indexParams(indexParams)
.build();
client.createIndex(createIndexReq);
// Thread.sleep(1000);// 3.7 Get load state of the collectionGetLoadStateReqcustomSetupLoadStateReq2= GetLoadStateReq.builder()
.collectionName("customized_setup_2")
.build();
res = client.getLoadState(customSetupLoadStateReq2);
System.out.println(res);
// Output:// false
Ein IndexParams-Objekt, das eine Liste von IndexParam-Objekten enthält.
Parameter
Beschreibung
collectionName
Der Name der Sammlung.
indexParams
Eine Liste von IndexParam-Objekten.
Parameter
Beschreibung
collection_name
Der Name der Auflistung.
field_name
Der Name des Feldes, in dem ein Index erstellt werden soll.
index_type
Der Name des Algorithmus, der zur Anordnung der Daten in dem spezifischen Feld verwendet wird. Anwendbare Algorithmen finden Sie unter In-Memory-Index und On-Disk-Index.
metric_type
Der Algorithmus, der zur Messung der Ähnlichkeit zwischen Vektoren verwendet wird. Mögliche Werte sind IP, L2, COSINE, JACCARD, HAMMING. Diese Option ist nur verfügbar, wenn das angegebene Feld ein Vektorfeld ist. Weitere Informationen finden Sie unter In Milvus unterstützte Indizes.
params
Die Feinabstimmungsparameter für den angegebenen Indextyp. Einzelheiten zu den möglichen Schlüsseln und Wertebereichen finden Sie unter In-Memory-Index.
Parameter
Beschreibung
collName
Der Name der Sammlung.
fieldName
Der Name des Feldes, in dem ein Index erstellt werden soll.
idx
Der Name des Algorithmus, der zur Anordnung der Daten in dem betreffenden Feld verwendet wird. Anwendbare Algorithmen finden Sie unter In-Memory-Index und On-Disk-Index.
async
Ob dieser Vorgang asynchron ist.
opts
Die Feinabstimmungsparameter für den angegebenen Indextyp. Sie können mehrere `entity.IndexOption` in diese Anfrage aufnehmen. Einzelheiten zu den möglichen Schlüsseln und Wertebereichen finden Sie unter In-memory Index.
Parameter
Beschreibung
collectionName
Der Name der Sammlung.
indexParams
Die Indexparameter für die zu erstellende Sammlung.
indexParams.metricType
Der Typ der Ähnlichkeitsmetrik, der für den Aufbau des Index verwendet wird. Der Standardwert ist COSINE.
indexParams.fieldName
Der Name des Zielfeldes, für das ein Index erstellt werden soll.
indexParams.indexName
Der Name des zu erstellenden Index, der Wert ist standardmäßig der Name des Zielfeldes.
indexParams.indexConfig.index_type
Der Typ des zu erstellenden Indexes.
indexParams.indexConfig.nlist
Die Anzahl der Cluster-Einheiten. Dies gilt für IVF-bezogene Indextypen.
Sammlungen anzeigen
Um die Details einer bestehenden Sammlung zu überprüfen, verwenden Sie describe_collection().
Um die Details einer bestehenden Sammlung zu überprüfen, verwenden Sie describeCollection().
Um die Details einer bestehenden Sammlung zu überprüfen, verwenden Sie describeCollection().
Um die Details einer bestehenden Sammlung zu prüfen, verwenden Sie DescribeCollection().
# 6. List all collection names
res = client.list_collections()
print(res)
# Output## [# "customized_setup_2",# "quick_setup",# "customized_setup_1"# ]
import io.milvus.v2.service.collection.response.ListCollectionsResp;
// 5. List all collection namesListCollectionsResplistCollectionsRes= client.listCollections();
System.out.println(listCollectionsRes.getCollectionNames());
// Output:// [// "customized_setup_2",// "quick_setup",// "customized_setup_1"// ]
// 5. List all collection namesListCollectionsResplistCollectionsRes= client.listCollections();
System.out.println(listCollectionsRes.getCollectionNames());
// Output:// [// "customized_setup_1",// "quick_setup",// "customized_setup_2"// ]
// 5. List all collection names
collections, err := client.ListCollections(ctx)
if err != nil {
log.Fatal("failed to list collection:", err.Error())
}
for _, c := range collections {
log.Println(c.Name)
}
// Output:// customized_setup_2// quick_setup
Während des Ladevorgangs einer Sammlung lädt Milvus die Indexdatei der Sammlung in den Speicher. Umgekehrt entlädt Milvus beim Freigeben einer Sammlung die Indexdatei aus dem Speicher. Bevor Sie eine Suche in einer Sammlung durchführen, stellen Sie sicher, dass die Sammlung geladen ist.
Laden einer Sammlung
Um eine Sammlung zu laden, verwenden Sie die load_collection() Methode und geben Sie den Namen der Sammlung an. Sie können auch replica_number einstellen, um zu bestimmen, wie viele speicherinterne Repliken von Datensegmenten auf Abfrageknoten erstellt werden sollen, wenn die Sammlung geladen wird.
Milvus Standalone: Der maximal zulässige Wert für replica_number ist 1.
Milvus Cluster: Der Höchstwert sollte die in Ihren Milvus-Konfigurationen festgelegte queryNode.replicas nicht überschreiten. Weitere Einzelheiten finden Sie unter Abfrage von knotenbezogenen Konfigurationen.
Um eine Sammlung zu laden, verwenden Sie die loadCollection() Methode und geben Sie den Namen der Sammlung an.
Um eine Sammlung zu laden, verwenden Sie die loadCollection() Methode und geben Sie den Namen der Sammlung an.
Um eine Sammlung zu laden, verwenden Sie die Methode LoadCollection() Methode unter Angabe des Sammlungsnamens.
# 7. Load the collection
client.load_collection(
collection_name="customized_setup_2",
replica_number=1# Number of replicas to create on query nodes. Max value is 1 for Milvus Standalone, and no greater than `queryNode.replicas` for Milvus Cluster.
)
res = client.get_load_state(
collection_name="customized_setup_2"
)
print(res)
# Output## {# "state": "<LoadState: Loaded>"# }
import io.milvus.v2.service.collection.request.LoadCollectionReq;
// 6. Load the collectionLoadCollectionReqloadCollectionReq= LoadCollectionReq.builder()
.collectionName("customized_setup_2")
.build();
client.loadCollection(loadCollectionReq);
// Thread.sleep(5000);// 7. Get load state of the collectionGetLoadStateReqloadStateReq= GetLoadStateReq.builder()
.collectionName("customized_setup_2")
.build();
res = client.getLoadState(loadStateReq);
System.out.println(res);
// Output:// true
// 7. Load the collection
res = await client.loadCollection({
collection_name: "customized_setup_2"
})
console.log(res.error_code)
// Output// // Success// awaitsleep(3000)
res = await client.getLoadState({
collection_name: "customized_setup_2"
})
console.log(res.state)
// Output// // LoadStateLoaded//
// 6. Load the collection
err = client.LoadCollection(ctx, "customized_setup_2", false)
if err != nil {
log.Fatal("failed to laod collection:", err.Error())
}
// 7. Get load state of the collection
stateLoad, err := client.GetLoadState(context.Background(), "customized_setup_2", []string{})
if err != nil {
log.Fatal("failed to get load state:", err.Error())
}
fmt.Println(stateLoad)
// Output:// 3// LoadStateNotExist -> LoadState = 0// LoadStateNotLoad -> LoadState = 1// LoadStateLoading -> LoadState = 2// LoadStateLoaded -> LoadState = 3
Eine Sammlung teilweise laden (öffentliche Vorschau)
Diese Funktion befindet sich derzeit in der öffentlichen Vorschau. Die API und die Funktionalität können sich in Zukunft noch ändern.
Beim Empfang Ihrer Ladeanforderung lädt Milvus alle Vektorfeld-Indizes und alle skalaren Felddaten in den Speicher. Wenn einige Felder nicht in Suchen und Abfragen einbezogen werden sollen, können Sie sie vom Laden ausschließen, um die Speichernutzung zu reduzieren und die Suchleistung zu verbessern.
# 7. Load the collection
client.load_collection(
collection_name="customized_setup_2",
load_fields=["my_id", "my_vector"], # Load only the specified fields
skip_load_dynamic_field=True# Skip loading the dynamic field
)
res = client.get_load_state(
collection_name="customized_setup_2"
)
print(res)
# Output## {# "state": "<LoadState: Loaded>"# }
Beachten Sie, dass nur die in load_fields aufgeführten Felder als Filterbedingungen und Ausgabefelder in Suchen und Abfragen verwendet werden können. Sie sollten immer den Primärschlüssel in die Liste aufnehmen. Die Feldnamen, die vom Laden ausgeschlossen sind, sind nicht für die Filterung oder Ausgabe verfügbar.
Sie können skip_load_dynamic_field=True verwenden, um das Laden des dynamischen Feldes zu überspringen. Milvus behandelt das dynamische Feld als ein einziges Feld, so dass alle Schlüssel des dynamischen Feldes zusammen einbezogen oder ausgeschlossen werden.
Eine Sammlung freigeben
Um eine Sammlung freizugeben, verwenden Sie die release_collection() Methode und geben Sie den Namen der Sammlung an.
Um eine Sammlung freizugeben, verwenden Sie die Methode releaseCollection() Methode unter Angabe des Sammlungsnamens.
Um eine Sammlung freizugeben, verwenden Sie die releaseCollection() Methode und geben Sie den Namen der Sammlung an.
Um eine Sammlung freizugeben, verwenden Sie die ReleaseCollection() Methode und geben Sie den Namen der Sammlung an.
Sie können Sammlungen Aliasnamen zuweisen, um ihnen in einem bestimmten Kontext mehr Bedeutung zu verleihen. Sie können einer Sammlung mehrere Aliasnamen zuweisen, aber nicht mehrere Sammlungen können sich einen Alias teilen.
Aliasnamen erstellen
Um Aliasnamen zu erstellen, verwenden Sie die create_alias() Methode und geben Sie den Namen der Sammlung und den Alias an.
Um Aliasnamen zu erstellen, verwenden Sie die Methode createAlias() unter Angabe des Sammlungsnamens und des Alias.
Um Aliasnamen zu erstellen, verwenden Sie die Methode createAlias() unter Angabe des Sammlungsnamens und des Alias.
Der Name der Sammlung, für die ein Alias erstellt werden soll.
alias
Der Alias der Sammlung. Vergewissern Sie sich vor diesem Vorgang, dass der Alias nicht bereits existiert. Wenn dies der Fall ist, treten Ausnahmen auf.
Parameter
Beschreibung
collectionName
Der Name der Sammlung, für die ein Alias erstellt werden soll.
alias
Der Alias der Sammlung. Vergewissern Sie sich vor diesem Vorgang, dass der Alias nicht bereits existiert. Ist dies der Fall, treten Ausnahmen auf.
Parameter
Beschreibung
collection_name
Der Name der Sammlung, für die ein Alias erstellt werden soll.
alias
Der Alias der Sammlung. Vergewissern Sie sich vor diesem Vorgang, dass der Alias nicht bereits existiert. Ist dies der Fall, treten Ausnahmen auf.
Parameter
Beschreibung
collectionName
Der Name der Sammlung, für die ein Alias erstellt werden soll.
aliasName
Der Alias der Sammlung. Vergewissern Sie sich vor diesem Vorgang, dass der Alias nicht bereits existiert. Ist dies der Fall, treten Ausnahmen auf.
Aliasnamen auflisten
Um Aliasnamen aufzulisten, verwenden Sie die list_aliases() Methode und geben Sie den Namen der Sammlung an.
Um Aliasnamen aufzulisten, verwenden Sie die Methode listAliases() Methode unter Angabe des Sammlungsnamens.
Um Aliasnamen aufzulisten, verwenden Sie die Methode listAliases() Methode unter Angabe des Sammlungsnamens.
Sie können Eigenschaften für eine Sammlung festlegen, z. B. ttl.seconds und mmap.enabled. Weitere Informationen finden Sie unter set_properties().
Die Codeschnipsel in diesem Abschnitt verwenden das PyMilvus ORM-Modul zur Interaktion mit Milvus. Code-Schnipsel mit dem neuen MilvusClient SDK werden bald verfügbar sein.
TTL setzen
Setzen Sie die Time-To-Live (TTL) für die Daten in der Sammlung, die angibt, wie lange die Daten aufbewahrt werden sollen, bevor sie automatisch gelöscht werden.
from pymilvus import Collection, connections
# Connect to Milvus server
connections.connect(host="localhost", port="19530") # Change to your Milvus server IP and port# Get existing collection
collection = Collection("quick_setup")
# Set the TTL for the data in the collection
collection.set_properties(
properties={
"collection.ttl.seconds": 60
}
)
MMAP einstellen
Konfigurieren Sie die Eigenschaft Speicherzuordnung (MMAP) für die Sammlung, die festlegt, ob Daten im Speicher abgebildet werden, um die Abfrageleistung zu verbessern. Weitere Informationen finden Sie unter Konfigurieren der Speicherzuordnung.
Bevor Sie die MMAP-Eigenschaft einstellen, müssen Sie die Sammlung zuerst freigeben. Andernfalls tritt ein Fehler auf.
from pymilvus import Collection, connections
# Connect to Milvus server
connections.connect(host="localhost", port="19530") # Change to your Milvus server IP and port# Get existing collection
collection = Collection("quick_setup")
# Before setting memory mapping property, we need to release the collection first.
collection.release()
# Set memory mapping property to True or Flase
collection.set_properties(
properties={
"mmap.enabled": True
}
)
Eine Sammlung löschen
Wenn eine Sammlung nicht mehr benötigt wird, können Sie die Sammlung löschen.
Um eine Sammlung zu löschen, verwenden Sie die drop_collection() Methode und geben Sie den Namen der Sammlung an.
Um eine Sammlung zu löschen, verwenden Sie die dropCollection() und geben Sie dabei den Namen der Sammlung an.
Um eine Sammlung zu löschen, verwenden Sie die dropCollection() Methode und geben Sie den Namen der Sammlung an.
Um eine Sammlung zu löschen, verwenden Sie die DropCollection() Methode unter Angabe des Sammlungsnamens.
// 10. Drop the collection
res = await client.dropCollection({
collection_name: "customized_setup_2"
})
console.log(res.error_code)
// Output// // Success//
res = await client.dropCollection({
collection_name: "customized_setup_1"
})
console.log(res.error_code)
// Output// // Success//
res = await client.dropCollection({
collection_name: "quick_setup"
})
console.log(res.error_code)
// Output// // Success//
// 10. Drop collections
err = client.DropCollection(ctx, "quick_setup")
if err != nil {
log.Fatal("failed to drop collection:", err.Error())
}
err = client.DropCollection(ctx, "customized_setup_2")
if err != nil {
log.Fatal("failed to drop collection:", err.Error())
}