🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI

HomeBlogsEine Einführung in Milvus Python SDK und API

Eine Einführung in Milvus Python SDK und API

  • Engineering
March 21, 2022
Xuan Yang

Cover image 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.

Interaction 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 CreatePartitionRequest

Ein Beispiel für das Protokoll finden Sie im PyMilvus GitHub Repository in Zeile 19.

Example Beispiel

Die Definition von CreatePartitionRequest finden Sie hier.

Definition 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 common.proto

schema.proto

schema.proto definiert das Schema in den Parametern. Das folgende Codebeispiel ist ein Beispiel für CollectionSchema.

schema.proto 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:

  1. Sie operiert direkt auf Objekten.
  2. Sie isoliert Dienstlogik und Datenzugriffsdetails.
  3. 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.

Control Connection 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 Started

Like the article? Spread the word

Weiterlesen