Eine Einführung in Milvus Python SDK und API
Titelbild
Von Xuan Yang
Hintergrund
Die folgende Illustration zeigt die Interaktion zwischen SDKs und Milvus über gRPC. Stellen Sie sich vor, dass Milvus eine Blackbox ist. Protokollpuffer werden verwendet, um die Schnittstellen des Servers und die Struktur der von ihnen übertragenen Informationen zu definieren. Daher werden alle Operationen in der Blackbox Milvus durch die Protokoll-API definiert.
Interaktion
Milvus-Protokoll-API
Milvus Protocol API besteht aus milvus.proto
, common.proto
und schema.proto
, die Protokollpufferdateien mit dem Suffix .proto
sind. Um einen ordnungsgemäßen Betrieb zu gewährleisten, müssen SDKs mit Milvus über diese Protocol Buffers-Dateien interagieren.
milvus.proto
milvus.proto
ist die wichtigste Komponente der Milvus Protocol API, da sie die MilvusService
definiert, die wiederum alle RPC-Schnittstellen von Milvus definiert.
Das folgende Codebeispiel zeigt die Schnittstelle CreatePartitionRequest
. Sie hat zwei Hauptparameter vom Typ String collection_name
und partition_name
, auf deren Grundlage Sie eine Anfrage zur Erstellung einer Partition starten können.
CreatePartitionRequest
Ein Beispiel für das Protokoll finden Sie im PyMilvus GitHub Repository in Zeile 19.
Beispiel
Die Definition von CreatePartitionRequest
finden Sie hier.
Definition
Mitwirkende, die ein Feature von Milvus oder ein SDK in einer anderen Programmiersprache entwickeln wollen, können alle Schnittstellen finden, die Milvus über RPC anbietet.
common.proto
common.proto
definiert die allgemeinen Informationstypen, einschließlich ErrorCode
und Status
.
common.proto
schema.proto
schema.proto
definiert das Schema in den Parametern. Das folgende Codebeispiel ist ein Beispiel für CollectionSchema
.
schema.proto
milvus.proto
, common.proto
und schema.proto
bilden zusammen die API von Milvus und repräsentieren alle Operationen, die über RPC aufgerufen werden können.
Wenn Sie den Quellcode genau betrachten, werden Sie feststellen, dass Schnittstellen wie create_index
mehrere RPC-Schnittstellen wie describe_collection
und describe_index
aufrufen, wenn sie aufgerufen werden. Viele der äußeren Schnittstellen von Milvus sind eine Kombination aus mehreren RPC-Schnittstellen.
Wenn Sie das Verhalten von RPC verstanden haben, können Sie durch Kombination neue Funktionen für Milvus entwickeln. Sie sind herzlich eingeladen, Ihre Phantasie und Kreativität zu nutzen und zur Milvus-Gemeinschaft beizutragen.
PyMilvus 2.0
Objekt-relationales Mapping (ORM)
Um es kurz zu machen: Objekt-relationales Mapping (ORM) bedeutet, dass, wenn Sie auf einem lokalen Objekt operieren, diese Operationen das entsprechende Objekt auf dem Server beeinflussen. Die ORM-ähnliche API von PyMilvus weist die folgenden Merkmale auf:
- Sie operiert direkt auf Objekten.
- Sie isoliert Dienstlogik und Datenzugriffsdetails.
- Sie verbirgt die Komplexität der Implementierung, und Sie können dieselben Skripte in verschiedenen Milvus-Instanzen ausführen, unabhängig von deren Bereitstellungsansätzen oder Implementierung.
ORM-ähnliche API
Einer der Kernpunkte der ORM-ähnlichen API liegt in der Steuerung der Milvus-Verbindung. So können Sie beispielsweise Aliase für mehrere Milvus-Server angeben und die Verbindung zu diesen Servern nur über ihre Aliase herstellen oder trennen. Sie können sogar die lokale Serveradresse löschen und bestimmte Objekte über eine bestimmte Verbindung genau steuern.
Verbindung kontrollieren
Ein weiteres Merkmal der ORM-artigen API ist, dass nach der Abstraktion alle Operationen direkt an Objekten durchgeführt werden können, einschließlich Sammlung, Partition und Index.
Sie können ein Sammlungsobjekt abstrahieren, indem Sie ein bestehendes Objekt abrufen oder ein neues Objekt erstellen. Sie können auch eine Milvus-Verbindung zu bestimmten Objekten zuweisen, indem Sie einen Verbindungsalias verwenden, so dass Sie lokal auf diesen Objekten arbeiten können.
Um ein Partitionsobjekt zu erstellen, können Sie es entweder mit seinem übergeordneten Sammlungsobjekt erstellen, oder Sie können es genau wie bei der Erstellung eines Sammlungsobjekts erstellen. Diese Methoden können auch auf ein Indexobjekt angewendet werden.
Wenn diese Partitions- oder Indexobjekte existieren, können Sie sie über ihr übergeordnetes Sammlungsobjekt abrufen.
Über die Deep Dive-Serie
Mit der offiziellen Ankündigung der allgemeinen Verfügbarkeit von Milvus 2.0 haben wir diese Milvus-Deep-Dive-Blogserie ins Leben gerufen, um eine eingehende Interpretation der Milvus-Architektur und des Quellcodes zu bieten. Die Themen dieser Blogserie umfassen:
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word