FAQ operacional
E se eu não conseguir extrair a imagem do Milvus Docker do Docker Hub?
Se não conseguiu extrair a imagem do Milvus Docker do Docker Hub, tente adicionar outros espelhos de registo.
Os utilizadores da China Continental podem adicionar o URL "https://registry.docker-cn.com" ao array registry-mirrors em /etc.docker/daemon.json.
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
O Docker é a única maneira de instalar e executar o Milvus?
O Docker é uma maneira eficiente de implantar o Milvus, mas não é a única maneira. Você também pode implantar o Milvus a partir do código fonte. Isso requer Ubuntu (18.04 ou superior) ou CentOS (7 ou superior). Consulte Criação do Milvus a partir do código-fonte para obter mais informações.
Quais são os principais factores que afectam a recuperação?
A recuperação é afetada principalmente pelo tipo de índice e pelos parâmetros de pesquisa.
Para o índice FLAT, o Milvus faz uma pesquisa exaustiva dentro de uma coleção, com um retorno de 100%.
Para os índices IVF, o parâmetro nprobe determina o âmbito de uma pesquisa dentro da coleção. O aumento de nprobe aumenta a proporção de vectores pesquisados e a recuperação, mas diminui o desempenho da consulta.
Para o índice HNSW, o parâmetro ef determina a amplitude da pesquisa no gráfico. Aumentar ef aumenta o número de pontos pesquisados no gráfico e a recuperação, mas diminui o desempenho da consulta.
Para obter mais informações, consulte Indexação de vetor.
Por que minhas alterações nos arquivos de configuração não surtiram efeito?
O Milvus não oferece suporte à modificação de arquivos de configuração durante o tempo de execução. É necessário reiniciar o Milvus Docker para que as alterações nos ficheiros de configuração tenham efeito.
Como é que sei se o Milvus foi iniciado com sucesso?
Se o Milvus for iniciado com o Docker Compose, execute docker ps
para observar quantos contentores Docker estão em execução e verificar se os serviços do Milvus foram iniciados corretamente.
Para o Milvus autónomo, deve ser possível observar pelo menos três contentores Docker em execução, sendo um o serviço Milvus e os outros dois o serviço de gestão e armazenamento etcd. Para obter mais informações, consulte Instalação do Milvus Standalone.
Porque é que a hora nos ficheiros de registo é diferente da hora do sistema?
A diferença de horário geralmente se deve ao fato de que a máquina host não usa o Tempo Universal Coordenado (UTC).
Os arquivos de log dentro da imagem do Docker usam o UTC por padrão. Se o seu computador host não usa UTC, esse problema pode ocorrer.
Como é que sei se o meu CPU suporta o Milvus?
As operações de computação do Milvus dependem do suporte da CPU para o conjunto de instruções de extensão SIMD (Single Instruction, Multiple Data). Se o seu CPU suporta o conjunto de instruções de extensão SIMD é crucial para a construção de índices e pesquisa de similaridade vetorial no Milvus. Certifique-se de que o seu CPU suporta pelo menos um dos seguintes conjuntos de instruções SIMD:
- SSE4.2
- AVX
- AVX2
- AVX512
Execute o comando lscpu para verificar se sua CPU suporta os conjuntos de instruções SIMD mencionados acima:
$ lscpu | grep -e sse4_2 -e avx -e avx2 -e avx512
Porque é que o Milvus devolve illegal instruction
durante o arranque?
O Milvus requer que sua CPU suporte um conjunto de instruções SIMD: SSE4.2, AVX, AVX2, ou AVX512. A CPU deve suportar pelo menos um desses conjuntos para garantir que o Milvus funcione normalmente. Um erro illegal instruction
retornado durante a inicialização sugere que sua CPU não suporta nenhum dos quatro conjuntos de instruções acima.
Veja o suporte da CPU para o conjunto de instruções SIMD.
Posso instalar o Milvus no Windows?
Sim. Você pode instalar o Milvus no Windows compilando a partir do código fonte ou de um pacote binário.
Veja Executar o Milvus no Windows para saber como instalar o Milvus no Windows.
Recebi um erro ao instalar o pymilvus no Windows. O que devo fazer?
Não é recomendado instalar o PyMilvus no Windows. Mas se tiveres de instalar o PyMilvus no Windows mas obtiveres um erro, tenta instalá-lo num ambiente Conda. Consulte Instalar o Milvus SDK para obter mais informações sobre como instalar o PyMilvus no ambiente Conda.
Posso implementar o Milvus quando estou desligado da Internet?
Sim. Pode instalar o Milvus num ambiente offline. Consulte Instalar o Milvus offline para obter mais informações.
Onde posso encontrar os registos gerados pelo Milvus?
Por defeito, o registo do Milvus é impresso em stout (saída padrão) e stderr (erro padrão), no entanto, recomendamos vivamente que redireccione o seu registo para um volume persistente em produção. Para o fazer, actualize log.file.rootPath
em milvus.yaml. E se implementar o Milvus com o gráfico milvus-helm
, também precisa de ativar a persistência do registo primeiro através de --set log.persistence.enabled=true
.
Se você não alterou a configuração, usar kubectl logs <pod-name> ou docker logs CONTAINER também pode ajudá-lo a encontrar o log.
Posso criar um índice para um segmento antes de inserir dados nele?
Sim, você pode. Mas recomendamos a inserção de dados em lotes, cada um dos quais não deve exceder 256 MB, antes de indexar cada segmento.
Posso partilhar uma instância etcd entre várias instâncias Milvus?
Sim, pode partilhar uma instância etcd entre várias instâncias Milvus. Para isso, é necessário alterar etcd.rootPath
para um valor separado para cada instância Milvus nos ficheiros de configuração de cada uma delas antes de as iniciar.
Posso compartilhar uma instância do Pulsar entre várias instâncias do Milvus?
Sim, pode partilhar uma instância Pulsar entre várias instâncias Milvus. Para fazer isso, você pode
- Se o multi-tenancy estiver habilitado na sua instância Pulsar, considere alocar um tenant ou namespace separado para cada instância Milvus. Para isso, é necessário alterar
pulsar.tenant
oupulsar.namespace
nos ficheiros de configuração das suas instâncias Milvus para um valor único para cada uma delas antes de as iniciar. - Se não planeia ativar o multi-tenancy na sua instância Pulsar, considere alterar
msgChannel.chanNamePrefix.cluster
nos ficheiros de configuração das suas instâncias Milvus para um valor único para cada uma antes de as iniciar.
Posso partilhar uma instância MinIO entre várias instâncias Milvus?
Sim, pode partilhar uma instância MinIO entre várias instâncias Milvus. Para tal, é necessário alterar minio.rootPath
para um valor único para cada instância Milvus nos ficheiros de configuração de cada uma delas antes de as iniciar.
Como posso lidar com a mensagem de erro pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
?
A mensagem de erro Illegal uri [example.db]
indica que está a tentar ligar-se ao Milvus Lite utilizando uma versão anterior do PyMilvus que não suporta este tipo de ligação. Para resolver este problema, actualize a sua instalação do PyMilvus para, pelo menos, a versão 2.4.2, que inclui suporte para ligação ao Milvus Lite.
Você pode atualizar o PyMilvus usando o seguinte comando:
pip install pymilvus>=2.4.2
Porque é que estou a obter menos resultados do que os limit
que defini na minha pesquisa/consulta?
Existem várias razões pelas quais pode receber menos resultados do que o limit
que especificou:
Dados limitados: A coleção pode não ter entidades suficientes para atender ao limite solicitado. Se o número total de entidades na coleção for inferior ao limite, receberá naturalmente menos resultados.
Chaves primárias duplicadas: O Milvus dá prioridade a entidades específicas quando encontra chaves primárias duplicadas durante uma pesquisa. Este comportamento varia consoante o tipo de pesquisa:
Consulta (correspondência exacta): Milvus seleciona a última entidade com a PK correspondente. ANN Search: Milvus seleciona a entidade com a maior pontuação de similaridade, mesmo que as entidades partilhem o mesmo PK. Esta priorização pode resultar em menos resultados únicos do que o limite se a sua coleção tiver muitas chaves primárias duplicadas.
Correspondências insuficientes: As expressões de filtragem da pesquisa podem ser muito rigorosas, resultando em menos entidades que atendem ao limite de similaridade. Se as condições definidas para a pesquisa forem muito restritivas, não haverá correspondência suficiente de entidades, levando a menos resultados do que o esperado.
MilvusClient("milvus_demo.db") gives an error: ModuleNotFoundError: No module named 'milvus_lite'
. O que é que provoca este erro e como é que pode ser resolvido?
Este erro ocorre quando se tenta utilizar o Milvus Lite numa plataforma Windows. O Milvus Lite foi concebido principalmente para ambientes Linux e pode não ter suporte nativo para Windows.
A solução é utilizar um ambiente Linux:
- Use um sistema operacional baseado em Linux ou uma máquina virtual para executar o Milvus Lite.
- Esta abordagem garantirá a compatibilidade com as dependências e funcionalidades da biblioteca.
O que são os erros de "comprimento excede o comprimento máximo" no Milvus, e como eles podem ser entendidos e resolvidos?
Os erros de "comprimento excede o comprimento máximo" no Milvus ocorrem quando o tamanho de um elemento de dados ultrapassa o tamanho máximo permitido para uma coleção ou campo. Eis alguns exemplos e explicações:
Erro de campo JSON:
<MilvusException: (code=1100, message=the length (398324) of json field (metadata) exceeds max length (65536): expected=valid length json string, actual=length exceeds max length: invalid parameter)>
Erro de comprimento da cadeia de caracteres:
<ParamError: (code=1, message=invalid input, length of string exceeds max length. length: 74238, max length: 60535)>
Erro no campo VarChar:
<MilvusException: (code=1100, message=the length (60540) of 0th VarChar paragraph exceeds max length (0)%!(EXTRA int64=60535): invalid parameter)>
Para compreender e resolver estes erros:
- Compreenda que
len(str)
em Python representa o número de caracteres, não o tamanho em bytes. - Para tipos de dados baseados em cadeias de caracteres como VARCHAR e JSON, utilize
len(bytes(str, encoding='utf-8'))
para determinar o tamanho real em bytes, que é o que Milvus utiliza para "max-length".
Exemplo em Python:
# Python Example: result of len() str cannot be used as "max-length" in Milvus
>>> s = "你好,世界!"
>>> len(s) # Number of characters of s.
6
>>> len(bytes(s, "utf-8")) # Size in bytes of s, max-length in Milvus.
18
pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
. O que causa este erro e como pode ser resolvido?
Este erro indica que está a tentar ligar-se ao Milvus Lite utilizando uma versão anterior do pymilvus que não o suporta. Para o resolver, actualize a sua instalação do pymilvus para, pelo menos, a versão 2.4.2. Esta versão suporta a ligação ao Milvus Lite. Para atualizar, utilize o seguinte comando:
pip install pymilvus>=2.4.2
Ainda tem dúvidas?
Você pode:
- Confira o Milvus no GitHub. Sinta-se à vontade para fazer perguntas, partilhar ideias e ajudar os outros.
- Junte-se ao nosso Fórum Milvus ou Canal Slack para encontrar suporte e envolver-se com a nossa comunidade de código aberto.