所有文章 > API开发 > Milvus Python SDK 和 API 全面介绍:利用 ORM 风格提升管理效率
Milvus Python SDK 和 API 全面介绍:利用 ORM 风格提升管理效率

Milvus Python SDK 和 API 全面介绍:利用 ORM 风格提升管理效率

背景介绍

下图展示了 SDK 与 Milvus 之间通过 gRPC 的交互流程。在这个场景中,可以将 Milvus 视为一个黑匣子,协议缓冲区则用于定义服务器接口及其携带信息的结构。因此,Milvus 黑匣子内的所有操作均由 Protocol API 进行定义。

Milvus 协议 API

Milvus Protocol API 由 milvus.protocommon.protoschema.proto 组成,这些都是后缀为 .proto 的 Protocol Buffers 文件。SDK 需要使用这些 Protocol Buffers 文件与 Milvus 进行交互,以确保其正常运行。

milvus.proto

milvus.proto 是 Milvus Protocol API 的核心,定义了所有的 RPC 接口。以下代码示例展示了 CreatePartitionRequest 接口,它包含两个字符串类型的参数:collection_namepartition_name,通过这两个参数可以发起分区创建请求。

CreatePartitionRequest interface

有关详细示例,请参见 PyMilvus GitHub 存储库中第 19 行的协议示例。

通用原型

common.proto 定义了一些常见的信息类型,包括 Status

模式原型

schema.proto 则定义了参数中的模式,以下是 CollectionSchema 的示例。

schema.proto

milvus.protocommon.protoschema.proto 共同构成了 Milvus 的 API,涵盖所有可以通过 RPC 调用的操作。深入源码可以发现,调用像 create_index 这样的接口时,实际上涉及多个 RPC 接口,例如 describe_collectiondescribe_index。许多对外接口是多个 RPC 接口的组合。

了解了 RPC 的行为后,可以通过组合它们为 Milvus 开发新功能。非常欢迎各位贡献者发挥想象力与创造力,为 Milvus 社区做出贡献。

PyMilvus 2.0:对象关系映射 (ORM)

对象关系映射(ORM)是指在操作本地对象时,这些操作会影响服务器上对应的对象。PyMilvus 的 ORM 风格 API 具有以下特点:

  • 直接作用于对象:操作简便,直接针对对象进行。
  • 隔离服务逻辑和数据访问:实现了服务逻辑与数据访问细节的分离。
  • 隐藏复杂性:可以在不同的 Milvus 实例上运行相同的脚本,无需关注其部署或实现细节。

ORM 风格的 API

ORM 风格的 API 允许对 Milvus 连接进行控制。例如,可以为多个 Milvus 服务器指定别名,方便地通过别名连接或断开连接,甚至可以精确控制某些对象的连接。

ORM 风格 API 还使所有操作都可以直接对对象进行,包括集合、分区和索引。用户可以通过获取现有集合对象或创建新集合对象来操作集合。使用连接别名,可以为特定对象分配 Milvus 连接,便于在本地操作。

创建分区对象时,可以使用其父集合对象来生成分区,也可以像创建集合对象那样进行操作。这种方法同样适用于索引对象。如果分区或索引对象已存在,则可以通过其父集合对象获取它们。

总结

本文介绍了 PyMilvus 2.0 的对象关系映射(ORM)风格 API,强调了其在与 Milvus 交互时的优势。ORM 允许用户通过直接操作本地对象,简化了服务逻辑与数据访问的复杂性。通过控制 Milvus 连接,用户可以方便地管理多个服务器和对象。

通过使用集合、分区和索引的对象化操作,用户可以高效地与 Milvus 进行交互,提升了开发效率。总之,PyMilvus 的 ORM 风格 API 为开发者提供了一个灵活、直观的方式来利用 Milvus 的强大功能。

原文链接:An Introduction to Milvus Python SDK and API

#你可能也喜欢这些API文章!