Milvus Python SDK 및 API 소개
표지 이미지
By Xuan Yang
배경
다음 그림은 gRPC를 통한 SDK와 Milvus 간의 상호 작용을 보여줍니다. Milvus를 블랙박스라고 상상해 보세요. 프로토콜 버퍼는 서버의 인터페이스와 서버가 전달하는 정보의 구조를 정의하는 데 사용됩니다. 따라서 블랙박스 Milvus의 모든 작업은 프로토콜 API에 의해 정의됩니다.
상호 작용
Milvus 프로토콜 API
Milvus 프로토콜 API는 milvus.proto
, common.proto
, schema.proto
로 구성되며, .proto
이 접미사로 붙은 프로토콜 버퍼 파일입니다. 제대로 작동하려면 SDK는 이러한 프로토콜 버퍼 파일을 사용하여 Milvus와 상호 작용해야 합니다.
milvus.proto
milvus.proto
는 Milvus의 모든 RPC 인터페이스를 추가로 정의하는 MilvusService
를 정의하기 때문에 Milvus 프로토콜 API의 핵심 구성 요소입니다.
다음 코드 샘플은 CreatePartitionRequest
인터페이스를 보여줍니다. 여기에는 파티션 생성 요청을 시작할 수 있는 두 개의 주요 문자열 유형 매개변수 collection_name
와 partition_name
가 있습니다.
CreatePartitionRequest
파이밀버스 GitHub 리포지토리 19번 줄의 프로토콜 예제를 확인하세요.
예제
CreatePartitionRequest
의 정의는 여기에서 확인할 수 있습니다.
정의
Milvus의 기능이나 다른 프로그래밍 언어로 SDK를 개발하고자 하는 기여자는 RPC를 통해 Milvus가 제공하는 모든 인터페이스를 찾을 수 있습니다.
common.proto
common.proto
는 ErrorCode
, Status
을 포함한 일반적인 정보 유형을 정의합니다.
common.proto
schema.proto
schema.proto
는 매개변수에서 스키마를 정의합니다. 다음 코드 샘플은 CollectionSchema
의 예시입니다.
schema.proto
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 연결을 할당하여 이러한 개체에 대해 로컬로 작업할 수 있습니다.
파티션 개체를 만들려면 부모 컬렉션 개체를 사용하여 만들거나 컬렉션 개체를 만들 때와 마찬가지로 만들 수 있습니다. 이러한 방법은 인덱스 객체에도 사용할 수 있습니다.
이러한 파티션 또는 인덱스 개체가 존재하는 경우 상위 컬렉션 개체를 통해 가져올 수 있습니다.
심층 분석 시리즈 소개
Milvus 2.0의 공식 출시 발표와 함께 Milvus 아키텍처와 소스 코드에 대한 심층적인 해석을 제공하기 위해 Milvus 딥 다이브 블로그 시리즈를 기획했습니다. 이 블로그 시리즈에서 다루는 주제는 다음과 같습니다:
- 배경
- Milvus 프로토콜 API
- 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