🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Uma introdução ao Milvus Python SDK e à API

Uma introdução ao Milvus Python SDK e à API

  • Engineering
March 21, 2022
Xuan Yang

Cover image Imagem da capa

Por Xuan Yang

Antecedentes

A ilustração seguinte mostra a interação entre os SDKs e o Milvus através do gRPC. Imagine que o Milvus é uma caixa preta. Os buffers de protocolo são utilizados para definir as interfaces do servidor e a estrutura da informação que transportam. Por conseguinte, todas as operações na caixa negra Milvus são definidas pela API de protocolo.

Interaction Interação

API do protocolo Milvus

A API do protocolo Milvus é constituída pelos ficheiros milvus.proto, common.proto e schema.proto, que são ficheiros Protocol Buffers com o sufixo .proto. Para garantir um funcionamento correto, os SDK devem interagir com o Milvus através destes ficheiros Protocol Buffers.

milvus.proto

milvus.proto é o componente vital da API do protocolo Milvus porque define o MilvusService, que define ainda todas as interfaces RPC do Milvus.

O exemplo de código seguinte mostra a interface CreatePartitionRequest. Tem dois parâmetros principais do tipo string collection_name e partition_name, com base nos quais se pode iniciar um pedido de criação de partição.

CreatePartitionRequest CreatePartitionRequest

Veja um exemplo de protocolo no Repositório PyMilvus GitHub na linha 19.

Example Exemplo

Você pode encontrar a definição de CreatePartitionRequest aqui.

Definition Definição

Os colaboradores que pretendam desenvolver uma funcionalidade do Milvus ou um SDK numa linguagem de programação diferente são bem-vindos para encontrar todas as interfaces que o Milvus oferece através de RPC.

common.proto

common.proto define os tipos de informação comuns, incluindo ErrorCode, e Status.

common.proto common.proto

schema.proto

schema.proto define o esquema nos parâmetros. A seguinte amostra de código é um exemplo de CollectionSchema.

schema.proto schema.proto

milvus.protoAs interfaces common.proto, common.proto e schema.proto constituem a API do Milvus, representando todas as operações que podem ser chamadas através de RPC.

Se analisar o código fonte e observar com atenção, verificará que quando interfaces como create_index são chamadas, na realidade chamam várias interfaces RPC, como describe_collection e describe_index. Muitas das interfaces externas do Milvus são uma combinação de múltiplas interfaces RPC.

Tendo compreendido os comportamentos dos RPC, pode então desenvolver novas funcionalidades para o Milvus através de combinações. É mais do que bem-vindo a usar a sua imaginação e criatividade e contribuir para a comunidade Milvus.

PyMilvus 2.0

Mapeamento objeto-relacional (ORM)

Em poucas palavras, o mapeamento objeto-relacional (ORM) refere-se ao fato de que quando você opera em um objeto local, tais operações afetarão o objeto correspondente no servidor. A API estilo ORM do PyMilvus apresenta as seguintes caraterísticas:

  1. Opera diretamente sobre objetos.
  2. Isola a lógica do serviço e os detalhes de acesso aos dados.
  3. Esconde a complexidade da implementação, e é possível executar os mesmos scripts em diferentes instâncias do Milvus, independentemente das suas abordagens de implantação ou implementação.

API estilo ORM

Uma das essências da API estilo ORM reside no controlo da ligação Milvus. Por exemplo, pode especificar aliases para múltiplos servidores Milvus, e ligar-se ou desligar-se deles apenas com os seus aliases. Pode até eliminar o endereço do servidor local e controlar certos objectos através de uma ligação específica.

Control Connection Controlo de ligação

Outra caraterística da API estilo ORM é que, após a abstração, todas as operações podem ser executadas diretamente nos objectos, incluindo coleção, partição, e índice.

É possível abstrair um objeto de coleção obtendo um já existente ou criando um novo. Também pode atribuir uma ligação Milvus a objectos específicos utilizando o alias de ligação, para que possa operar nesses objectos localmente.

Para criar um objeto de partição, pode criá-lo com o seu objeto de coleção pai, ou pode fazê-lo tal como quando cria um objeto de coleção. Estes métodos também podem ser utilizados num objeto de índice.

No caso de estes objectos de partição ou de índice existirem, pode obtê-los através do seu objeto de coleção principal.

Sobre a série Deep Dive

Com o anúncio oficial da disponibilidade geral do Milvus 2.0, orquestrámos esta série de blogues Milvus Deep Dive para fornecer uma interpretação aprofundada da arquitetura e do código-fonte do Milvus. Os tópicos abordados nesta série de blogues incluem:

Try Managed Milvus for Free

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

Get Started

Like the article? Spread the word

Continue Lendo