FAQ operative
Cosa succede se non riesco a estrarre l'immagine Milvus Docker da Docker Hub?
Se non si riesce a estrarre l'immagine Milvus Docker da Docker Hub, provare ad aggiungere altri mirror di registro.
Gli utenti della Cina continentale possono aggiungere l'URL "https://registry.docker-cn.com" all'array registry-mirrors in /etc.docker/daemon.json.
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
Docker è l'unico modo per installare ed eseguire Milvus?
Docker è un modo efficiente per distribuire Milvus, ma non l'unico. È anche possibile distribuire Milvus dal codice sorgente. Ciò richiede Ubuntu (18.04 o superiore) o CentOS (7 o superiore). Per ulteriori informazioni, vedere Creazione di Milvus dal codice sorgente.
Quali sono i principali fattori che influenzano il richiamo?
Il richiamo è influenzato principalmente dal tipo di indice e dai parametri di ricerca.
Per gli indici FLAT, Milvus esegue una scansione esaustiva all'interno di una collezione, con un ritorno del 100%.
Per gli indici IVF, il parametro nprobe determina la portata della ricerca all'interno della collezione. L'aumento di nprobe aumenta la proporzione di vettori cercati e il richiamo, ma diminuisce le prestazioni della query.
Per gli indici HNSW, il parametro ef determina l'ampiezza della ricerca nel grafo. L'aumento di ef aumenta il numero di punti cercati nel grafo e il richiamo, ma diminuisce le prestazioni della query.
Per ulteriori informazioni, vedere Indicizzazione vettoriale.
Perché le mie modifiche ai file di configurazione non hanno avuto effetto?
Milvus non supporta la modifica dei file di configurazione durante l'esecuzione. È necessario riavviare Milvus Docker perché le modifiche ai file di configurazione abbiano effetto.
Come faccio a sapere se Milvus è stato avviato correttamente?
Se Milvus è stato avviato utilizzando Docker Compose, eseguite docker ps
per osservare quanti contenitori Docker sono in esecuzione e verificare se i servizi di Milvus sono stati avviati correttamente.
Per Milvus standalone, si dovrebbe essere in grado di osservare almeno tre contenitori Docker in esecuzione, uno dei quali è il servizio Milvus e gli altri due sono il servizio di gestione e archiviazione etcd. Per ulteriori informazioni, vedere Installazione di Milvus standalone.
Perché l'ora dei file di log è diversa da quella del sistema?
La differenza di orario è solitamente dovuta al fatto che la macchina host non utilizza il tempo universale coordinato (UTC).
I file di log all'interno dell'immagine Docker utilizzano UTC per impostazione predefinita. Se la macchina host non utilizza UTC, questo problema potrebbe verificarsi.
Come faccio a sapere se la mia CPU supporta Milvus?
Le operazioni di calcolo di Milvus dipendono dal supporto della CPU per il set di istruzioni SIMD (Single Instruction, Multiple Data). Il supporto del set di istruzioni SIMD da parte della CPU è fondamentale per la creazione di indici e la ricerca di similarità vettoriale in Milvus. Assicuratevi che la vostra CPU supporti almeno uno dei seguenti set di istruzioni SIMD:
- SSE4.2
- AVX
- AVX2
- AVX512
Eseguite il comando lscpu per verificare se la vostra CPU supporta i set di istruzioni SIMD di cui sopra:
$ lscpu | grep -e sse4_2 -e avx -e avx2 -e avx512
Perché Milvus restituisce illegal instruction
all'avvio?
Milvus richiede che la CPU supporti un set di istruzioni SIMD: SSE4.2, AVX, AVX2 o AVX512. La CPU deve supportare almeno uno di questi set per garantire il normale funzionamento di Milvus. Un errore illegal instruction
restituito all'avvio indica che la CPU non supporta nessuno dei quattro set di istruzioni di cui sopra.
Vedere il supporto della CPU per il set di istruzioni SIMD.
Posso installare Milvus su Windows?
Sì. È possibile installare Milvus su Windows compilando dal codice sorgente o da un pacchetto binario.
Vedere Eseguire Milvus su Windows per sapere come installare Milvus su Windows.
Ho ricevuto un errore durante l'installazione di pymilvus su Windows. Cosa devo fare?
Non è consigliabile installare PyMilvus su Windows. Tuttavia, se dovete installare PyMilvus su Windows ma avete ricevuto un errore, provate a installarlo in un ambiente Conda. Per ulteriori informazioni su come installare PyMilvus in ambiente Conda, consultate Install Milvus SDK.
Posso installare Milvus quando sono disconnesso da Internet?
Sì. È possibile installare Milvus in un ambiente offline. Per ulteriori informazioni, vedere Installazione di Milvus offline.
Dove posso trovare i log generati da Milvus?
Il log di Milvus viene stampato su stout (standard output) e stderr (standard error) per impostazione predefinita, tuttavia consigliamo vivamente di reindirizzare il log su un volume persistente in produzione. Per farlo, aggiornare log.file.rootPath
in milvus.yaml. E se si distribuisce Milvus con il grafico milvus-helm
, è necessario abilitare prima la persistenza dei log tramite --set log.persistence.enabled=true
.
Se non si è modificata la configurazione, anche l'uso di kubectl logs <pod-name> o docker logs CONTAINER può aiutare a trovare il log.
Posso creare un indice per un segmento prima di inserirvi i dati?
Sì, è possibile. Ma si consiglia di inserire i dati in lotti, ciascuno dei quali non deve superare i 256 MB, prima di indicizzare ogni segmento.
Posso condividere un'istanza etcd tra più istanze Milvus?
Sì, è possibile condividere un'istanza etcd tra più istanze Milvus. Per farlo, è necessario cambiare etcd.rootPath
in un valore separato per ogni istanza Milvus nei file di configurazione di ciascuna di esse prima di avviarle.
È possibile condividere un'istanza Pulsar tra più istanze Milvus?
Sì, è possibile condividere un'istanza Pulsar tra più istanze Milvus. Per farlo, è possibile
- Se la multi-tenancy è abilitata sulla vostra istanza Pulsar, considerate la possibilità di allocare un tenant o uno spazio dei nomi separato per ogni istanza Milvus. Per fare ciò, è necessario modificare
pulsar.tenant
opulsar.namespace
nei file di configurazione delle istanze Milvus con un valore unico per ciascuna di esse prima di avviarle. - Se non si intende abilitare la multi-tenancy sulla propria istanza Pulsar, si consiglia di modificare
msgChannel.chanNamePrefix.cluster
nei file di configurazione delle istanze Milvus con un valore unico per ciascuna di esse prima di avviarle.
È possibile condividere un'istanza MinIO tra più istanze Milvus?
Sì, è possibile condividere un'istanza MinIO tra più istanze Milvus. A tal fine, è necessario modificare minio.rootPath
in un valore unico per ogni istanza Milvus nei file di configurazione di ciascuna di esse prima di avviarle.
Come si gestisce il messaggio di errore pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
?
Il messaggio di errore Illegal uri [example.db]
indica che si sta cercando di connettersi a Milvus Lite utilizzando una versione precedente di PyMilvus che non supporta questo tipo di connessione. Per risolvere questo problema, aggiornate la vostra installazione di PyMilvus almeno alla versione 2.4.2, che include il supporto per la connessione a Milvus Lite.
È possibile aggiornare PyMilvus utilizzando il seguente comando:
pip install pymilvus>=2.4.2
Perché ottengo meno risultati rispetto a limit
che ho impostato nella mia ricerca/query?
Ci sono diversi motivi per cui si potrebbero ricevere meno risultati rispetto a limit
specificato:
Dati limitati: La collezione potrebbe non avere abbastanza entità per soddisfare il limite richiesto. Se il numero totale di entità nella raccolta è inferiore al limite, si riceveranno naturalmente meno risultati.
Chiavi primarie duplicate: Milvus dà priorità a entità specifiche quando incontra chiavi primarie duplicate durante una ricerca. Questo comportamento varia in base al tipo di ricerca:
Query (corrispondenza esatta): Milvus seleziona l'entità più recente con la PK corrispondente. Ricerca RNA: Milvus seleziona l'entità con il punteggio di somiglianza più alto, anche se le entità condividono la stessa PK. Questa priorità può portare a un numero di risultati unici inferiore al limite se la collezione ha molte chiavi primarie duplicate.
Corrispondenze insufficienti: Le espressioni di filtraggio della ricerca potrebbero essere troppo rigide, con il risultato di un numero inferiore di entità che soddisfano la soglia di somiglianza. Se le condizioni impostate per la ricerca sono troppo restrittive, non ci sono abbastanza entità che corrispondono, il che porta a un numero di risultati inferiore a quello previsto.
MilvusClient("milvus_demo.db") gives an error: ModuleNotFoundError: No module named 'milvus_lite'
. Quali sono le cause e come si può risolvere?
Questo errore si verifica quando si tenta di utilizzare Milvus Lite su una piattaforma Windows. Milvus Lite è stato progettato principalmente per ambienti Linux e potrebbe non avere un supporto nativo per Windows.
La soluzione è utilizzare un ambiente Linux:
- Utilizzare un sistema operativo o una macchina virtuale basata su Linux per eseguire Milvus Lite.
- Questo approccio garantirà la compatibilità con le dipendenze e le funzionalità della libreria.
Cosa sono gli errori di "lunghezza superiore alla lunghezza massima" in Milvus e come si possono capire e risolvere?
Gli errori "Length exceeds max length" in Milvus si verificano quando la dimensione di un elemento di dati supera la dimensione massima consentita per una collezione o un campo. Ecco alcuni esempi e spiegazioni:
Errore di 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)>
Errore di lunghezza della stringa:
<ParamError: (code=1, message=invalid input, length of string exceeds max length. length: 74238, max length: 60535)>
Errore campo VarChar:
<MilvusException: (code=1100, message=the length (60540) of 0th VarChar paragraph exceeds max length (0)%!(EXTRA int64=60535): invalid parameter)>
Per comprendere e risolvere questi errori:
- Capire che
len(str)
in Python rappresenta il numero di caratteri, non la dimensione in byte. - Per i tipi di dati basati su stringhe come VARCHAR e JSON, utilizzare
len(bytes(str, encoding='utf-8'))
per determinare la dimensione effettiva in byte, che è quella utilizzata da Milvus per "max-length".
Esempio in 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
Avete ancora domande?
È possibile:
- Controllare Milvus su GitHub. Sentitevi liberi di fare domande, condividere idee e aiutare gli altri.
- Unitevi al nostro Forum Milvus o al canale Slack per trovare supporto e impegnarvi con la nostra comunità open-source.