milvus-logo
LFAI
Home
  • Começar a trabalhar
    • Instalar Milvus

Executar o Milvus Lite Localmente

Esta página ilustra como executar o Milvus localmente com o Milvus Lite. O Milvus Lite é a versão leve do Milvus, um banco de dados vetorial de código aberto que alimenta aplicativos de IA com embeddings vetoriais e pesquisa de similaridade.

Visão geral

O Milvus Lite pode ser importado para a sua aplicação Python, fornecendo a funcionalidade de pesquisa vetorial central do Milvus. O Milvus Lite já está incluído no Python SDK do Milvus. Ele pode ser simplesmente implantado com pip install pymilvus.

Com o Milvus Lite, pode começar a construir uma aplicação de IA com pesquisa de semelhanças vectoriais em poucos minutos! O Milvus Lite é bom para ser executado no seguinte ambiente:

  • Jupyter Notebook / Google Colab
  • Computadores portáteis
  • Dispositivos Edge

O Milvus Lite partilha a mesma API com o Milvus Standalone e Distributed, e cobre a maioria das funcionalidades como a persistência e gestão de dados vectoriais, operações CRUD vectoriais, pesquisa vetorial esparsa e densa, filtragem de metadados, multi-vetor e hybrid_search. Em conjunto, proporcionam uma experiência consistente em diferentes tipos de ambientes, desde dispositivos de ponta a clusters na nuvem, adaptando-se a casos de utilização de diferentes dimensões. Com o mesmo código do lado do cliente, você pode executar aplicativos GenAI com Milvus Lite em um laptop ou Jupyter Notebook, ou Milvus Standalone no contêiner Docker, ou Milvus Distributed em um cluster Kubernetes de escala massiva que serve bilhões de vetores na produção.

Pré-requisitos

O Milvus Lite atualmente suporta os seguintes ambientes:

  • Ubuntu >= 20.04 (x86_64 e arm64)
  • MacOS >= 11.0 (Apple Silicon M1/M2 e x86_64)

Note-se que o Milvus Lite só é adequado para casos de utilização de pesquisa vetorial em pequena escala. Para um caso de utilização em grande escala, recomendamos a utilização do Milvus Standalone ou do Milvus Distributed. Também pode considerar o Milvus totalmente gerido na Zilliz Cloud.

Configurar o Milvus Lite

pip install -U pymilvus

Recomendamos a utilização de pymilvus. Uma vez que milvus-lite está incluído em pymilvus versão 2.4.2 ou superior, pode pip install com -U para forçar a atualização para a versão mais recente e milvus-lite é automaticamente instalado.

Se pretender instalar explicitamente o pacote milvus-lite, ou se tiver instalado uma versão mais antiga de milvus-lite e pretender actualizá-la, pode utilizar pip install -U milvus-lite.

Ligar ao Milvus Lite

Em pymilvus, especifique um nome de ficheiro local como parâmetro uri do MilvusClient para utilizar o Milvus Lite.

from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")

Depois de executar o trecho de código acima, um arquivo de banco de dados chamado milvus_demo.db será gerado na pasta atual.

NOTA: Note que a mesma API também se aplica ao Milvus Standalone, ao Milvus Distributed e ao Zilliz Cloud, a única diferença é substituir o nome do ficheiro local pelo endpoint do servidor remoto e pelas credenciais, por exemplo,client = MilvusClient(uri="http://localhost:19530", token="username:password").

Exemplos

Segue-se uma demonstração simples que mostra como utilizar o Milvus Lite para pesquisa de texto. Existem exemplos mais abrangentes para usar o Milvus Lite para construir aplicações como RAG, pesquisa de imagens, e usar o Milvus Lite em estruturas RAG populares como LangChain e LlamaIndex!

from pymilvus import MilvusClient
import numpy as np

client = MilvusClient("./milvus_demo.db")
client.create_collection(
    collection_name="demo_collection",
    dimension=384  # The vectors we will use in this demo has 384 dimensions
)

# Text strings to search from.
docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).

vectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for _ in range(len(docs)) ]
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ]
res = client.insert(
    collection_name="demo_collection",
    data=data
)

# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
    collection_name="demo_collection",
    data=[vectors[0]],
    filter="subject == 'history'",
    limit=2,
    output_fields=["text", "subject"],
)
print(res)

# a query that retrieves all entities matching filter expressions.
res = client.query(
    collection_name="demo_collection",
    filter="subject == 'history'",
    output_fields=["text", "subject"],
)
print(res)

# delete
res = client.delete(
    collection_name="demo_collection",
    filter="subject == 'history'",
)
print(res)

Limites

Ao executar o Milvus Lite, note que alguns recursos não são suportados. As tabelas a seguir resumem os limites de uso do Milvus Lite.

Coleção

Método / ParâmetroSuportado no Milvus Lite
create_collection()Suporte com parâmetros limitados
collection_nameY
dimensionY
primary_field_nameY
id_typeY
vector_field_nameY
metric_typeY
auto_idY
schemaY
index_paramsY
enable_dynamic_fieldY
num_shardsN
partition_key_fieldN
num_partitionsN
consistency_levelN (Suporta apenas Strong; qualquer configuração será tratada como Strong.)
get_collection_stats()Suporta a obtenção de estatísticas de coleção.
collection_nameY
timeoutY
describe_collection()num_shards, consistency_level, e collection_id na resposta são inválidos.
timeoutY
has_collection()Suporta a verificação da existência de uma coleção.
collection_nameY
timeoutY
list_collections()Permite listar todas as colecções.
drop_collection()Permite eliminar uma coleção.
collection_nameY
timeoutY
rename_collection()Não é possível mudar o nome de uma coleção.

Campo e esquema

Método / ParâmetroSuportado em Milvus Lite
create_schema()Suporte com parâmetros limitados
auto_idY
enable_dynamic_fieldY
primary_fieldY
partition_key_fieldN
add_field()Suporte com parâmetros limitados
field_nameY
datatypeY
is_primaryY
max_lengthY
element_typeY
max_capacityY
dimY
is_partition_keyN
Método / ParâmetroSuportado no Milvus Lite
search()Suporte com parâmetros limitados
collection_nameY
dataY
filterY
limitY
output_fieldsY
search_paramsY
timeoutY
partition_namesN
anns_fieldY
query()Suporte com parâmetros limitados
collection_nameY
filterY
output_fieldsY
timeoutY
idsY
partition_namesN
get()Suporte com parâmetros limitados
collection_nameY
idsY
output_fieldsY
timeoutY
partition_namesN
apagar()Suporte com parâmetros limitados
collection_nameY
idsY
timeoutY
filterY
partition_nameN
inserir()Suporte com parâmetros limitados
collection_nameY
dataY
timeoutY
partition_nameN
upsert()Suporte com parâmetros limitados
collection_nameY
dataY
timeoutY
partition_nameN

Carregar e libertar

Método / ParâmetroSuportado em Milvus Lite
load_collection()Y
collection_nameY
timeoutY
release_collection()Y
collection_nameY
timeoutY
get_load_state()A obtenção do estado do carregamento não é suportada.
refresh_load()Não é suportado o carregamento dos dados não carregados de uma coleção carregada.
close()Y

Índice

Método / ParâmetroSuportado em Milvus Lite
list_indexes()A listagem de índices é suportada.
collection_nameY
field_nameY
create_index()Suporta apenas o tipo de índice FLAT.
index_paramsY
timeoutY
drop_index()É suportada a eliminação de índices.
collection_nameY
index_nameY
timeoutY
describe_index()A descrição dos índices é suportada.
collection_nameY
index_nameY
timeoutY

Tipos de índices vectoriais

O Milvus Lite suporta apenas o tipo de índice FLAT. Utiliza o tipo FLAT independentemente do tipo de índice especificado na coleção.

Recursos de pesquisa

Milvus Lite suporta Vetor Esparso, Multi-vetor, Busca Híbrida.

Partição

O Milvus Lite não suporta partições e métodos relacionados a partições.

Utilizadores e Funções

Milvus Lite não suporta usuários e funções e métodos relacionados.

Alias

O Milvus Lite não suporta aliases e métodos relacionados a aliases.

Migrando dados do Milvus Lite

Todos os dados armazenados no Milvus Lite podem ser facilmente exportados e carregados noutros tipos de implementação do Milvus, como o Milvus Standalone no Docker, o Milvus Distributed no K8s ou o Milvus totalmente gerido no Zilliz Cloud.

Milvus Lite fornece uma ferramenta de linha de comando que pode despejar dados em um arquivo json, que pode ser importado para milvus e Zilliz Cloud(o serviço de nuvem totalmente gerenciado para Milvus). O comando milvus-lite será instalado juntamente com o pacote python milvus-lite

# Install
pip install -U "pymilvus[bulk_writer]"

milvus-lite dump -h

usage: milvus-lite dump [-h] [-d DB_FILE] [-c COLLECTION] [-p PATH]

optional arguments:
  -h, --help            show this help message and exit
  -d DB_FILE, --db-file DB_FILE
                        milvus lite db file
  -c COLLECTION, --collection COLLECTION
                        collection that need to be dumped
  -p PATH, --path PATH  dump file storage dir

O exemplo seguinte descarrega todos os dados da coleção demo_collection que estão armazenados em ./milvus_demo.db (ficheiro de base de dados do Milvus Lite)

Para exportar dados:

milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
# ./milvus_demo.db: milvus lite db file
# demo_collection: collection that need to be dumped
#./data_dir : dump file storage dir

Com o ficheiro dump, pode carregar os dados para o Zilliz Cloud via Data Import, ou carregar os dados para os servidores Milvus via Bulk Insert.

O que se segue

Depois de se ligar ao Milvus Lite, pode:

Traduzido porDeepLogo

Try Managed Milvus for Free

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

Get Started
Feedback

Esta página foi útil?