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âmetro | Suportado no Milvus Lite |
---|---|
create_collection() | Suporte com parâmetros limitados |
collection_name | Y |
dimension | Y |
primary_field_name | Y |
id_type | Y |
vector_field_name | Y |
metric_type | Y |
auto_id | Y |
schema | Y |
index_params | Y |
enable_dynamic_field | Y |
num_shards | N |
partition_key_field | N |
num_partitions | N |
consistency_level | N (Suporta apenas Strong ; qualquer configuração será tratada como Strong .) |
get_collection_stats() | Suporta a obtenção de estatísticas de coleção. |
collection_name | Y |
timeout | Y |
describe_collection() | num_shards , consistency_level , e collection_id na resposta são inválidos. |
timeout | Y |
has_collection() | Suporta a verificação da existência de uma coleção. |
collection_name | Y |
timeout | Y |
list_collections() | Permite listar todas as colecções. |
drop_collection() | Permite eliminar uma coleção. |
collection_name | Y |
timeout | Y |
rename_collection() | Não é possível mudar o nome de uma coleção. |
Campo e esquema
Método / Parâmetro | Suportado em Milvus Lite |
---|---|
create_schema() | Suporte com parâmetros limitados |
auto_id | Y |
enable_dynamic_field | Y |
primary_field | Y |
partition_key_field | N |
add_field() | Suporte com parâmetros limitados |
field_name | Y |
datatype | Y |
is_primary | Y |
max_length | Y |
element_type | Y |
max_capacity | Y |
dim | Y |
is_partition_key | N |
Inserir e pesquisar
Método / Parâmetro | Suportado no Milvus Lite |
---|---|
search() | Suporte com parâmetros limitados |
collection_name | Y |
data | Y |
filter | Y |
limit | Y |
output_fields | Y |
search_params | Y |
timeout | Y |
partition_names | N |
anns_field | Y |
query() | Suporte com parâmetros limitados |
collection_name | Y |
filter | Y |
output_fields | Y |
timeout | Y |
ids | Y |
partition_names | N |
get() | Suporte com parâmetros limitados |
collection_name | Y |
ids | Y |
output_fields | Y |
timeout | Y |
partition_names | N |
apagar() | Suporte com parâmetros limitados |
collection_name | Y |
ids | Y |
timeout | Y |
filter | Y |
partition_name | N |
inserir() | Suporte com parâmetros limitados |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
upsert() | Suporte com parâmetros limitados |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
Carregar e libertar
Método / Parâmetro | Suportado em Milvus Lite |
---|---|
load_collection() | Y |
collection_name | Y |
timeout | Y |
release_collection() | Y |
collection_name | Y |
timeout | Y |
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âmetro | Suportado em Milvus Lite |
---|---|
list_indexes() | A listagem de índices é suportada. |
collection_name | Y |
field_name | Y |
create_index() | Suporta apenas o tipo de índice FLAT . |
index_params | Y |
timeout | Y |
drop_index() | É suportada a eliminação de índices. |
collection_name | Y |
index_name | Y |
timeout | Y |
describe_index() | A descrição dos índices é suportada. |
collection_name | Y |
index_name | Y |
timeout | Y |
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:
Verificar o Quickstart para ver o que Milvus pode fazer.
Aprender as operações básicas do Milvus:
Implantar seu cluster Milvus em nuvens:
Explore o Milvus Backup, uma ferramenta de código aberto para backups de dados do Milvus.
Explore o Birdwatcher, uma ferramenta de código aberto para depurar o Milvus e actualizações de configuração dinâmica.
Explore o Attu, uma ferramenta GUI de código aberto para gerenciamento intuitivo do Milvus.