Daten importieren
Auf dieser Seite wird das Verfahren zum Importieren der vorbereiteten Daten beschrieben.
Bevor Sie beginnen
Sie haben Ihre Daten bereits vorbereitet und in den Milvus-Bucket gelegt.
Falls nicht, sollten Sie zuerst RemoteBulkWriter verwenden, um Ihre Daten vorzubereiten, und sicherstellen, dass die vorbereiteten Daten bereits in den Milvus-Bucket der MinIO-Instanz übertragen wurden, die zusammen mit Ihrer Milvus-Instanz gestartet wurde. Details hierzu finden Sie unter Quelldaten vorbereiten.
Sie haben bereits eine Sammlung mit dem Schema erstellt, das Sie zur Vorbereitung Ihrer Daten verwenden. Falls nicht, lesen Sie bitte den Abschnitt Verwalten von Sammlungen.
Das folgende Code-Snippet erstellt eine einfache Sammlung mit dem angegebenen Schema. Weitere Informationen zu Parametern finden Sie unter create_schema()
und create_collection()
in der SDK-Referenz.
Das folgende Codeschnipsel erstellt eine einfache Sammlung mit dem angegebenen Schema. Weitere Informationen zu den Parametern finden Sie unter createCollection()
in der SDK-Referenz.
client = MilvusClient("http://localhost:19530")
schema = MilvusClient.create_schema(
auto_id=False,
enable_dynamic_field=True
)
schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="vector", datatype=DataType.FLOAT_VECTOR, dim=768)
schema.add_field(field_name="scalar_1", datatype=DataType.VARCHAR, max_length=512)
schema.add_field(field_name="scalar_2", datatype=DataType.INT64)
client.create_collection(
collection_name="quick_setup",
schema=schema
)
import io.milvus.client.MilvusServiceClient;
import io.milvus.param.ConnectParam;
import io.milvus.grpc.DataType;
import io.milvus.param.collection.CollectionSchemaParam;
import io.milvus.param.collection.CollectionSchemaParam;
import io.milvus.param.collection.FieldType;
final MilvusServiceClient milvusClient = new MilvusServiceClient(
ConnectParam.newBuilder()
.withUri("localhost:19530")
.withToken("root:Milvus")
.build()
);
// Define schema for the target collection
FieldType id = FieldType.newBuilder()
.withName("id")
.withDataType(DataType.Int64)
.withPrimaryKey(true)
.withAutoID(false)
.build();
FieldType vector = FieldType.newBuilder()
.withName("vector")
.withDataType(DataType.FloatVector)
.withDimension(768)
.build();
FieldType scalar1 = FieldType.newBuilder()
.withName("scalar_1")
.withDataType(DataType.VarChar)
.withMaxLength(512)
.build();
FieldType scalar2 = FieldType.newBuilder()
.withName("scalar_2")
.withDataType(DataType.Int64)
.build();
CollectionSchemaParam schema = CollectionSchemaParam.newBuilder()
.withEnableDynamicField(true)
.addFieldType(id)
.addFieldType(vector)
.addFieldType(scalar1)
.addFieldType(scalar2)
.build();
// Create a collection with the given schema
milvusClient.createCollection(CreateCollectionParam.newBuilder()
.withCollectionName("quick_setup")
.withSchema(schema)
.build()
);
Daten importieren
Um die vorbereiteten Daten zu importieren, müssen Sie einen Importauftrag wie folgt erstellen:
export MILVUS_URI="localhost:19530"
curl --request POST "http://${MILVUS_URI}/v2/vectordb/jobs/import/create" \
--header "Content-Type: application/json" \
--data-raw '{
"files": [
[
"/8ca44f28-47f7-40ba-9604-98918afe26d1/1.parquet"
],
[
"/8ca44f28-47f7-40ba-9604-98918afe26d1/2.parquet"
]
],
"collectionName": "quick_setup"
}'
Der Anfragekörper enthält zwei Felder:
collectionName
Den Namen der Zielsammlung.
files
Eine Liste mit Listen von Dateipfaden relativ zum Stammverzeichnis des Milvus-Buckets auf der MioIO-Instanz, die zusammen mit Ihrer Milvus-Instanz gestartet wurde. Mögliche Unterlisten sind folgende:
JSON-Dateien
Wenn die vorbereitete Datei im JSON-Format vorliegt, sollte jede Unterliste den Pfad zu einer einzelnen vorbereiteten JSON-Datei enthalten.
[ "/d1782fa1-6b65-4ff3-b05a-43a436342445/1.json" ],
Parquet-Dateien
Wenn die vorbereitete Datei im Parquet-Format vorliegt, sollte jede Teilliste den Pfad zu einer einzelnen vorbereiteten Parquet-Datei enthalten.
[ "/a6fb2d1c-7b1b-427c-a8a3-178944e3b66d/1.parquet" ]
Die mögliche Rückgabe ist wie folgt:
{
"code": 200,
"data": {
"jobId": "448707763884413158"
}
}
Importfortschritt prüfen
Sobald Sie eine Importauftrags-ID erhalten haben, können Sie den Importfortschritt wie folgt überprüfen:
export MILVUS_URI="localhost:19530"
curl --request POST "http://${MILVUS_URI}/v2/vectordb/jobs/import/get_progress" \
--header "Content-Type: application/json" \
--data-raw '{
"jobId": "449839014328146739"
}'
Die mögliche Antwort lautet wie folgt:
{
"code": 200,
"data": {
"collectionName": "quick_setup",
"completeTime": "2024-05-18T02:57:13Z",
"details": [
{
"completeTime": "2024-05-18T02:57:11Z",
"fileName": "id:449839014328146740 paths:\"/8ca44f28-47f7-40ba-9604-98918afe26d1/1.parquet\" ",
"fileSize": 31567874,
"importedRows": 100000,
"progress": 100,
"state": "Completed",
"totalRows": 100000
},
{
"completeTime": "2024-05-18T02:57:11Z",
"fileName": "id:449839014328146741 paths:\"/8ca44f28-47f7-40ba-9604-98918afe26d1/2.parquet\" ",
"fileSize": 31517224,
"importedRows": 100000,
"progress": 100,
"state": "Completed",
"totalRows": 200000
}
],
"fileSize": 63085098,
"importedRows": 200000,
"jobId": "449839014328146739",
"progress": 100,
"state": "Completed",
"totalRows": 200000
}
}
Importaufträge auflisten
Sie können alle Importaufträge in Bezug auf eine bestimmte Sammlung wie folgt auflisten:
export MILVUS_URI="localhost:19530"
curl --request POST "http://${MILVUS_URI}/v2/vectordb/jobs/import/list" \
--header "Content-Type: application/json" \
--data-raw '{
"collectionName": "quick_setup"
}'
Die möglichen Werte sind wie folgt:
{
"code": 200,
"data": {
"records": [
{
"collectionName": "quick_setup",
"jobId": "448761313698322011",
"progress": 50,
"state": "Importing"
}
]
}
}