Milvus Python SDK和API介绍
背景 下图描述了 SDK 与 Milvus 通过 gRPC 进行的交互。想象一下 Milvus 是一个黑盒子。协议缓冲区用于定义服务器的接口,以及它们携带的信息的结构。因此,黑盒 Milvus 中的所有操作都是由 Protocol API 定义的。 风筝协议API Milvus Protocol API 由milvus.proto、common.proto和schema.proto组成,它们是后缀
背景
下图描述了 SDK 与 Milvus 通过 gRPC 进行的交互。想象一下 Milvus 是一个黑盒子。协议缓冲区用于定义服务器的接口,以及它们携带的信息的结构。因此,黑盒 Milvus 中的所有操作都是由 Protocol API 定义的。
风筝协议API
Milvus Protocol API 由milvus.proto
、common.proto
和schema.proto
组成,它们是后缀为.proto
的 Protocol Buffers 文件。为确保正常运行,SDK 必须通过这些 Protocol Buffers 文件与 Milvus 进行交互。
kite.proto
milvus.proto
是 Milvus 协议 API 的重要组成部分,因为它定义了MilvusService
,进一步定义了 Milvus 的所有 RPC 接口。
以下代码示例显示了接口CreatePartitionRequest
。它有两个主要的字符串类型参数collection_name
和partition_name
,您可以根据它们启动分区创建请求。
在第 19 行查看PyMilvus GitHub 存储库中的协议示例。
您可以在此处找到CreatePartitionRequest
的定义。
欢迎希望使用不同编程语言开发 Milvus 功能或 SDK 的贡献者找到 Milvus 通过 RPC 提供的所有接口。
common.proto
common.proto
定义了常用的信息类型,包括ErrorCode
和Status
。
schema.proto
schema.proto
在参数中定义了模式。以下代码示例是CollectionSchema
的示例。
milvus.proto
、common.proto
、schema.proto
共同构成了Milvus的API,代表了所有可以通过RPC调用的操作。
如果深入源码仔细观察,会发现在调用create_index
等接口时,实际上调用了describe_collection
、describe_index
等多个RPC接口。 Milvus 的很多对外接口是多个 RPC 接口的组合。
了解了 RPC 的行为之后,您就可以通过组合为 Milvus 开发新的功能。非常欢迎您发挥您的想象力和创造力,为 Milvus 社区做出贡献。
PyMilvus 2.0
对象关系映射(ORM)
简单来说,对象关系映射(ORM)是指当你对一个本地对象进行操作时,这样的操作会影响到服务器上对应的对象。 PyMilvus ORM 风格的 API 具有以下特点:
-
直接作用于对象。
-
隔离服务逻辑和数据访问细节。
-
隐藏了实现的复杂性,你可以在不同的 Milvus 实例上运行相同的脚本,而不管它们的部署方式或实现方式。
ORM 风格的 API
ORM风格API的精髓之一在于对Milvus连接的控制。例如,您可以为多台 Milvus 服务器指定别名,并仅使用它们的别名连接或断开它们。您甚至可以删除本地服务器地址,并通过特定连接精确控制某些对象。
ORM风格API的另一个特点是,经过抽象后,所有的操作都可以直接对对象进行,包括集合、分区、索引。
您可以通过获取现有对象或创建新对象来抽象集合对象。您还可以使用连接别名将 Milvus 连接分配给特定对象,以便您可以在本地对这些对象进行操作。
要创建分区对象,您可以使用其父集合对象创建它,也可以像创建集合对象时那样进行。这些方法也可以用于索引对象。
在这些分区或索引对象存在的情况下,您可以通过它们的父集合对象来获取它们。
还有什么
建议通过我们的技术文档了解 PyMilvus。该文档由两个主要部分组成,包括我们的贡献者制作的自动化 API 参考和使用说明。
-
Milvus 技术文档
-
PyMilvus 源文档
更多推荐
所有评论(0)