Häufig gestellte Fragen zum Betrieb
Was ist, wenn ich das Milvus-Docker-Abbild nicht von Docker Hub abrufen konnte?
Wenn Sie das Milvus-Docker-Abbild nicht von Docker Hub abrufen konnten, versuchen Sie, andere Registry-Mirrors hinzuzufügen.
Benutzer aus Festlandchina können die URL "https://registry.docker-cn.com" zum Array registry-mirrors in /etc.docker/daemon.json hinzufügen.
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
Ist Docker die einzige Möglichkeit, Milvus zu installieren und auszuführen?
Docker ist ein effizienter Weg, Milvus zu installieren, aber nicht der einzige Weg. Sie können Milvus auch aus dem Quellcode bereitstellen. Dies erfordert Ubuntu (18.04 oder höher) oder CentOS (7 oder höher). Weitere Informationen finden Sie unter Erstellen von Milvus aus dem Quellcode.
Welches sind die Hauptfaktoren, die den Abruf beeinflussen?
Der Abruf wird hauptsächlich durch den Indextyp und die Suchparameter beeinflusst.
Bei FLAT-Indizes führt Milvus einen vollständigen Scan innerhalb einer Sammlung durch, mit einer 100%igen Rückgabe.
Bei IVF-Indizes bestimmt der Parameter nprobe den Umfang einer Suche innerhalb der Sammlung. Eine Erhöhung von nprobe erhöht den Anteil der durchsuchten Vektoren und den Rücklauf, verschlechtert aber die Abfrageleistung.
Beim HNSW-Index bestimmt der Parameter ef die Breite der Graphensuche. Eine Erhöhung von ef erhöht die Anzahl der gesuchten Punkte im Graphen und die Wiederauffindbarkeit, verschlechtert jedoch die Abfrageleistung.
Weitere Informationen finden Sie unter Vektorindizierung.
Warum sind meine Änderungen an den Konfigurationsdateien nicht wirksam geworden?
Milvus unterstützt keine Änderungen an den Konfigurationsdateien während der Laufzeit. Sie müssen Milvus Docker neu starten, damit Änderungen an den Konfigurationsdateien wirksam werden.
Woher weiß ich, ob Milvus erfolgreich gestartet wurde?
Wenn Milvus unter Verwendung von Docker Compose gestartet wurde, führen Sie docker ps
aus, um zu beobachten, wie viele Docker-Container ausgeführt werden, und um zu überprüfen, ob die Milvus-Dienste korrekt gestartet wurden.
Bei Milvus standalone sollten Sie mindestens drei laufende Docker-Container beobachten können, von denen einer der Milvus-Dienst und die beiden anderen der etcd-Verwaltungs- und Speicherdienst sind. Weitere Informationen finden Sie unter Installieren von Milvus Standalone.
Warum weicht die Zeit in den Protokolldateien von der Systemzeit ab?
Der Zeitunterschied ist in der Regel darauf zurückzuführen, dass der Host-Rechner nicht die Coordinated Universal Time (UTC) verwendet.
Die Protokolldateien im Docker-Image verwenden standardmäßig die UTC-Zeit. Wenn Ihr Host-Rechner nicht UTC verwendet, kann dieses Problem auftreten.
Woher weiß ich, ob meine CPU Milvus unterstützt?
Die Rechenoperationen von Milvus hängen von der Unterstützung der CPU für den SIMD (Single Instruction, Multiple Data) Erweiterungsbefehlssatz ab. Ob Ihre CPU den SIMD-Erweiterungsbefehlssatz unterstützt, ist entscheidend für die Indexerstellung und die Vektorähnlichkeitssuche in Milvus. Stellen Sie sicher, dass Ihre CPU mindestens einen der folgenden SIMD-Befehlssätze unterstützt:
- SSE4.2
- AVX
- AVX2
- AVX512
Führen Sie den Befehl lscpu aus, um zu überprüfen, ob Ihre CPU die oben genannten SIMD-Befehlssätze unterstützt:
$ lscpu | grep -e sse4_2 -e avx -e avx2 -e avx512
Warum gibt Milvus während des Starts illegal instruction
zurück?
Milvus erfordert, dass Ihre CPU einen SIMD-Befehlssatz unterstützt: SSE4.2, AVX, AVX2, oder AVX512. Die CPU muss mindestens einen dieser Befehle unterstützen, um sicherzustellen, dass Milvus normal funktioniert. Ein illegal instruction
Fehler, der während des Starts zurückgegeben wird, deutet darauf hin, dass Ihre CPU keinen der vier oben genannten Befehlssätze unterstützt.
Siehe CPU-Unterstützung für SIMD-Befehlssatz.
Kann ich Milvus unter Windows installieren?
Ja. Sie können Milvus unter Windows entweder durch Kompilieren aus dem Quellcode oder aus einem Binärpaket installieren.
Siehe Milvus unter Windows ausführen, um zu erfahren, wie man Milvus unter Windows installiert.
Ich habe einen Fehler bei der Installation von pymilvus unter Windows erhalten. Was soll ich tun?
Es wird nicht empfohlen, PyMilvus unter Windows zu installieren. Wenn Sie PyMilvus jedoch unter Windows installieren müssen, aber einen Fehler erhalten, versuchen Sie es in einer Conda-Umgebung zu installieren. Weitere Informationen zur Installation von PyMilvus in einer Conda-Umgebung finden Sie unter Installieren des Milvus SDK.
Kann ich Milvus einsetzen, wenn ich nicht mit dem Internet verbunden bin?
Ja, Sie können Milvus in einer Offline-Umgebung installieren. Siehe Milvus offline installieren für weitere Informationen.
Wo kann ich die von Milvus erzeugten Protokolle finden?
Das Milvus-Protokoll wird standardmäßig auf stout (Standardausgabe) und stderr (Standardfehler) ausgegeben. Wir empfehlen jedoch dringend, Ihr Protokoll in der Produktion auf ein persistentes Volume umzuleiten. Um dies zu tun, aktualisieren Sie log.file.rootPath
in milvus.yaml. Und wenn Sie Milvus mit milvus-helm
chart einsetzen, müssen Sie auch zuerst die Log-Persistenz über --set log.persistence.enabled=true
aktivieren.
Wenn Sie die Konfiguration nicht geändert haben, kann Ihnen auch die Verwendung von kubectl logs <pod-name> oder docker logs CONTAINER helfen, das Protokoll zu finden.
Kann ich einen Index für ein Segment erstellen, bevor ich Daten in das Segment einfüge?
Ja, das können Sie. Wir empfehlen jedoch, Daten in Stapeln einzufügen, von denen jeder 256 MB nicht überschreiten sollte, bevor jedes Segment indiziert wird.
Kann ich eine etcd-Instanz für mehrere Milvus-Instanzen freigeben?
Ja, Sie können eine etcd-Instanz für mehrere Milvus-Instanzen freigeben. Dazu müssen Sie in den Konfigurationsdateien der einzelnen Milvus-Instanzen etcd.rootPath
auf einen separaten Wert für jede Instanz ändern, bevor Sie sie starten.
Kann ich eine Pulsar-Instanz für mehrere Milvus-Instanzen freigeben?
Ja, Sie können eine Pulsar-Instanz für mehrere Milvus-Instanzen freigeben. Um dies zu tun, können Sie
- Wenn Multi-Tenancy auf Ihrer Pulsar-Instanz aktiviert ist, sollten Sie einen separaten Tenant oder Namespace für jede Milvus-Instanz zuweisen. Dazu müssen Sie
pulsar.tenant
oderpulsar.namespace
in den Konfigurationsdateien Ihrer Milvus-Instanzen auf einen eindeutigen Wert für jede Instanz ändern, bevor Sie sie starten. - Wenn Sie nicht vorhaben, Multi-Tenancy auf Ihrer Pulsar-Instanz zu aktivieren, sollten Sie
msgChannel.chanNamePrefix.cluster
in den Konfigurationsdateien Ihrer Milvus-Instanzen auf einen eindeutigen Wert für jede Instanz ändern, bevor Sie sie starten.
Kann ich eine MinIO-Instanz für mehrere Milvus-Instanzen freigeben?
Ja, Sie können eine MinIO-Instanz für mehrere Milvus-Instanzen freigeben. Dazu müssen Sie in den Konfigurationsdateien der einzelnen Milvus-Instanzen minio.rootPath
auf einen eindeutigen Wert für jede Instanz ändern, bevor Sie sie starten.
Wie gehe ich mit der Fehlermeldung pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
um?
Die Fehlermeldung Illegal uri [example.db]
zeigt an, dass Sie versuchen, eine Verbindung zu Milvus Lite herzustellen, indem Sie eine frühere Version von PyMilvus verwenden, die diesen Verbindungstyp nicht unterstützt. Um dieses Problem zu beheben, aktualisieren Sie Ihre PyMilvus-Installation auf mindestens Version 2.4.2, die Unterstützung für die Verbindung zu Milvus Lite enthält.
Sie können PyMilvus mit dem folgenden Befehl aktualisieren:
pip install pymilvus>=2.4.2
Warum erhalte ich weniger Ergebnisse als die limit
, die ich in meiner Suche/Abfrage eingestellt habe?
Es gibt mehrere Gründe, warum Sie weniger Ergebnisse als die von Ihnen angegebene limit
erhalten können:
Begrenzte Daten: Die Sammlung enthält möglicherweise nicht genügend Entitäten, um das von Ihnen angeforderte Limit zu erreichen. Wenn die Gesamtzahl der Entitäten in der Sammlung geringer ist als der Grenzwert, erhalten Sie natürlich weniger Ergebnisse.
Doppelte Primärschlüssel: Milvus priorisiert bestimmte Entitäten, wenn bei einer Suche doppelte Primärschlüssel gefunden werden. Dieses Verhalten variiert je nach Suchtyp:
Abfrage (exakte Übereinstimmung): Milvus wählt die letzte Entität mit dem passenden PK aus. ANN-Suche: Milvus wählt die Entität mit dem höchsten Ähnlichkeitsscore aus, auch wenn die Entitäten denselben PK haben. Diese Priorisierung kann zu weniger eindeutigen Ergebnissen als dem Limit führen, wenn Ihre Sammlung viele doppelte Primärschlüssel hat.
Unzureichende Übereinstimmungen: Ihre Suchfilterausdrücke könnten zu streng sein, was dazu führt, dass weniger Entitäten den Ähnlichkeitsschwellenwert erfüllen. Wenn die für die Suche festgelegten Bedingungen zu restriktiv sind, werden nicht genügend Entitäten übereinstimmen, was zu weniger Ergebnissen als erwartet führt.
MilvusClient("milvus_demo.db") gives an error: ModuleNotFoundError: No module named 'milvus_lite'
. Was ist die Ursache für diesen Fehler und wie kann er behoben werden?
Dieser Fehler tritt auf, wenn Sie versuchen, Milvus Lite auf einer Windows-Plattform zu verwenden. Milvus Lite wurde in erster Linie für Linux-Umgebungen entwickelt und bietet möglicherweise keine native Unterstützung für Windows.
Die Lösung besteht darin, eine Linux-Umgebung zu verwenden:
- Verwenden Sie ein Linux-basiertes Betriebssystem oder eine virtuelle Maschine, um Milvus Lite auszuführen.
- Auf diese Weise wird die Kompatibilität mit den Abhängigkeiten und Funktionen der Bibliothek sichergestellt.
Was sind die "Länge überschreitet maximale Länge"-Fehler in Milvus, und wie können sie verstanden und behoben werden?
"Length exceeds max length"-Fehler treten in Milvus auf, wenn die Größe eines Datenelements die maximal zulässige Größe für eine Sammlung oder ein Feld überschreitet. Hier sind einige Beispiele und Erklärungen:
JSON-Feld-Fehler:
<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)>
String-Längenfehler:
<ParamError: (code=1, message=invalid input, length of string exceeds max length. length: 74238, max length: 60535)>
VarChar-Feldfehler:
<MilvusException: (code=1100, message=the length (60540) of 0th VarChar paragraph exceeds max length (0)%!(EXTRA int64=60535): invalid parameter)>
Um diese Fehler zu verstehen und zu beheben:
- Verstehen Sie, dass
len(str)
in Python die Anzahl der Zeichen angibt, nicht die Größe in Bytes. - Für String-basierte Datentypen wie VARCHAR und JSON verwenden Sie
len(bytes(str, encoding='utf-8'))
, um die tatsächliche Größe in Bytes zu bestimmen, die Milvus für "max-length" verwendet.
Beispiel 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
pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
. Was ist die Ursache für diesen Fehler und wie kann er behoben werden?
Dieser Fehler deutet darauf hin, dass Sie versuchen, eine Verbindung zu Milvus Lite herzustellen, indem Sie eine frühere Version von pymilvus verwenden, die dies nicht unterstützt. Um diesen Fehler zu beheben, aktualisieren Sie Ihre pymilvus-Installation auf mindestens Version 2.4.2. Diese Version unterstützt die Verbindung zu Milvus Lite. Verwenden Sie zum Upgrade den folgenden Befehl:
pip install pymilvus>=2.4.2
Haben Sie noch Fragen?
Sie können:
- Schauen Sie sich Milvus auf GitHub an. Hier können Sie Fragen stellen, Ideen austauschen und anderen helfen.
- Treten Sie unserem Milvus Forum oder Slack Channel bei, um Unterstützung zu erhalten und sich mit unserer Open-Source-Community auszutauschen.