🚀 Zilliz Cloudを無料で試す、完全管理型のMilvus—10倍の高速パフォーマンスを体験しよう!今すぐ試す>>

milvus-logo
LFAI

HomeBlogsMilvus Python SDKとAPIの紹介

Milvus Python SDKとAPIの紹介

  • Engineering
March 21, 2022
Xuan Yang

Cover image カバー画像

スアン・ヤン

背景

以下の図は、gRPCを介したSDKとMilvusの相互作用を表しています。Milvusはブラックボックスであると想像してください。プロトコル・バッファーは、サーバーのインターフェースと、それらが伝送する情報の構造を定義するために使用されます。従って、ブラックボックスであるMilvusの全ての操作はプロトコルAPIによって定義されます。

Interaction インタラクション

MilvusプロトコルAPI

MilvusプロトコルAPIは、milvus.protocommon.protoschema.proto.proto で終わるプロトコルバッファファイルで構成されています。適切な動作を保証するために、SDKはこれらのProtocol Buffersファイルを用いてMilvusと対話する必要があります。

milvus.proto

milvus.proto MilvusServiceを定義しているため、Milvus プロトコル API の重要なコンポーネントです。

以下のコードサンプルはインターフェースCreatePartitionRequest を示しています。これには2つの主要な文字列型パラメータcollection_namepartition_name があり、これに基づいてパーティション作成リクエストを開始することができます。

CreatePartitionRequest CreatePartitionRequest

19行目のPyMilvus GitHub RepositoryのProtocolの例を確認してください。

Example

CreatePartitionRequest の定義はここにあります。

Definition 定義

Milvusの機能またはSDKを異なるプログラミング言語で開発したいコントリビューターは、MilvusがRPC経由で提供する全てのインターフェースを見つけることができます。

common.proto

common.proto は、 や を含む、共通の情報タイプを定義します。ErrorCode Status

common.proto common.proto

スキーマ.プロト

schema.proto はパラメータにスキーマを定義します。以下のコード・サンプルは の例である。CollectionSchema

schema.proto schema.proto

milvus.protocommon.protoschema.proto を合わせてmilvusのAPIを構成し、RPCで呼び出せる全ての操作を表しています。

ソース・コードを掘り下げて注意深く観察すると、create_index のようなインタフェースが呼び出されるとき、実際にはdescribe_collectiondescribe_index のような複数の RPC インタフェースを呼び出していることがわかります。Milvusの外側のインターフェースの多くは、複数のRPCインターフェースの組み合わせです。

RPCの動作を理解した上で、Milvusの新機能を組み合わせて開発することができます。あなたの想像力と創造力でMilvusコミュニティに貢献してください。

PyMilvus 2.0

オブジェクトリレーショナルマッピング (ORM)

一言で言うと、オブジェクトリレーショナルマッピング(ORM)とは、ローカルのオブジェクトを操作したときに、その操作がサーバ上の対応するオブジェクトに影響を与えることを指します。PyMilvus の ORM スタイルの API には次のような特徴があります:

  1. オブジェクトを直接操作する。
  2. サービスロジックとデータアクセスの詳細を分離します。
  3. 実装の複雑さを隠すことができ、異なるMilvusインスタンス間で、配置のアプローチや実装に関係なく同じスクリプトを実行することができます。

ORMスタイルのAPI

ORMスタイルAPIの本質の一つは、Milvus接続の制御にあります。例えば、複数のMilvusサーバにエイリアスを指定し、そのエイリアスだけで接続したり切断したりすることができます。また、ローカルサーバのアドレスを削除することもでき、特定の接続を介して特定のオブジェクトを正確に制御することができます。

Control Connection 接続の制御

ORM型APIのもう一つの特徴は、抽象化した後、コレクション、パーティション、インデックスを含むすべての操作をオブジェクトに対して直接実行できることです。

コレクションオブジェクトを抽象化するには、既存のオブジェクトを取得するか、新しいオブジェクトを作成します。また、Milvusのコネクションをコネクションエイリアスを用いて特定のオブジェクトに割り当てることで、これらのオブジェクトをローカルに操作することができます。

パーティションオブジェクトを作成するには、親コレクションオブジェクトと一緒に作成するか、コレクションオブジェクトを作成するときと同じように作成します。これらの方法は、インデックス・オブジェクトにも適用できます。

これらのパーティション・オブジェクトやインデックス・オブジェクトが存在する場合、親コレクション・オブジェクトを通して取得することができます。

ディープ・ダイブ・シリーズについて

Milvus 2.0の一般提供の正式発表に伴い、Milvusのアーキテクチャとソースコードの詳細な解釈を提供するために、このMilvus Deep Diveブログシリーズを企画しました。このブログシリーズで扱うトピックは以下の通りです:

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

続けて読む