Pular para conteúdo

Milvus — busca vetorial no laboratório

O Milvus guarda vetores e encontra os mais próximos de uma consulta. As aplicações podem usar essa busca para recuperar conteúdo semelhante. A geração dos vetores e a resposta ao usuário pertencem à aplicação; o banco não substitui essas etapas.

Esta instalação é de laboratório, gerenciada pelo Coolify do laboratório. O nome production do ambiente no painel não transforma o serviço em produção de cliente.

Acesso

Recurso Endereço ou orientação
API REST e SDK gRPC https://milvus.bravonix.ia.br:443
Autenticação Obrigatória; solicite credencial à equipe responsável
Interface de administração web Não há painel web publicado para o Milvus
Administração do serviço Coolify do laboratório, projeto Lab POCs, serviço milvus

O acesso público usa HTTPS. Não desative a verificação do certificado para contornar um erro. A página inicial do domínio não é um teste suficiente: confira uma operação da API com autenticação.

Não coloque a credencial no frontend, no repositório ou em exemplos compartilhados. Para aplicações, solicite uma conta com as permissões necessárias; não presuma que a conta administrativa de instalação seja adequada.

Como a aplicação consulta

flowchart LR
    A["Aplicação"]
    E["Modelo de vetores<br/>configurado pela aplicação"]
    M["Milvus<br/>Busca por proximidade"]
    R["Resultados<br/>para a aplicação"]
    A -->|"Texto da consulta"| E
    E -->|"Vetor da consulta"| A
    A -->|"Vetor e filtros<br/>HTTPS autenticado"| M
    M --> R

A aplicação precisa definir a coleção, o campo vetorial, a dimensão e a métrica de busca. O vetor da consulta deve ser compatível com os vetores armazenados. Mudar o modelo de geração pode exigir reconstruir a base; apenas manter a mesma dimensão não garante compatibilidade.

O diagrama descreve o uso do serviço. Não confirma que todos os produtos Bravonix estejam integrados a este Milvus; algumas aplicações usam PostgreSQL com pgvector.

Componentes e armazenamento

flowchart LR
    A["Aplicação<br/>REST ou SDK gRPC"]
    T["Traefik<br/>Recebe HTTPS"]
    M["Milvus Standalone"]
    E[("etcd<br/>Metadados")]
    S[("MinIO<br/>Armazenamento de objetos")]
    A -->|"Porta 443"| T
    T -->|"Rede interna"| M
    M --> E
    M --> S

Milvus, etcd e MinIO mantêm dados persistentes no servidor. Recriar um container não deve apagar esses dados. A recuperação depende do conjunto consistente, não somente de uma pasta ou da imagem Docker.

Os três componentes não têm portas publicadas diretamente no host, conforme a inspeção de 05/10/2026. A entrada pública passa pelo Traefik. etcd e MinIO não são endereços de integração das aplicações.

Versões e limites conferidos em 05/10/2026

Componente Versão Limite de CPU Limite de memória
Milvus Standalone 2.6.23 3 CPUs 12 GiB
etcd 3.5.25 0,5 CPU 1 GiB
MinIO RELEASE.2024-12-18T13-15-44Z 0,5 CPU 2 GiB

O total configurado é de 4 CPUs e 15 GiB. São limites máximos, não reserva de capacidade nem garantia para qualquer tamanho de base. Antes de uma carga grande, conferir espaço em disco, memória, tamanho dos índices e concorrência com outros serviços do laboratório.

Primeiro teste de integração

Comece com uma leitura: listar as coleções acessíveis. Esse teste verifica conexão e autenticação sem criar ou apagar dados.

Exemplo Python com pymilvus compatível com a versão 2.6 do servidor. Forneça MILVUS_TOKEN pelo mecanismo de segredos da aplicação, no formato usuario:senha:

import os
from pymilvus import MilvusClient

client = MilvusClient(
    uri="https://milvus.bravonix.ia.br:443",
    token=os.environ["MILVUS_TOKEN"],
)
try:
    collections = client.list_collections()
    print(f"Coleções acessíveis: {len(collections)}")
finally:
    client.close()

A conexão segue o contrato do SDK Milvus. Este exemplo não foi executado nesta revisão; o teste atual foi feito pela API REST. Listar coleções não comprova qualidade da busca, dimensão correta dos vetores nem desempenho sob carga.

Estado conferido em 05/10/2026

  • Milvus, etcd e MinIO estavam em execução, com verificações de saúde aprovadas.
  • A configuração do Milvus mantinha autenticação habilitada.
  • A API pública recusou uma consulta sem credencial.
  • A consulta autenticada de listagem retornou sucesso e uma coleção; nomes e conteúdo não foram expostos nesta documentação.
  • O último registro de backup bem-sucedido era de 05/10, às 04h45 de Fortaleza, com 23.330.922 bytes e indicadores de download conferido e serviço saudável.

A revisão foi somente de leitura. Não foram criadas coleções, inseridos vetores, executados backups manuais ou reiniciados serviços. O teste anterior de setembro incluiu escrita e busca com dados descartáveis; ele não equivale a uma nova validação dessas operações hoje.

Backup diário e indisponibilidade

A rotina está agendada para 04h45 de Fortaleza, todos os dias (07h45 UTC). É um backup com parada: o Milvus e suas dependências ficam indisponíveis durante a criação da cópia local e a retomada.

flowchart TD
    A["Início do backup diário"]
    P["Parar Milvus<br/>e depois suas dependências"]
    C["Criar cópia local<br/>dos dados e da configuração"]
    R["Religar os componentes"]
    E["Enviar cópia ao<br/>armazenamento externo"]
    V["Baixar novamente<br/>e comparar SHA-256"]
    S["Conferir saúde do Milvus<br/>e registrar sucesso"]
    A --> P --> C --> R --> E --> V --> S

A sequência foi conferida no script operacional versionado. O envio externo ocorre após o comando de retomada. O tempo de indisponibilidade depende do volume de dados e da inicialização; não há duração fixa validada.

O SHA-256 compara os bytes enviados e recebidos. Isso detecta diferença na cópia, mas não comprova que uma restauração completa funcione. O arquivo contém configuração sensível e exige acesso restrito.

Limites ainda sem validação

  • Restauração completa em ambiente isolado.
  • Política efetiva de retenção dessas cópias no armazenamento externo.
  • Entrega de alerta externo quando o backup falha ou deixa de executar.

O arquivo de último sucesso permanece com a data anterior quando uma tentativa falha. Por isso, conferir sua idade e os registros de execução, não apenas a existência do arquivo. O registro de hoje foi inspecionado; o objeto remoto não foi baixado novamente durante esta revisão.

Recuperação

A sequência abaixo é um roteiro a ensaiar, não uma restauração já comprovada:

  1. Escolher uma cópia e conferir sua integridade em destino isolado.
  2. Preservar os dados atuais antes de qualquer substituição.
  3. Preparar as mesmas versões dos três componentes e a configuração necessária.
  4. Restaurar o conjunto persistente de Milvus, etcd e MinIO com os serviços parados.
  5. Recuperar as credenciais e a configuração do painel quando necessário.
  6. Iniciar os componentes e testar autenticação, coleções e uma busca conhecida.
  7. Somente após validação, decidir a substituição do serviço ativo.

Nunca extrair a cópia sobre dados de um serviço em execução. Não remover volumes como tentativa de corrigir indisponibilidade.

Quando falha

Sintoma O que conferir
Acesso recusado Credencial, permissões e formato de autenticação
Erro de certificado ou conexão Domínio, HTTPS na porta 443 e rota do Traefik
Serviço indisponível perto de 04h45 Execução do backup e retomada dos três componentes
Container saudável, mas consulta falha Operação real da API, autenticação, coleção e logs
Busca rejeitada Campo vetorial, dimensão, índice e parâmetros da coleção
Resultado sem relevância Modelo dos vetores, conteúdo indexado, filtros e métrica de busca
Último backup antigo Registros da rotina, espaço local e acesso ao armazenamento externo

Use também o roteiro de telemetria para investigar recursos do servidor. Métricas saudáveis não substituem uma consulta funcional ao Milvus.