Milvus Python SDK 和 API 简介
封面图片
作者:杨璇
背景介绍
下图描述了 SDK 与 Milvus 之间通过 gRPC 进行的交互。想象一下,Milvus 是一个黑盒子。协议缓冲区(Protocol Buffer)用于定义服务器的接口及其携带的信息结构。因此,黑盒子 Milvus 中的所有操作都是由协议 API 定义的。
交互
Milvus 协议应用程序接口
Milvus 协议 API 由milvus.proto
、common.proto
和schema.proto
组成,它们是以.proto
为后缀的协议缓冲区文件。为确保正常操作,SDK 必须通过这些协议缓冲文件与 Milvus 交互。
milvus.proto
milvus.proto
是 Milvus 协议 API 的重要组成部分,因为它定义了 ,进一步定义了 Milvus 的所有 RPC 接口。MilvusService
以下代码示例显示了CreatePartitionRequest
接口。它有两个主要字符串类型参数collection_name
和partition_name
,根据这两个参数,您可以启动分区创建请求。
创建分区请求
请查看PyMilvus GitHub 代码库中第 19 行的协议示例。
示例
您可以在此处找到CreatePartitionRequest
的定义。
定义
欢迎希望使用不同编程语言开发 Milvus 功能或 SDK 的贡献者通过 RPC 找到 Milvus 提供的所有接口。
common.proto
common.proto
定义了常见的信息类型,包括 , 和 。ErrorCode
Status
common.proto
schema.proto
schema.proto
定义了参数中的 Schema。以下代码示例是 。CollectionSchema
schema.proto
milvus.proto
、common.proto
和schema.proto
共同构成了 Milvus 的 API,代表了所有可以通过 RPC 调用的操作符。
如果深入研究源代码并仔细观察,你会发现当调用create_index
等接口时,它们实际上调用了多个 RPC 接口,如describe_collection
和describe_index
。Milvus 的许多对外接口都是多个 RPC 接口的组合。
了解了 RPC 的行为之后,您就可以通过组合为 Milvus 开发新的功能。我们非常欢迎您发挥想象力和创造力,为 Milvus 社区做出贡献。
PyMilvus 2.0
对象关系映射(ORM)
简而言之,对象关系映射(ORM)是指当您操作本地对象时,这种操作将影响服务器上的相应对象。PyMilvus ORM 风格 API 具有以下特点:
- 它直接操作对象。
- 它隔离了服务逻辑和数据访问细节。
- 它隐藏了实现的复杂性,你可以在不同的 Milvus 实例中运行相同的脚本,而无需考虑它们的部署方式或实现。
ORM 式应用程序接口
ORM 风格 API 的精髓之一在于对 Milvus 连接的控制。例如,你可以为多个 Milvus 服务器指定别名,并仅通过别名连接或断开它们。你甚至可以删除本地服务器地址,并通过特定连接精确控制某些对象。
控制连接
ORM 风格 API 的另一个特点是,经过抽象后,所有操作都可以直接对对象执行,包括 Collection、分区和索引。
你可以通过获取一个现有的 Collections 对象或创建一个新的 Collections 对象来抽象一个 Collections 对象。你还可以使用连接别名为特定对象分配一个 Milvus 连接,这样就可以在本地对这些对象进行操作符。
要创建分区对象,可以用其父级 Collections 对象来创建,也可以像创建 Collections 对象一样来创建。这些方法也可用于索引对象。
在这些分区或索引对象存在的情况下,你可以通过它们的父集合对象来获取它们。
关于深入研究系列
随着 Milvus 2.0正式宣布全面上市,我们精心策划了这个 Milvus 深度剖析系列博客,对 Milvus 架构和源代码进行深入解读。本系列博客涉及的主题包括
- 背景介绍
- Milvus 协议应用程序接口
- PyMilvus 2.0
- 关于深入研究系列
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word