🚀 免费试用 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 是一个黑盒子。协议缓冲区(Protocol Buffer)用于定义服务器的接口及其携带的信息结构。因此,黑盒子 Milvus 中的所有操作都是由协议 API 定义的。

Interaction 交互

Milvus 协议应用程序接口

Milvus 协议 API 由milvus.protocommon.protoschema.proto 组成,它们是以.proto 为后缀的协议缓冲区文件。为确保正常操作,SDK 必须通过这些协议缓冲文件与 Milvus 交互。

milvus.proto

milvus.proto 是 Milvus 协议 API 的重要组成部分,因为它定义了 ,进一步定义了 Milvus 的所有 RPC 接口。MilvusService

以下代码示例显示了CreatePartitionRequest 接口。它有两个主要字符串类型参数collection_namepartition_name ,根据这两个参数,您可以启动分区创建请求。

CreatePartitionRequest 创建分区请求

请查看PyMilvus GitHub 代码库中第 19 行的协议示例。

Example 示例

您可以在此处找到CreatePartitionRequest 的定义。

Definition 定义

欢迎希望使用不同编程语言开发 Milvus 功能或 SDK 的贡献者通过 RPC 找到 Milvus 提供的所有接口。

common.proto

common.proto 定义了常见的信息类型,包括 , 和 。ErrorCode Status

common.proto common.proto

schema.proto

schema.proto 定义了参数中的 Schema。以下代码示例是 。CollectionSchema

schema.proto schema.proto

milvus.protocommon.protoschema.proto 共同构成了 Milvus 的 API,代表了所有可以通过 RPC 调用的操作符。

如果深入研究源代码并仔细观察,你会发现当调用create_index 等接口时,它们实际上调用了多个 RPC 接口,如describe_collectiondescribe_index 。Milvus 的许多对外接口都是多个 RPC 接口的组合。

了解了 RPC 的行为之后,您就可以通过组合为 Milvus 开发新的功能。我们非常欢迎您发挥想象力和创造力,为 Milvus 社区做出贡献。

PyMilvus 2.0

对象关系映射(ORM)

简而言之,对象关系映射(ORM)是指当您操作本地对象时,这种操作将影响服务器上的相应对象。PyMilvus ORM 风格 API 具有以下特点:

  1. 它直接操作对象。
  2. 它隔离了服务逻辑和数据访问细节。
  3. 它隐藏了实现的复杂性,你可以在不同的 Milvus 实例中运行相同的脚本,而无需考虑它们的部署方式或实现。

ORM 式应用程序接口

ORM 风格 API 的精髓之一在于对 Milvus 连接的控制。例如,你可以为多个 Milvus 服务器指定别名,并仅通过别名连接或断开它们。你甚至可以删除本地服务器地址,并通过特定连接精确控制某些对象。

Control Connection 控制连接

ORM 风格 API 的另一个特点是,经过抽象后,所有操作都可以直接对对象执行,包括 Collection、分区和索引。

你可以通过获取一个现有的 Collections 对象或创建一个新的 Collections 对象来抽象一个 Collections 对象。你还可以使用连接别名为特定对象分配一个 Milvus 连接,这样就可以在本地对这些对象进行操作符。

要创建分区对象,可以用其父级 Collections 对象来创建,也可以像创建 Collections 对象一样来创建。这些方法也可用于索引对象。

在这些分区或索引对象存在的情况下,你可以通过它们的父集合对象来获取它们。

关于深入研究系列

随着 Milvus 2.0正式宣布全面上市,我们精心策划了这个 Milvus 深度剖析系列博客,对 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

扩展阅读