Introduction au SDK et à l'API Milvus Python
Image de couverture
Par Xuan Yang
Contexte
L'illustration suivante présente l'interaction entre les SDK et Milvus par le biais de gRPC. Imaginez que Milvus soit une boîte noire. Les tampons de protocole sont utilisés pour définir les interfaces du serveur et la structure des informations qu'ils transportent. Par conséquent, toutes les opérations effectuées dans la boîte noire Milvus sont définies par l'API de protocole.
Interaction
API du protocole Milvus
L'API de protocole Milvus se compose de milvus.proto
, common.proto
, et schema.proto
, qui sont des fichiers de tampons de protocole dont le suffixe est .proto
. Pour garantir un fonctionnement correct, les SDK doivent interagir avec Milvus à l'aide de ces fichiers Protocol Buffers.
milvus.proto
milvus.proto
est le composant essentiel de l'API de protocole Milvus car il définit l'interface MilvusService
, qui définit également toutes les interfaces RPC de Milvus.
L'exemple de code suivant montre l'interface CreatePartitionRequest
. Elle possède deux paramètres principaux de type chaîne collection_name
et partition_name
, sur la base desquels vous pouvez lancer une requête de création de partition.
CreatePartitionRequest
Consultez un exemple de protocole dans le dépôt PyMilvus GitHub à la ligne 19.
Exemple
Vous pouvez trouver la définition de CreatePartitionRequest
ici.
Définition
Les contributeurs qui souhaitent développer une fonctionnalité de Milvus ou un SDK dans un langage de programmation différent sont invités à trouver toutes les interfaces que Milvus offre via RPC.
common.proto
common.proto
définit les types d'information communs, y compris ErrorCode
, et Status
.
common.proto
schema.proto
schema.proto
définit le schéma dans les paramètres. L'exemple de code suivant est un exemple de CollectionSchema
.
schema.proto
milvus.proto
Les interfaces common.proto, common.proto
et schema.proto
constituent ensemble l'API de Milvus, représentant toutes les opérations qui peuvent être appelées via RPC.
Si vous creusez dans le code source et observez attentivement, vous constaterez que lorsque des interfaces telles que create_index
sont appelées, elles appellent en fait plusieurs interfaces RPC telles que describe_collection
et describe_index
. Une grande partie de l'interface extérieure de Milvus est une combinaison de plusieurs interfaces RPC.
Après avoir compris les comportements de RPC, vous pouvez développer de nouvelles fonctionnalités pour Milvus en les combinant. Vous êtes plus que bienvenus pour utiliser votre imagination et votre créativité et contribuer à la communauté Milvus.
PyMilvus 2.0
Mappage objet-relationnel (ORM)
Pour résumer, le mapping objet-relationnel (ORM) fait référence au fait que lorsque vous opérez sur un objet local, ces opérations affectent l'objet correspondant sur le serveur. L'API de type ORM de PyMilvus présente les caractéristiques suivantes :
- Elle opère directement sur les objets.
- Elle isole la logique du service et les détails de l'accès aux données.
- Elle masque la complexité de la mise en œuvre et vous pouvez exécuter les mêmes scripts sur différentes instances Milvus, quelles que soient leurs approches de déploiement ou leur mise en œuvre.
API de type ORM
L'une des caractéristiques essentielles de l'API de type ORM réside dans le contrôle de la connexion Milvus. Par exemple, vous pouvez spécifier des alias pour plusieurs serveurs Milvus et vous y connecter ou vous en déconnecter simplement avec leurs alias. Vous pouvez même supprimer l'adresse du serveur local et contrôler certains objets par le biais d'une connexion spécifique.
Contrôle de la connexion
Une autre caractéristique de l'API de type ORM est que, après abstraction, toutes les opérations peuvent être effectuées directement sur les objets, y compris la collection, la partition et l'index.
Vous pouvez abstraire un objet de collection en récupérant un objet existant ou en en créant un nouveau. Vous pouvez également affecter une connexion Milvus à des objets spécifiques à l'aide d'un alias de connexion, afin de pouvoir opérer sur ces objets localement.
Pour créer un objet de partition, vous pouvez soit le créer avec son objet de collection parent, soit le faire de la même manière que lorsque vous créez un objet de collection. Ces méthodes peuvent également être employées pour un objet index.
Si ces objets de partition ou d'index existent, vous pouvez les obtenir par l'intermédiaire de leur objet de collection parent.
À propos de la série Deep Dive
Avec l'annonce officielle de la disponibilité générale de Milvus 2.0, nous avons orchestré cette série de blogs Milvus Deep Dive afin de fournir une interprétation approfondie de l'architecture et du code source de Milvus. Les sujets abordés dans cette série de blogs sont les suivants
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word