🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Введение в Milvus Python SDK и API

Введение в Milvus Python SDK и API

  • Engineering
March 21, 2022
Xuan Yang

Cover image Изображение на обложке

Сюань Ян

Фон

На следующей иллюстрации показано взаимодействие между SDK и Milvus через gRPC. Представьте, что Milvus - это черный ящик. Буферы протоколов используются для определения интерфейсов сервера и структуры информации, которую они несут. Таким образом, все операции в черном ящике Milvus определяются Protocol API.

Interaction Взаимодействие

Milvus Protocol API

Milvus Protocol API состоит из milvus.proto, common.proto, и schema.proto, которые представляют собой файлы Protocol Buffers с суффиксом .proto. Чтобы обеспечить правильную работу, SDK должны взаимодействовать с Milvus с помощью этих файлов Protocol Buffers.

milvus.proto

milvus.proto является важнейшим компонентом Milvus Protocol API, поскольку он определяет MilvusService, который далее определяет все RPC-интерфейсы Milvus.

В следующем примере кода показан интерфейс CreatePartitionRequest. Он имеет два основных параметра строкового типа collection_name и partition_name, на основе которых можно запустить запрос на создание раздела.

CreatePartitionRequest CreatePartitionRequest

Посмотрите пример протокола в репозитории PyMilvus GitHub на строке 19.

Example Пример

Определение CreatePartitionRequest вы можете найти здесь.

Definition Определение

Участникам, которые хотят разработать функцию Milvus или SDK на другом языке программирования, предлагается найти все интерфейсы, которые Milvus предлагает через RPC.

common.proto

common.proto определяет общие типы информации, включая ErrorCode, и Status.

common.proto common.proto

schema.proto

schema.proto определяет схему в параметрах. Следующий пример кода является примером CollectionSchema.

schema.proto schema.proto

milvus.proto common.proto и вместе составляют API Milvus, представляя все операции, которые могут быть вызваны через RPC. schema.proto

Если вы покопаетесь в исходном коде и внимательно посмотрите, то обнаружите, что при вызове таких интерфейсов, как create_index, они на самом деле вызывают несколько RPC-интерфейсов, таких как describe_collection и describe_index. Многие внешние интерфейсы Milvus представляют собой комбинацию нескольких RPC-интерфейсов.

Разобравшись с поведением RPC, вы сможете разработать новые возможности для Milvus, используя их комбинации. Мы будем рады, если вы воспользуетесь своим воображением и творческим подходом и внесете свой вклад в развитие сообщества Milvus.

PyMilvus 2.0

Объектно-реляционное отображение (ORM)

Говоря в двух словах, объектно-реляционное отображение (ORM) означает, что когда вы работаете с локальным объектом, эти операции влияют на соответствующий объект на сервере. API PyMilvus в стиле ORM обладает следующими характеристиками:

  1. Он работает непосредственно с объектами.
  2. Он изолирует логику обслуживания и детали доступа к данным.
  3. Он скрывает сложность реализации, и вы можете запускать одни и те же скрипты на разных экземплярах Milvus независимо от подходов к развертыванию и реализации.

API в стиле ORM

Одна из сущностей API в стиле ORM заключается в управлении подключением Milvus. Например, вы можете указать псевдонимы для нескольких серверов Milvus и подключаться или отключаться от них только с помощью их псевдонимов. Вы даже можете удалить адрес локального сервера и управлять определенными объектами именно через конкретное соединение.

Control Connection Управление подключением

Еще одной особенностью API в стиле ORM является то, что после абстрагирования все операции можно выполнять непосредственно над объектами, в том числе над коллекциями, разделами и индексами.

Вы можете абстрагировать объект коллекции, получив существующий объект или создав новый. Вы также можете назначить соединение Milvus определенным объектам с помощью псевдонима соединения, чтобы работать с этими объектами локально.

Чтобы создать объект раздела, вы можете либо создать его вместе с родительским объектом коллекции, либо сделать это так же, как при создании объекта коллекции. Эти методы можно применить и к объекту индекса.

В случае если эти объекты разделов или индексов уже существуют, их можно получить через родительский объект коллекции.

О серии "Глубокое погружение

После официального объявления об общей доступности Milvus 2.0 мы организовали эту серию блогов Milvus Deep Dive, чтобы предоставить углубленную интерпретацию архитектуры и исходного кода Milvus. В этой серии блогов рассматриваются следующие темы:

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Продолжить чтение