Введение в Milvus Python SDK и API
Изображение на обложке
Фон
На следующей иллюстрации показано взаимодействие между SDK и Milvus через gRPC. Представьте, что Milvus - это черный ящик. Буферы протоколов используются для определения интерфейсов сервера и структуры информации, которую они несут. Таким образом, все операции в черном ящике Milvus определяются Protocol API.
Взаимодействие
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
Посмотрите пример протокола в репозитории PyMilvus GitHub на строке 19.
Пример
Определение CreatePartitionRequest
вы можете найти здесь.
Определение
Участникам, которые хотят разработать функцию Milvus или SDK на другом языке программирования, предлагается найти все интерфейсы, которые Milvus предлагает через RPC.
common.proto
common.proto
определяет общие типы информации, включая ErrorCode
, и Status
.
common.proto
schema.proto
schema.proto
определяет схему в параметрах. Следующий пример кода является примером CollectionSchema
.
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 обладает следующими характеристиками:
- Он работает непосредственно с объектами.
- Он изолирует логику обслуживания и детали доступа к данным.
- Он скрывает сложность реализации, и вы можете запускать одни и те же скрипты на разных экземплярах Milvus независимо от подходов к развертыванию и реализации.
API в стиле ORM
Одна из сущностей API в стиле ORM заключается в управлении подключением Milvus. Например, вы можете указать псевдонимы для нескольких серверов Milvus и подключаться или отключаться от них только с помощью их псевдонимов. Вы даже можете удалить адрес локального сервера и управлять определенными объектами именно через конкретное соединение.
Управление подключением
Еще одной особенностью 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 StartedLike the article? Spread the word