Hinweise zur Veröffentlichung
Finden Sie heraus, was es Neues in Milvus gibt! Auf dieser Seite werden neue Funktionen, Verbesserungen, bekannte Probleme und Fehlerbehebungen in jeder Version zusammengefasst. Sie können die Versionshinweise für jede Version nach v2.4.0 in diesem Abschnitt finden. Wir empfehlen Ihnen, diese Seite regelmäßig zu besuchen, um sich über Updates zu informieren.
v2.4.11
Veröffentlichungsdatum: 11. September 2024
Milvus-Version | Python SDK-Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.11 | 2.4.6 | 2.4.3 | 2.4.8 |
Milvus 2.4.11 ist eine Fehlerbehebungsversion, die mehrere kritische Probleme im Zusammenhang mit dem MARISA-Trie-Index, der Verdichtung und den Ladevorgängen behebt. Mit dieser Version werden neue Funktionen zur Anzeige von Ausdrücken und zur Verbesserung der Stabilität beim Löschen eingeführt. Wir empfehlen allen Nutzern der 2.4.x-Reihe, auf diese Version zu aktualisieren, um von diesen Verbesserungen und Fehlerbehebungen zu profitieren.
Funktionen
- Statische Ansicht für Ausdrücke in 2.4 hinzugefügt(#35954)
- Quotenlogik für Löschpuffer implementiert(#35997)
Fehlerbehebungen
- Problem mit Trie-Indexbereich-Operationen für GreaterThan und GreaterThanEqual Vergleiche behoben(#36126)
- Korrigierte
marisa_label_order
Verwendung in der Trie Index Konstruktion(#36060) - Verbesserte Wertüberprüfung für
trie.predictive_search
(#35999) - Aktivierte Unterstützung für binäre arithmetische Ausdrücke bei invertiertem Index(#36097)
- Behobener Segment-Fehler, verursacht durch Skipindex(#35908)
- Speicherleck im Proxy-Meta-Cache behoben(#36076)
- Der mmap-Dateipfad wurde umbenannt, um Verzeichniskonflikte zu vermeiden(#35975)
- Verbesserte Protokollierung und Bereinigung für fehlgeschlagene/zeitüberschrittene Tasks in der Mix-Compaction(#35967)
- Behebung eines logischen Deadlocks bei hohem Speicherverbrauch durch den Delegator(#36066)
- Leere Segmente werden nun erstellt, wenn die Verdichtung alle Einfügungen löscht(#36045)
- Korrigierte Ladefeld-Listen-Bevölkerung von alten Versionen der Ladeinformationen in 2.4(#36018)
- Korrigierte Verfolgungslogik der Konfigurationsaktualisierung in 2.4(#35998)
- Behebung von Fehlern bei Such- und Abfrageanfragen während der Freigabe dynamischer Partitionen(#36019)
- Verhinderte das Überschreiben von Fallback-Parametern(#36006)
- Sicherstellung der korrekten Registrierung von Berechtigungsgruppen für die Validierung(#35938)
- Verhinderte fehlerhaftes Aufräumen von db limiter Knoten(#35992)
- Problem mit Replikaten, die nach einer Fehlerbehebung nicht an Abfragen teilnehmen, wurde behoben(#35925)
- Behobenes Data Race im Clustering Compaction Writer(#35958)
- Korrigierte Variablenreferenz nach einer Verschiebeoperation(#35904)
- Implementierte Clustering Key Skip Load Verhaltensprüfung(#35899)
- Sicherstellung eines einzelnen Starts von Querycoord-Beobachtern in 2.4(#35817)
Verbesserungen
- Aktualisierung von Milvus & proto auf Version 2.4.11(#36069)
- Adressiert ein Speicherleck in Unit-Tests und aktiviert die use_asan Option für Unittest-Builds(#35857)
- Anpassung der l0segmentsrowcount-Grenzwerte auf angemessenere Werte(#36015)
- Änderung des deltalog Speicherschätzungsfaktors auf eins(#36035)
- Implementierte Slicesetequal für Ladefeldlistenvergleiche(#36062)
- Reduzierte Log-Häufigkeit für Löschoperationen(#35981)
- Upgraded etcd Version auf 3.5.14(#35977)
- Optimierte mmap-rss Reduzierung nach dem Aufwärmen(#35965)
- Die Abkühlungsperiode im Ratenbegrenzer für Leseanfragen wurde entfernt(#35936)
- Verbesserte Überprüfung von Ladefeldern für zuvor geladene Sammlungen(#35910)
- Unterstützung für das Löschen von Rollen im Zusammenhang mit Berechtigungslisten in 2.4 hinzugefügt(#35863)
- Implementierung von depguard-Regeln, um die Verwendung veralteter Proto-Bibliotheken zu verbieten(#35818)
Andere
- Aktualisierte Knowhere Version(#36067)
v2.4.10
Veröffentlichungsdatum: August 30, 2024
Milvus-Version | Python SDK-Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.10 | 2.4.6 | 2.4.3 | 2.4.6 |
Milvus 2.4.10 bietet erhebliche Verbesserungen in Bezug auf Funktionalität und Stabilität. Zu den wichtigsten Funktionen gehören die Unterstützung von Upsert-Operationen bei AutoID-aktivierten Sammlungen, die Möglichkeit, Sammlungen teilweise zu laden, und verschiedene Memory-Mapped-Konfigurationen (MMAP) zur Optimierung der Speichernutzung. In dieser Version wurden außerdem mehrere Fehler behoben, die zu Panics, Core Dumps und Ressourcenlecks führten. Wir empfehlen ein Upgrade, um alle Vorteile dieser Verbesserungen zu nutzen.
Funktionen
- Upsert mit automatischer ID: Unterstützung für Upsert-Operationen mit automatischer ID-Generierung(#34633)
- Feldpartielles Laden von Sammlungen [Beta-Vorschau]: Ermöglicht das Laden bestimmter Felder einer Sammlung(#35696)
- RBAC-Verbesserungen:
- RBAC Nachrichtenunterstützung für Change Data Capture (CDC) hinzugefügt(#35562)
- Einführung von readonly/readwrite/admin privilege Gruppen zur Vereinfachung des RBAC grant Prozesses(#35543)
- Neue API für das Sichern und Wiederherstellen von RBAC-Konfigurationen(#35513)
- Aktualisieren des Proxy-Caches nach der Wiederherstellung von RBAC-Metadaten(#35636)
- Verbesserte MMAP-Konfiguration: Mehr allgemeine Konfigurationsoptionen zur Steuerung des MMAP-Verhaltens(#35609)
- Datenbank-Zugriffsbeschränkungen: Neue Eigenschaften zur Einschränkung des Lesezugriffs auf Datenbanken(#35754)
Fehlerbehebungen
- Arrow Go Client gibt keinen Fehler mehr zurück(#35820)
- Korrigierte ungenaue Ratenbegrenzung(#35700)
- Proxy-Panik nach importbezogenen API-Fehlern behoben(#35559)
- Mögliche fehlerhafte Löschungen während GC Channel Checkpoints behoben(#35708)
- Behoben wurde eine Panik aufgrund von leeren Kandidaten-Importsegmenten(#35674)
- Korrigierte mmap Speicherfreigabe(#35726)
- Sicherstellung der korrekten Channel-Überwachung bei Upgrades von 2.2 auf 2.4(#35695)
- Reparierte DataNode unüberwachte Channel Release Funktion(#35657)
- Korrigierte Partitionsanzahl in RootCoord Metadaten(#35601)
- Probleme mit dynamischen Konfigurations-Updates für bestimmte Parameter behoben(#35637)
Verbesserungen
Leistung
- Optimierte Abfrage von dynamischen Feldern(#35602)
- Verbesserte Bitset-Leistung für AVX512(#35480)
- Neueinlesen des Wertes nach
once
Initialisierung für bessere Effizienz(#35643)
Verbesserungen beim Rolling Upgrade
- Markierung von Abfrageknoten als schreibgeschützt nach dem Aussetzen(#35586)
- Verhinderte die Koexistenz des alten Koordinators mit dem neuen Knoten/Proxy(#35760)
Andere
- Optimierter Prozess zur Erstellung des Milvus-Kerns(#35660)
- Aktualisiert auf protobuf-go v2(#35555)
- Verbessertes Tracing mit Hex-String-Kodierung für traceid und spanid(#35568)
- Treffer-Segmentnummer-Metrik für Query Hook hinzugefügt(#35619)
- Verbesserte Kompatibilität mit dem alten SDK für die configure load param Funktion(#35573)
- Unterstützung für HTTP v1/v2 Drosselung hinzugefügt(#35504)
- Reparierte Index-Speicher-Schätzung(#35670)
- Möglichkeit, mehrere Segmente in den Mix Compactor zu schreiben, um die Erzeugung großer Segmente zu vermeiden(#35648)
v2.4.9
Veröffentlichungsdatum: August 20, 2024
Milvus-Version | Python SDK-Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.9 | 2.4.5 | 2.4.3 | 2.4.4 |
Milvus v2.4.9 behebt ein kritisches Problem, das in einigen Fällen Ergebnisse unterhalb des Limits (topk) liefern konnte, und enthält mehrere wichtige Verbesserungen, um die Leistung und Benutzerfreundlichkeit der Plattform zu verbessern.
Kritische Fehlerbehebungen
- Das l0-Segment wurde aus dem lesbaren Snapshot ausgeschlossen(#35510).
Verbesserungen
- Duplizierte Schema-Helper-Erstellung im Proxy wurde entfernt(#35502).
- Unterstützung für die Kompilierung von Milvus auf Ubuntu 20.04 hinzugefügt(#35457).
- Optimierte Verwendung von Sperren und Vermeidung von Double Flush Clustering Buffer Writer(#35490).
- Das ungültige Protokoll wurde entfernt(#35473).
- Ein Benutzerhandbuch für die Clustering-Verdichtung wurde hinzugefügt(#35428).
- Unterstützung für dynamische Felder im Schemahelfer(#35469).
- Der Abschnitt msgchannel wurde in der generierten YAML hinzugefügt(#35466).
v2.4.8
Veröffentlichungsdatum: August 14, 2024
Milvus-Version | Python SDK Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.8 | 2.4.5 | 2.4.3 | 2.4.4 |
Mit Milvus 2.4.8 wurden mehrere bedeutende Verbesserungen der Leistung und Stabilität des Systems eingeführt. Das bemerkenswerteste Merkmal war die Implementierung von Clustering Compaction, einem Mechanismus, der die Such- und Abfrageeffizienz erhöht, indem er Daten in großen Sammlungen auf der Grundlage eines bestimmten Clustering-Schlüssels neu verteilt und so die Menge der gescannten Daten reduziert. Die Verdichtung wurde auch vom Shard DataNode entkoppelt, so dass jeder DataNode die Verdichtung unabhängig durchführen kann, was die Fehlertoleranz, Stabilität, Leistung und Skalierbarkeit verbessert. Außerdem wurde die Schnittstelle zwischen den Go- und C++-Komponenten überarbeitet, um asynchrone CGO-Aufrufe zu verwenden, wodurch Probleme wie Session-Timeouts behoben wurden. Die Abhängigkeiten der Anwendung wurden ebenfalls aktualisiert, um bekannte Sicherheitslücken zu schließen. Darüber hinaus enthält diese Version auch zahlreiche Leistungsoptimierungen und kritische Bugfixes.
Funktionen
- Es wurde eine Clustering-Kompaktierung implementiert, die es ermöglicht, Daten auf der Grundlage eines bestimmten Clustering-Schlüssels neu zu verteilen, um die Abfrageeffizienz zu verbessern(#34326),(#34363).
Verbesserungen
- Implementierung von asynchronen Such- und Abruffunktionen in CGO.(#34200)
- Der Verdichtungsprozess wurde vom Shard DataNode getrennt, um die Modularität des Systems zu verbessern.(#34157)
- Unterstützung für Client-Pooling in QueryNode innerhalb des Proxy/Delegator hinzugefügt, um die Leistung zu verbessern.(#35195)
- Sonic wurde integriert, um den CPU-Overhead während des JSON-Marshaling und -Marshaling in Gin und RestfulV1 Handlern zu minimieren.(#35018)
- Es wurde ein In-Memory-Cache eingeführt, um den Abruf von Authentifizierungsergebnissen zu optimieren.(#35272)
- Der Standard-Metrik-Typ für Autoindex wurde geändert.[#34277, #34479]
- Das Laufzeit-Speicherformat für variable Spalten wurde überarbeitet, was zu einer geringeren Speichernutzung führt.[#34367, #35012, #35041]
- Die Verdichtungsprozesse wurden überarbeitet, um eine dauerhafte Datenspeicherung zu ermöglichen.(#34268)
- Unterstützung von Memory-Mapped-Dateien für wachsende Segmente wurde aktiviert, was die Speicherverwaltung verbessert.(#34110)
- Verbesserte Zugriffsprotokolle durch Hinzufügen von RESTful API-Unterstützung, Protokollierung von Konsistenzstufen und Unterscheidung zwischen System- und Benutzerfehlern.[#34295, #34352, #34396]
- Der neue Parameter
range_search_k
in Knowhere wurde verwendet, um die Bereichssuche zu beschleunigen.(#34709) - Anwendung von blockierten Bloom-Filtern, um die Geschwindigkeit der Filterkonstruktion und Abfrage zu erhöhen.[#34377, #34922]
- Verbesserungen bei der Speichernutzung:
- Vorab zugewiesener Platz für DataNode-Einfügepuffer.(#34205)
- Vorab zugewiesene
FieldData
für Reduce-Operationen.(#34254) - Freigegebene Datensätze im Delete Codec, um Speicherlecks zu verhindern.(#34506)
- Kontrollierte Gleichzeitigkeitsstufe des Disk File Managers während des Ladens von Dateien.(#35282)
- Optimierte Go-Laufzeit-Garbage-Collection-Logik für rechtzeitige Speicherfreigabe.(#34950)
- Es wurde eine neue Versiegelungsrichtlinie für wachsende Segmente implementiert.(#34779)
- DataCoord-Verbesserungen:
- Verbesserungen des Lastausgleichs-Algorithmus:
- Verringerung des Speicherüberlastungsfaktors auf dem Delegator.(#35164)
- Zuweisung einer festen Speichergröße für den Delegator.(#34600)
- Die übermäßige Zuweisung von Segmenten und Kanälen für neue Abfrageknoten wurde vermieden.(#34245)
- Die Anzahl der Aufgaben pro Planungszyklus durch den Abfragekoordinator wurde reduziert, während die Planungshäufigkeit erhöht wurde.(#34987)
- Verbesserter Algorithmus zum Kanalausgleich auf dem DataNode(#35033)
- Erweiterte Systemmetriken: Es wurden neue Metriken für verschiedene Komponenten hinzugefügt, um bestimmte Aspekte zu überwachen, darunter:
Änderungen
Für Open-Source-Nutzer ändert diese Version die Metrik-Typen in AutoIndex für
FloatVector
undBinaryVector
inCosine
bzw.Hamming
.Korrigierte Versionen von Drittanbieter-Abhängigkeiten:
- Mit dieser Version werden feste Versionen für bestimmte Bibliotheken von Drittanbietern eingeführt, was das Software Supply Chain Management von Milvus erheblich verbessert.
- Durch die Isolierung des Projekts von Upstream-Änderungen werden die täglichen Builds vor möglichen Unterbrechungen geschützt.
- Das Update gewährleistet Stabilität, indem es ausschließlich validierte C++-Pakete von Drittanbietern in der JFrog Cloud hostet und Conan Recipe Revisions (RREV) verwendet.
- Dieser Ansatz mindert das Risiko, dass Änderungen durch Updates im ConanCenter unterbrochen werden.
- Entwickler, die Ubuntu 22.04 verwenden, werden sofort von diesen Änderungen profitieren. Entwickler auf anderen Betriebssystemen müssen jedoch möglicherweise ihre
glibc
Version aktualisieren, um Kompatibilitätsprobleme zu vermeiden.
Kritische Fehlerbehebungen
- Es wurde ein Problem behoben, bei dem Löschdaten verloren gingen, weil Segmente während der L0-Kompaktierung ausgelassen wurden.[#33980, #34363]
- Es wurde ein Problem behoben, bei dem Löschnachrichten aufgrund einer falschen Behandlung des Datenbereichs nicht weitergeleitet werden konnten.(#35313)
- Behebung einer SIGBUS-Ausnahme, die aufgrund einer falschen Verwendung von
mmap
auftrat.[#34455, #34530] - Abstürze, die durch illegale Suchausdrücke verursacht wurden, wurden behoben.(#35307)
- Es wurde ein Problem behoben, bei dem die DataNode-Überwachung aufgrund einer falschen Timeout-Einstellung im Überwachungskontext fehlschlug.(#35017)
Fehlerbehebungen
- Behebung von Sicherheitsschwachstellen durch Aktualisierung bestimmter Abhängigkeiten.[#33927, #34693]
- Es wurde ein Parsing-Fehler behoben, der durch übermäßig lange Ausdrücke ausgelöst wurde.(#34957)
- Es wurde ein Speicherleck behoben, das beim Parsen des Abfrageplans auftrat.(#34932)
- Es wurde ein Problem behoben, bei dem dynamische Änderungen der Log-Ebene nicht wirksam wurden.(#34777)
- Es wurde ein Problem behoben, bei dem Gruppierungsabfragen für wachsende Daten aufgrund von nicht initialisierten Segmentoffsets fehlschlugen.(#34750)
- Die Einstellung der Suchparameter bei Verwendung des Knowhere-Iterators wurde korrigiert.(#34732)
- Die Logik zur Überprüfung des Status der Partitionsladung wurde überarbeitet.(#34305)
- Es wurde ein Problem behoben, bei dem Aktualisierungen des Berechtigungs-Caches aufgrund von unbehandelten Anfragefehlern fehlschlugen.(#34697)
- Es wurde ein Fehler bei der Wiederherstellung von geladenen Sammlungen nach einem Neustart von QueryCoord behoben.(#35211)
- Ein Problem mit der Last-Idempotenz wurde behoben, indem eine unnötige Validierung der Indexparameter entfernt wurde.(#35179)
- Es wurde sichergestellt, dass
compressBinlog
ausgeführt wird, umreloadFromKV
zu ermöglichen, binlog'slogID
nach dem Neustart von DataCoord korrekt zu füllen.(#34062) - Ein Problem wurde behoben, bei dem Sammlungs-Metadaten nach der Garbage Collection in DataCoord nicht entfernt wurden.(#34884)
- Ein Speicherleck im SegmentManager innerhalb von DataCoord wurde behoben, indem durch Importe erzeugte Flush-Segmente entfernt wurden.(#34651)
- Ein Panic-Problem wurde behoben, das auftrat, wenn die Verdichtung deaktiviert war und eine Sammlung gelöscht wurde.(#34206)
- Ein Out-of-Memory-Problem in DataNode wurde behoben, indem der Algorithmus zur Schätzung der Speichernutzung verbessert wurde.(#34203)
- Durch die Implementierung von Singleflight für den Chunk-Cache wurde ein Burst-Speicherverbrauch verhindert, wenn mehrere Vektor-Abrufanforderungen auf einen Cache-Miss treffen.(#34283)
- Erfasst
ErrKeyNotFound
während CAS (Compare and Swap) Operationen in der Konfiguration.(#34489) - Es wurde ein Problem behoben, bei dem Konfigurationsaktualisierungen fehlschlugen, weil fälschlicherweise der formatierte Wert in einer CAS-Operation verwendet wurde.(#34373)
Verschiedenes
- Unterstützung für den OTLP HTTP-Exporter wurde hinzugefügt, wodurch die Beobachtbarkeit und die Überwachungsmöglichkeiten verbessert wurden.[#35073, #35299]
- Verbesserte Datenbankfunktionalität durch Einführung von Eigenschaften wie "max collections" und "disk quota", die nun dynamisch geändert werden können.[#34511, #34386]
- Es wurden Tracing-Funktionen für L0-Verdichtungsprozesse innerhalb von DataNode hinzugefügt, um die Diagnose und Überwachung zu verbessern.(#33898)
- Es wurde eine Quotenkonfiguration für die Anzahl der L0-Segmenteinträge pro Sammlung eingeführt, die eine bessere Kontrolle der Löschungsraten durch Anwendung von Gegendruck ermöglicht.(#34837)
- Der Mechanismus zur Ratenbegrenzung für Einfügeoperationen wurde erweitert, um auch Upsert-Operationen abzudecken, was eine konsistente Leistung unter hoher Last gewährleistet.(#34616)
- Es wurde ein dynamischer CGO-Pool für Proxy-CGO-Aufrufe implementiert, der die Ressourcennutzung und Leistung optimiert.(#34842)
- Die DiskAnn-Kompilierungsoption für die Betriebssysteme Ubuntu, Rocky und Amazon wurde aktiviert, was die Kompatibilität und Leistung auf diesen Plattformen verbessert.(#34244)
- Conan wurde auf Version 1.64.1 aktualisiert, um die Kompatibilität mit den neuesten Funktionen und Verbesserungen zu gewährleisten.(#35216)
- Knowhere wurde auf Version 2.3.7 aktualisiert, was Leistungsverbesserungen und neue Funktionen mit sich bringt.(#34709)
- Die Revision bestimmter Pakete von Drittanbietern wurde korrigiert, um konsistente Builds zu gewährleisten und das Risiko unerwarteter Änderungen zu verringern.(#35316)
v2.4.6
Veröffentlichungsdatum: Juli 16, 2024
Milvus-Version | Python SDK-Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.6 | 2.4.4 | 2.4.2 | 2.4.4 |
Milvus v2.4.6 ist ein Bugfix-Release, das kritische Probleme wie Panics, Speicherlecks und Datenverluste bei Löschvorgängen behebt. Außerdem werden mehrere Optimierungen eingeführt, darunter Verbesserungen der Überwachungsmetriken, die Aktualisierung der Go-Version auf 1.21 und die Verbesserung der Benutzerfreundlichkeit bei RESTful count(*)-Abfragen.
Verbesserungen
- Die Benutzerfreundlichkeit von RESTful-API-Abfragen wurde verbessert(#34444).
- Aktualisierung der Go-Version von 1.20 auf 1.21(#33940).
- Optimierung des Histogramm-Metrik-Buckets für feinere Granularität beim Bucketing(#34592).
- Aktualisierung der Pulsar-Abhängigkeitsversion von 2.8.2 auf 2.9.5. Es wird empfohlen, Pulsar seit Milvus 2.4.6 auf 2.9.5 zu aktualisieren.
Fehlerbehebungen
- Es wurde ein Problem behoben, bei dem die GetReplicas API einen Nil-Status zurückgab(#34019).
- Es wurde ein Problem behoben, bei dem Abfragen gelöschte Datensätze zurückgeben konnten(#34502).
- Es wurde ein Problem behoben, bei dem IndexNode während des Anhaltens aufgrund einer falschen Lebenszeitkontrolle stecken blieb(#34559).
- Es wurde ein Speicherleck bei Primärschlüssel-Orakel-Objekten behoben, wenn ein Worker offline ist(#34020).
- ChannelManagerImplV2 korrigiert, um den richtigen Knoten zu benachrichtigen, und behebt Probleme mit der Parametererfassung beim Schließen von Schleifen(#34004).
- Ein Lese- und Schreibdaten-Race in ImportTask segmentsInfo wurde durch die Implementierung einer tiefen Kopie behoben(#34126).
- Korrigierte Versionsinformationen für die Konfigurationsoption "legacyVersionWithoutRPCWatch", um Fehler bei Rolling Upgrades zu vermeiden(#34185).
- Die Metrik für die Anzahl der geladenen Partitionen wurde korrigiert(#34195).
- Übergabe der
otlpSecure
Konfiguration beim Einrichten von Segcore Tracing(#34210). - Es wurde ein Problem behoben, bei dem die Eigenschaften von DataCoord versehentlich überschrieben wurden(#34240).
- Es wurde ein Problem mit Datenverlust behoben, das durch das fälschliche Zusammenführen von zwei neu erstellten Nachrichtenströmen verursacht wurde(#34563).
- Eine Panik wurde behoben, die dadurch verursacht wurde, dass msgstream versuchte, einen ungültigen pchannel zu konsumieren(#34230).
- Es wurde ein Problem behoben, bei dem Importe verwaiste Dateien erzeugen konnten(#34071).
- Unvollständige Abfrageergebnisse aufgrund von doppelten Primärschlüsseln in einem Segment behoben(#34302).
- Ein Problem mit fehlenden versiegelten Segmenten bei der L0-Verdichtung wurde behoben(#34566).
- Das Problem der schmutzigen Daten in der channel-cp-Meta, die nach der Garbage Collection erzeugt wurde, wurde behoben(#34609).
- Korrigierte die Metriken, bei denen database_num nach dem Neustart von RootCoord 0 war(#34010).
- Ein Speicherleck im SegmentManager in DataCoord wurde behoben, indem durch Import erzeugte geflushte Segmente entfernt wurden(#34652).
- Es wurde sichergestellt, dass compressBinlog die logID von binlogs nach einem Neustart von DataCoord füllt, um ein korrektes Neuladen von KV sicherzustellen(#34064).
v2.4.5
Veröffentlichungsdatum: Juni 18, 2024
Milvus-Version | Python SDK Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.5 | 2.4.4 | 2.4.1 | 2.4.3 |
Die Veröffentlichung von Milvus 2.4.5 führt mehrere Verbesserungen und Fehlerbehebungen ein, um Leistung, Stabilität und Funktionalität zu verbessern. Milvus 2.4.5 vereinfacht die Suche in Sparse-, Float16- und bfloat16-Vektoren durch automatische Indizierung, beschleunigt Suchen, Löschen und Verdichten durch Bloom-Filter-Optimierungen und verbessert die Datenverwaltung durch schnellere Ladezeiten und Unterstützung von L0-Segmenten beim Import. Außerdem wird der Sparse-HNSW-Index für eine effiziente hochdimensionale Sparse-Datensuche eingeführt, die RESTful-API mit Unterstützung für Sparse-Float-Vektoren erweitert und kritische Fehler für mehr Stabilität behoben.
Neue Funktionen
- rbac-Unterstützung zur describe/alter database api hinzugefügt(#33804)
- Unterstützt den Aufbau des HNSW-Index für Sparse-Vektoren(#33653, #33662)
- Unterstützt die Erstellung des Disk-Index für binäre Vektoren(#33575)
- Unterstützt sparse Vektortyp auf RESTful v2(#33555)
- Hinzufügen von /management/stop RESTful api zum Stoppen einer Komponente(#33799)
Verbesserungen
- Setzt maxPartitionNum Standardwert auf 1024(#33950)
- Aktiviert, um das Zurücksetzen der Verbindung für nicht verfügbare Fehler zu erzwingen(#33910)
- Aktiviert Flush-Ratenbegrenzer der Sammlungsebene(#33864)
- Parallele Ausführung von Bloom-Filtern zur Beschleunigung der Segment-Vorhersage(#33793)
- Benutzte fastjson lib für unmarshal delete log, um json.Unmarshal zu beschleunigen(#33802)
- Verwendet BatchPkExist, um die Kosten für Bloomfilter-Funktionsaufrufe zu reduzieren(#33752)
- Beschleunigte das Laden von kleinen Sammlungen(#33746)
- Unterstützt den Import von Löschdaten in das L0-Segment (#33712)
- Übersprungene Markierungskompaktierungs-Tasks werden zeitgesteuert, um zu vermeiden, dass dieselbe Task immer wieder ausgeführt wird(#33833)
- Behandelt float16 und bfloat16 Vektoren als gleich wie BinaryVector in numpy bulk insert (#33788)
- Das includeCurrentMsg Flag für die seek Methode wurde hinzugefügt(#33743)
- MergeInterval, targetBufSize, maxTolerantLag von msgdispatcher zu Configs hinzugefügt(#33680)
- Verbesserte GetVectorByID von Sparse Vector(#33652)
- StringPrimarykey wurde entfernt, um unnötige Kopier- und Funktionsaufrufkosten zu reduzieren (#33649)
- Autoindex-Zuordnung für binäre/sparsame Datentypen hinzugefügt(#33625)
- Optimierte einige Caches, um den Speicherverbrauch zu reduzieren(#33560)
- Abstrahierte Ausführungsschnittstelle für Import/Preimport Aufgabe (#33607)
- Map pk zu Zeitstempel beim Einfügen in Puffer verwendet, um bf Ursachen zu reduzieren(#33582)
- Redundante Meta-Operationen beim Import wurden vermieden (#33519)
- Verbesserung der Logs durch bessere Festplatten-Quota-Informationen, Hinzufügen des UseDefaultConsistency-Flags, Entfernen unnötiger Logs(#33597, #33644, #33670)
Fehlerbehebungen
- Fehler behoben, dass queryHook den Vektortyp nicht erkennen konnte(#33911)
- Verhinderte die Verwendung der erfassten Iterationsvariable partitionID(#33970)
- Es wurde ein Fehler behoben, der dazu führen konnte, dass Milvus nicht in der Lage war, AutoIndex auf binären und spärlichen Vektoren zu erstellen(#33867)
- Fehler behoben, der dazu führen konnte, dass indexnode die Indexerstellung bei ungültigen Indexparametern aller Vektoren wiederholte(#33878)
- Fehler behoben, der bei gleichzeitigem Laden und Freigeben zum Absturz des Servers führen kann(#33699)
- Verbesserte Cache-Konsistenz für Konfigurationswerte(#33797)
- Verhindert möglichen Datenverlust beim Löschen(#33821)
- Sicherstellung, dass das Feld DroppedAt (wahrscheinlicher Zeitstempel der Löschung) nach dem Löschen von Sammlungen gesetzt wird(#33767)
- Es wurde ein Problem behoben, das Milvus dazu veranlasste, binäre Vektordatengrößen falsch zu behandeln(#33751)
- Verhindert, dass sensible Kafka-Anmeldeinformationen im Klartext protokolliert werden(#33694, #33747)
- Es wurde sichergestellt, dass Milvus Daten mit mehreren Vektorfeldern korrekt importieren kann.(#33724)
- Die Zuverlässigkeit des Imports wurde erhöht, indem vor dem Start geprüft wird, ob ein Importauftrag existiert.(#33673)
- Verbesserte Handhabung des spärlichen HNSW-Index (interne Funktionalität)(#33714)
- Bereinigung des Vektorspeichers zur Vermeidung von Speicherlecks(#33708)
- Sicherstellung eines reibungsloseren asynchronen Aufwärmens durch Behebung eines State-Lock-Problems(#33687)
- Es wurde ein Fehler behoben, der fehlende Ergebnisse in Abfrage-Iteratoren verursachen konnte.(#33506)
- Es wurde ein Fehler behoben, der dazu führen konnte, dass die Größe von Importsegmenten ungleichmäßig war (#33634)
- Falsche Handhabung der Datengröße für bf16, fp16 und binäre Vektortypen behoben(#33488)
- Verbesserte Stabilität durch Behebung möglicher Probleme mit dem L0 Compactor(#33564)
- Es wurde sichergestellt, dass dynamische Konfigurationsaktualisierungen korrekt im Cache reflektiert werden.(#33590)
- Verbesserte die Genauigkeit der RootCoordQuotaStates-Metrik (#33601)
- Die Anzahl der geladenen Entitäten in der Metrik wurde genauer angezeigt(#33522)
- Bietet vollständigere Informationen in Ausnahmeprotokollen. (#33396)
- Optimierte Abfrage-Pipeline durch Entfernen des unnötigen Gruppen-Checkers(#33485)
- Verwendung des lokalen Speicherpfads für eine genauere Überprüfung der Festplattenkapazität auf dem Indexknoten.(#33505)
- Korrigiert, dass hasMoreResult false zurückgeben kann, wenn die Trefferanzahl größer als das Limit ist(#33642)
- Verzögertes Laden von bf im Delegator, um zu verhindern, dass bfs immer wieder geladen wird, wenn der Worker keinen Speicher mehr hat(#33650)- Fehler behoben, dass queryHook den Vektortyp nicht erkennen konnte(#33911)
- Verhinderte die Verwendung der erfassten Iterationsvariable partitionID(#33970)
- Es wurde ein Fehler behoben, der dazu führen konnte, dass Milvus nicht in der Lage war, AutoIndex auf binären und spärlichen Vektoren zu erstellen(#33867)
- Fehler behoben, der dazu führen konnte, dass indexnode die Indexerstellung bei ungültigen Indexparametern aller Vektoren wiederholte(#33878)
- Fehler behoben, der bei gleichzeitigem Laden und Freigeben zum Absturz des Servers führen kann(#33699)
- Verbesserte Cache-Konsistenz für Konfigurationswerte(#33797)
- Verhindert möglichen Datenverlust beim Löschen(#33821)
- Sicherstellung, dass das Feld DroppedAt (wahrscheinlicher Zeitstempel der Löschung) nach dem Löschen von Sammlungen gesetzt wird(#33767)
- Es wurde ein Problem behoben, das Milvus dazu veranlasste, binäre Vektordatengrößen falsch zu behandeln(#33751)
- Verhindert, dass sensible Kafka-Anmeldeinformationen im Klartext protokolliert werden(#33694, #33747)
- Es wurde sichergestellt, dass Milvus Daten mit mehreren Vektorfeldern korrekt importieren kann.(#33724)
- Die Zuverlässigkeit des Imports wurde erhöht, indem vor dem Start geprüft wird, ob ein Importauftrag existiert.(#33673)
- Verbesserte Handhabung des spärlichen HNSW-Index (interne Funktionalität)(#33714)
- Bereinigung des Vektorspeichers zur Vermeidung von Speicherlecks(#33708)
- Sicherstellung eines reibungsloseren asynchronen Aufwärmens durch Behebung eines State-Lock-Problems(#33687)
- Es wurde ein Fehler behoben, der fehlende Ergebnisse in Abfrage-Iteratoren verursachen konnte.(#33506)
- Es wurde ein Fehler behoben, der dazu führen konnte, dass die Größe von Importsegmenten ungleichmäßig war (#33634)
- Falsche Handhabung der Datengröße für bf16, fp16 und binäre Vektortypen behoben(#33488)
- Verbesserte Stabilität durch Behebung möglicher Probleme mit dem L0 Compactor(#33564)
- Es wurde sichergestellt, dass dynamische Konfigurationsaktualisierungen korrekt im Cache reflektiert werden.(#33590)
- Verbesserte die Genauigkeit der RootCoordQuotaStates-Metrik (#33601)
- Die Anzahl der geladenen Entitäten in der Metrik wurde genauer angezeigt(#33522)
- Bietet vollständigere Informationen in Ausnahmeprotokollen. (#33396)
- Optimierte Abfrage-Pipeline durch Entfernen des unnötigen Gruppen-Checkers(#33485)
- Verwendung des lokalen Speicherpfads für eine genauere Überprüfung der Festplattenkapazität auf dem Indexknoten.(#33505)
- Korrigiert, dass hasMoreResult false zurückgeben kann, wenn die Trefferanzahl größer als das Limit ist(#33642)
- Verzögertes Laden von bf im Delegator, um zu verhindern, dass bfs immer wieder geladen wird, wenn der Worker keinen Speicher mehr hat(#33650)
v2.4.4
Veröffentlichungsdatum: Mai 31, 2024
Milvus-Version | Python SDK-Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.4 | 2.4.3 | 2.4.1 | 2.4.2 |
Milvus v2.4.4 enthält mehrere kritische Fehlerkorrekturen und Verbesserungen zur Steigerung der Leistung und Stabilität. Insbesondere haben wir ein kritisches Problem behoben, bei dem Bulk-Insert-Statistikprotokolle fälschlicherweise als Müll gesammelt wurden, was die Datenintegrität beeinträchtigen konnte. Wir empfehlen allen Anwendern von v2.4 dringend ein Upgrade auf diese Version, um von diesen Korrekturen zu profitieren.
Wenn Sie Bulk Insert verwenden, sollten Sie so schnell wie möglich auf v2.4.4 aktualisieren, um die Datenintegrität zu gewährleisten.
Kritische Fehlerbehebungen
- Die ID des Statistikprotokolls wurde ausgefüllt und auf ihre Korrektheit überprüft(#33478)
Verbesserungen
Fehlerbehebungen
- Leere Sammlungen wurden angezeigt, wenn alle Rechte gewährt wurden(#33454)
- Sicherstellung, dass CMake für die aktuelle Plattform heruntergeladen und installiert wird, nicht nur für x86_64(#33439)
v2.4.3
Veröffentlichungsdatum: Mai 29, 2024
Milvus-Version | Python SDK-Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.3 | 2.4.3 | 2.4.1 | 2.4.2 |
Milvus Version 2.4.3 bietet eine Vielzahl von Funktionen, Verbesserungen und Fehlerbehebungen, um die Leistung und Zuverlässigkeit zu erhöhen. Zu den bemerkenswerten Erweiterungen gehören die Unterstützung von Sparse-Float-Vektor-Bulk-Insert und eine optimierte Bloom-Filter-Beschleunigung. Die Verbesserungen betrafen verschiedene Bereiche, von dynamischen Konfigurationsaktualisierungen bis zur Optimierung der Speichernutzung. Fehlerkorrekturen behoben kritische Probleme wie Panikszenarien und sorgten für einen reibungsloseren Systembetrieb. Diese Version unterstreicht das kontinuierliche Engagement von Milvus für die Verbesserung der Funktionalität, die Optimierung der Leistung und die Bereitstellung einer robusten Benutzererfahrung.
Merkmale
- Unterstützt sparse float vector bulk insert für binlog/json/parquet(#32649)
Verbesserungen
- Implementierter Datacoord/Knoten-Überwachungskanal basierend auf RPC(#32036)
- Optimierter Bloom-Filter zur Beschleunigung der Löschfilterung(#32642, #33329, #33284)
- Rohdaten wurden über mmap geladen, wenn der skalare Index keine Rohdaten enthielt(#33317)
- Synchronisierung der milvus Konfiguration mit milvus.yaml(#33322, #32920, #32857, #32946)
- Aktualisierte knowhere Version(#33310, #32931, #33043)
- Aktivierte dynamische Aktualisierung der Balancer-Richtlinie in QueryCoord(#33272)
- Verwendet einen vorgefertigten Logger im Schreibpuffer, um die Logger-Zuweisung zu minimieren(#33304)
- Verbesserte Parameterüberprüfung(#32777, #33271, #33218)
- Es wurde ein Parameter hinzugefügt, um falsche Nachrichten-IDs im Checkpoint zu ignorieren(#33249)
- Konfiguration hinzugefügt, um die Behandlung von Initialisierungsfehlern für Plugins zu kontrollieren(#32680)
- Konfiguration zur Berechnung der Konsistenz von Punkten für Knowhere hinzugefügt(#32997)
- Konfigurationsoption zur Steuerung der Initialisierung von öffentlichen Rollenberechtigungen eingeführt(#33174)
- Optimierte Speichernutzung beim Lesen von Feldern(#33196)
- Verfeinerte Implementierung des Channel Managers v2(#33172, #33121, #33014)
- Funktion hinzugefügt, um die Größe der Daten im Speicher für binlog zu verfolgen(#33025)
- Metriken für die Größe von Segment-Index-Dateien hinzugefügt(#32979, #33305)
- Ersetzte Delete mit DeletePartialMatch, um Metriken zu entfernen(#33029)
- Bezogene Datengröße gemäß Segmenttyp erhalten(#33017)
- Kanal-Knoten-Informationen im Metaspeicher bereinigt(#32988)
- Rootcoord aus Datenknoten-Broker entfernt(#32818)
- Aktiviert Batch-Upload(#32788)
- Die Standard-Partitionsnummer wurde auf 16 geändert, wenn ein Partitionsschlüssel verwendet wird(#32950)
- Verbesserte Reduktionsleistung bei sehr großen top-k Abfragen(#32871)
- Nutzung der TestLocations-Fähigkeit zur Beschleunigung von Schreiben und Verdichtung(#32948)
- Optimierter Plan-Parser-Pool, um unnötiges Recycling zu vermeiden(#32869)
- Verbesserte Ladegeschwindigkeit(#32898)
- Verwendete Standard-Konsistenzstufe für restv2(#32956)
- Kostenantwort für die Rest-API hinzugefügt(#32620)
- Aktivierte Kanal-exklusive Balance-Politik (#32911)
- Beschriebene Datenbank-API im Proxy offengelegt(#32732)
- Verwendetes coll2replica Mapping beim Abrufen von RG nach Sammlung(#32892)
- Mehr Tracing für Suche und Abfrage hinzugefügt(#32734)
- Unterstützt dynamische Konfiguration für opentelemetry Trace(#32169)
- Vermeidet Iteration über Kanal-Ergebnisse beim Aktualisieren der Leaderview(#32887)
- Optimierte Handhabung von Vektor-Offsets für Parkett(#32822)
- Verbesserte Datensatz-Segment-Filterung mit Collection(#32831)
- Angepasste Log-Level und Frequenz(#33042, #32838, #33337)
- Ermöglichte das Anhalten des Ausgleichs, nachdem der Ausgleich ausgesetzt wurde(#32812)
- Aktualisierter Shard-Leader-Cache bei Änderung des Leader-Standorts(#32470)
- Entfernte veraltete API und Felder(#32808, #32704)
- metautil.channel hinzugefügt, um String-Vergleiche in int zu konvertieren(#32749)
- Typinformation für Payload Writer Fehlermeldung und Log hinzugefügt, wenn Querynode eine neue Sammlung gefunden hat(#32522)
- Überprüfung der Partitionsnummer beim Erstellen von Sammlungen mit Partitionsschlüssel(#32670)
- Altes l0-Segment wurde entfernt, wenn Watch fehlschlug(#32725)
- Verbessertes Drucken des Typs der Anfrage(#33319)
- Überprüft, ob die Array-Felddaten gleich Null sind, bevor der Typ ermittelt wird(#33311)
- Gab einen Fehler zurück, wenn die Delete/AddNode Knoten-Operation beim Start fehlschlug(#33258)
- Erlaubte das Aktualisieren der Server-ID von Datenknoten(#31597)
- Vereinheitlichte Bereinigung der Querynode-Metriken in der Collection-Version(#32805)
- Fehlerhafte Version der skalaren Auto-Index-Konfiguration behoben(#32795)
- Verfeinerte Index-Param-Prüfung beim Erstellen/Ändern von Indizes(#32712)
- Redundante Replika-Wiederherstellung wurde entfernt(#32985)
- Ermöglicht das Schreiben von mehr als 200k Segmenten in der Kanal-Metatabelle(#33300)
Fehlerbehebungen
- Panic behoben, wenn die Datenbank im Rate Limit Interceptor nicht existierte(#33308)
- Fehler bei der Sammlung von Quotacenter-Metriken aufgrund falscher Parameter behoben(#33399)
- Panik behoben, wenn processactivestandby einen Fehler zurückgab(#33372)
- Korrigierte das Abschneiden von Suchergebnissen in restful v2, wenn nq > 1(#33363)
- Datenbank-Namensfeld für Rollenoperationen in restful v2 hinzugefügt(#33291)
- Behoben: Globale Ratenbegrenzung funktionierte nicht(#33336)
- Korrigierte Panik, die durch das Scheitern des Indexaufbaus verursacht wurde(#33314)
- Validierung für sparse vector in segcore hinzugefügt, um die Legalität sicherzustellen(#33312)
- Entfernte Aufgabe aus syncmgr nach Abschluss der Aufgabe(#33303)
- Fehler bei der Partitionsschlüssel-Filterung während des Datenimports behoben(#33277)
- Die Unfähigkeit, TraceID zu generieren, wenn der noop-Exporter verwendet wird, wurde behoben(#33208)
- Verbesserter Abruf von Abfrageergebnissen(#33179)
- Markierter Kanal-Checkpoint wurde fallen gelassen, um das Auslaufen von Checkpoint-Lag-Metriken zu verhindern(#33201)
- Korrigierter Abfrageknoten, der während des Anhaltens des Fortschritts stecken blieb(#33154)
- Fehlende Segmente in der Flush-Antwort behoben(#33061)
- Absendeoperation idempotent gemacht(#33053)
- Zuweisung eines neuen Slice für jeden Batch im Streaming Reader(#33360)
- Offline-Knoten aus der Ressourcen-Gruppe nach QueryCoord-Neustart entfernt(#33233)
- Entfernter l0 compactor in completedCompactor(#33216)
- Quota-Wert bei Initialisierung des Limiters zurückgesetzt(#33152)
- Problem behoben, bei dem das etcd-Limit überschritten wurde(#33041)
- Überschreitung des etcd-Transaktionslimits aufgrund zu vieler Felder behoben(#33040)
- RLock-Wiedereintritt in GetNumRowsOfPartition entfernt(#33045)
- LeaderCacheObserver wurde vor SyncAll gestartet(#33035)
- Aktivierte den Ausgleich des freigegebenen Standby-Kanals(#32986)
- Initialisierte den Zugriffslogger vor der Serverinitialisierung(#32976)
- Verdichter wurde in die Lage versetzt, leere Segmente zu löschen(#32821)
- Füllte Deltalog-Eintragsnummer und Zeitbereich in L0-Kompaktierungen(#33004)
- Proxy-Absturz aufgrund von Shard-Leader-Cache-Daten-Race behoben(#32971)
- Korrigierte Zeiteinheit für Lastindex-Metrik(#32935)
- Problem behoben, bei dem ein Segment auf einem stoppenden Abfrageknoten nicht erfolgreich freigegeben werden konnte(#32929)
- Korrigierte Index-Ressourcen-Schätzung(#32842)
- Kanal-Prüfpunkt wurde auf Delta-Position gesetzt(#32878)
- Syncmgr sperrte den Schlüssel vor der Rückgabe von future(#32865)
- Sicherstellung, dass invertierter Index nur ein Segment hat(#32858)
- Behobener Verdichtungs-Trigger, der zwei identische Segmente auswählt(#32800)
- Problem behoben, bei dem der Partitionsname im binlog-Import nicht angegeben werden konnte(#32730, #33027)
- Dynamische Spalte wurde optional im Parkett-Import(#32738)
- Überprüfung der Auto-ID beim Einfügen von Daten wurde übersprungen(#32775)
- Validierung der Anzahl von Zeilen für Insert-Felddaten mit Schema(#32770)
- Wrapper und Keepalive für CTraceContext IDs hinzugefügt(#32746)
- Problem behoben, bei dem der Datenbankname nicht im Datacoord-Metaobjekt gefunden wurde(#33412)
- Synchronisiertes verworfenes Segment für verworfene Partition(#33332)
- Fehler bei der Sammlung von quotaCenter-Metriken aufgrund von falschen Parametern behoben(#33399)
v2.4.1
Veröffentlichungsdatum: Mai 6, 2024
Milvus-Version | Python SDK-Version | Java SDK-Version | Node.js SDK-Version |
---|---|---|---|
2.4.1 | 2.4.1 | 2.4.0 | 2.4.2 |
Milvus Version 2.4.1 bringt zahlreiche Verbesserungen und Fehlerkorrekturen, die darauf abzielen, die Leistung, Beobachtbarkeit und Stabilität der Software zu verbessern. Zu diesen Verbesserungen gehören eine deklarative Ressourcengruppen-API, eine erweiterte Bulk-Insert-Funktionalität, die Float16/BFloat16-Vektordatentypen unterstützt, ein verfeinerter Garbage-Collection-Mechanismus (GC), der Listenoperationen für die Objektspeicherung reduziert, sowie weitere Änderungen im Zusammenhang mit Leistungsoptimierungen. Darüber hinaus wurden Fehler behoben, wie z. B. Kompilierungsfehler, fehlgeschlagene Fuzzy-Übereinstimmungen bei Zeilenumbrüchen, falsche Parameter-Datentypen für RESTful-Schnittstellen und BulkInsert, das Fehler bei Numpy-Dateien auslöst, wenn dynamische Felder aktiviert sind.
Behebbare Änderungen
- Die Unterstützung für das Löschen mit einem leeren Filterausdruck wurde eingestellt.(#32472)
Funktionen
- Unterstützung für Float16/BFloat16 Vektor-Datentypen in BulkInsert hinzugefügt(#32157)
- Verbesserter Sparse-Float-Vektor zur Unterstützung von Brute-Force-Iterator-Suche und Bereichs-Suche(#32635)
Verbesserungen
- Deklarative Ressourcengruppen-Api hinzugefügt(#31930, #32297, #32536, #32666)
- Der Collection Observer in QueryCoord wurde umgeschrieben, um ihn aufgabenorientiert zu machen(#32441)
- Überarbeitung der Datenstruktur, die im SyncManager von DataNode verwendet wird, um die Speichernutzung zu reduzieren und Fehler zu vermeiden(#32673)
- Die Implementierung der Garbage Collection wurde überarbeitet, um die mit der Objektspeicherung verbundenen Listenoperationen zu minimieren(#31740)
- Reduzierte die CPU-Auslastung bei einer hohen Anzahl von Sammlungen(#32245)
- Verbessertes Management von milvus.yaml durch automatische Generierung relevanter Konfigurationselemente in der milvus.yaml Datei durch Code(#31832, #32357)
- Die Leistung der Abfrage wurde verbessert, indem die Daten nach der Durchführung einer lokalen Reduktion abgerufen werden(#32346)
- Option WithBlock für die Erstellung von etcd-Clients hinzugefügt(#32641)
- Verwendet die vom Client angegebene client_request_id als TraceID, wenn der Client diese angibt(#32264)
- db label zu den Metriken für die delete und bulk insert Operationen hinzugefügt(#32611)
- Logik hinzugefügt, um die Überprüfung durch die Konfiguration für AutoID und PartitionKey Spalten zu überspringen(#32592)
- Verfeinerte Fehler im Zusammenhang mit der Authentifizierung(#32253)
- Verfeinerte Fehlerprotokolle für AllocSegmentID in DataCoord(#32351, #32335)
- Doppelte Metriken wurden entfernt(#32380, #32308) und unbenutzte Metriken aufgeräumt(#32404, #32515)
- Konfigurationsoption hinzugefügt, um zu steuern, ob die Aktivierung der partitionKey-Funktion erzwungen werden soll(#32433)
- Konfigurationsoption hinzugefügt, um die maximale Datenmenge zu kontrollieren, die in einer einzigen Anfrage eingefügt werden kann(#32433)
- Parallelisierung der applyDelete-Operation auf Segment-Ebene, um die Verarbeitung von Delete-Nachrichten durch den Delegator zu beschleunigen(#32291)
- Verwendung von Index(#32232, #32505, #32533, #32595) und Add Cache(#32580), um häufige Filterungsoperationen in QueryCoord zu beschleunigen.
- Umschreiben der Datenstruktur(#32273) und Refactoring des Codes(#32389), um häufige Operationen in DataCoord zu beschleunigen.
- Entfernt openblas aus conan(#32002)
Fehlerbehebungen
- Build-Milvus in rockylinux8 behoben(#32619)
- Kompilierungsfehler für SVE auf ARM behoben(#32463, #32270)
- Das Absturzproblem auf ARM-basierten GPU-Images wurde behoben(#31980)
- Behoben: Regex-Abfrage kann Text mit Zeilenumbruch nicht verarbeiten(#32569)
- Korrigiert, dass die Suche leere Ergebnisse liefert, wenn GetShardLeaders eine leere Knotenliste zurückgibt(#32685)
- Korrigierter BulkInsert-Fehler beim Auffinden von dynamischen Feldern in Numpy-Dateien(#32596)
- Fehler im Zusammenhang mit der RESTFulV2-Schnittstelle behoben, einschließlich eines wichtigen Fixes, der es numerischen Parametern in Anfragen erlaubt, numerische Eingaben anstelle von Strings zu akzeptieren(#32485, #32355)
- Speicherleck im Proxy behoben, indem das beobachtende Konfigurationsereignis im Ratenbegrenzer entfernt wurde(#32313)
- Problem behoben, bei dem der Ratenbegrenzer fälschlicherweise meldet, dass die Partition nicht gefunden werden kann, wenn partitionName nicht angegeben ist(#32647)
- Es wurde eine Erkennung zwischen den Fällen hinzugefügt, in denen sich die Sammlung im Wiederherstellungszustand befindet und im Fehlertyp nicht geladen ist.(#32447)
- Die Metrik für negative abfragbare num Entitäten wurde korrigiert(#32361)
v2.4.0
Veröffentlichungsdatum: April 17, 2024
Milvus-Version | Python SDK Version | Node.js SDK-Version |
---|---|---|
2.4.0 | 2.4.0 | 2.4.0 |
Wir freuen uns, die offizielle Markteinführung von Milvus 2.4.0 bekannt zu geben. Aufbauend auf der soliden Grundlage der Version 2.4.0-rc.1 haben wir uns darauf konzentriert, kritische Fehler zu beheben, die von unseren Benutzern gemeldet wurden, und gleichzeitig die bestehende Funktionalität zu erhalten. Darüber hinaus führt Milvus 2.4.0 eine Reihe von Optimierungen ein, die darauf abzielen, die Systemleistung zu erhöhen, die Beobachtbarkeit durch die Einbindung verschiedener Metriken zu verbessern und die Codebasis für eine größere Einfachheit zu verschlanken.
Verbesserungen
- Unterstützung für MinIO TLS-Verbindungen(#31396, #31618)
- AutoIndex-Unterstützung für skalare Felder(#31593)
- Hybrid Search Refactoring für konsistente Ausführungspfade mit regulärer Suche(#31742, #32178)
- Beschleunigte Filterung durch Bitset und Bitset_view Refaktorierung(#31592, #31754, #32139)
- Importaufgaben unterstützen nun das Warten auf den Abschluss des Datenindexes(#31733)
- Verbesserte Importkompatibilität(#32121), Aufgabenplanung(#31475) und Begrenzung der Größe und Anzahl importierter Dateien(#31542)
- Code-Vereinfachung, einschließlich Schnittstellen-Standardisierung für Typüberprüfung(#31945, #31857), Entfernung von veraltetem Code und Metriken(#32079, #32134, #31535, #32211, #31935) und Normalisierung von Konstantennamen(#31515)
- Neue Metriken für QueryCoord, die Verzögerung des aktuellen Zielkanalprüfpunkts (#31420)
- Neue db-Bezeichnung für allgemeine Metriken(#32024)
- Neue Metriken bezüglich der Anzahl gelöschter, indizierter und geladener Entitäten, mit der Einbeziehung von Bezeichnungen wie collectionName und dbName(#31861)
- Verbesserungen bei der Fehlerbehandlung für nicht übereinstimmende Vektortypen(#31766)
- Unterstützung für das Auslösen von Fehlern anstelle eines Absturzes, wenn der Index nicht erstellt werden kann(#31845)
- Unterstützung für die Invalidierung des Datenbank-Meta-Cache beim Löschen von Datenbanken(#32092)
- Überarbeitung der Schnittstelle für die Kanalverteilung(#31814) und die Verwaltung von Leader Views(#32127)
- Refactor channel dist manager interface(#31814) und Refactor leader view manager interface(#32127)
- Stapelverarbeitung(#31632), Hinzufügen von Zuordnungsinformationen(#32234, #32249) und Vermeidung der Verwendung von Sperren(#31787) zur Beschleunigung häufig aufgerufener Operationen
Aufhebende Änderungen
- Abschaffung der Gruppierungssuche bei binären Vektoren(#31735)
- Abgekündigte Gruppierungssuche mit hybrider Suche(#31812)
- HNSW-Index für binäre Vektoren wurde eingestellt(#31883)
Fehlerbehebungen
- Verbesserte Datentyp- und Werteprüfungen für Abfragen und Einfügungen, um Abstürze zu verhindern(#31478, #31653, #31698, #31842, #32042, #32251, #32204)
- RESTful API Fehlerbehebungen(#32160)
- Verbesserte Vorhersage des Ressourcenverbrauchs bei invertierten Indizes(#31641)
- Behebung von Verbindungsproblemen mit etcd, wenn Autorisierung aktiviert ist(#31668)
- Sicherheitsupdate für nats Server(#32023)
- Speichern von invertierten Index-Dateien in einem lokalen Speicherpfad von QueryNode anstelle von /tmp(#32210)
- Adressierte Datenordner-Speicherlecks für collectionInfo(#32243)
- Korrekturen für fp16/bf16 bezogene Fehler, die möglicherweise eine Systempanik verursachen konnten(#31677, #31841, #32196)
- Behebung von Problemen mit der Gruppierungssuche, die unzureichende Ergebnisse lieferte(#32151)
- Anpassung der Suche mit Iteratoren, um Offsets im Reduce-Schritt effektiver zu behandeln und adäquate Ergebnisse mit aktiviertem "reduceStopForBest" zu gewährleisten(#32088)
v2.4.0-rc.1
Veröffentlichungsdatum: März 20, 2024
Milvus-Version | Python SDK-Version |
---|---|
2.4.0-rc.1 | 2.4.0 |
Mit dieser Version werden mehrere szenariobasierte Funktionen eingeführt:
Neuer GPU-Index - CAGRA: Dank des Beitrags von NVIDIA bietet dieser neue GPU-Index eine 10-fache Leistungssteigerung, insbesondere bei Batch-Suchen. Einzelheiten finden Sie unter GPU-Index.
Multi-Vektor- und Hybrid-Suche: Diese Funktion ermöglicht die Speicherung von Vektoreinbettungen aus mehreren Modellen und die Durchführung hybrider Suchen. Weitere Informationen finden Sie unter Hybride Suche.
Spärliche Vektoren: Sparse Vectors sind ideal für die Interpretation und Analyse von Schlüsselwörtern und werden jetzt für die Verarbeitung in Ihrer Sammlung unterstützt. Weitere Informationen finden Sie unter Spärliche Vektoren.
Gruppierungssuche: Die kategoriale Aggregation verbessert den Abruf auf Dokumentenebene für Retrieval-Augmented Generation (RAG)-Anwendungen. Einzelheiten finden Sie unter Gruppierungssuche.
Invertierter Index und Fuzzy Matching: Diese Funktionen verbessern die Suche nach Schlüsselwörtern für skalare Felder. Weitere Informationen finden Sie unter Skalare Felder indizieren und gefilterte Suche.
Neue Funktionen
GPU-Index - CAGRA
Wir möchten dem NVIDIA-Team unseren aufrichtigen Dank für seinen unschätzbaren Beitrag zu CAGRA aussprechen, einem hochmodernen (SoTA) GPU-basierten Graph-Index, der online verwendet werden kann.
Im Gegensatz zu früheren GPU-Indizes zeigt CAGRA selbst bei kleinen Batch-Abfragen eine überwältigende Überlegenheit, ein Bereich, in dem CPU-Indizes traditionell überragend sind. Darüber hinaus ist die Leistung von CAGRA bei großen Batch-Abfragen und bei der Geschwindigkeit des Indexaufbaus - Bereiche, in denen GPU-Indizes bereits glänzen - wirklich beispiellos.
Ein Beispielcode ist in example_gpu_cagra.py zu finden.
Sparse Vector (Beta)
In dieser Version führen wir einen neuen Typ von Vektorfeldern ein, den Sparse Vector. Sparse Vektoren unterscheiden sich von ihren dichten Gegenstücken, da sie in der Regel eine um ein Vielfaches höhere Anzahl von Dimensionen haben, von denen nur eine Handvoll ungleich Null ist. Diese Eigenschaft bietet eine bessere Interpretierbarkeit aufgrund ihrer termbasierten Natur und kann in bestimmten Bereichen effektiver sein. Gelernte Sparse-Modelle wie SPLADEv2/BGE-M3 haben sich als sehr nützlich für gängige First-Stage-Ranking-Aufgaben erwiesen. Der Hauptanwendungsfall für diese neue Funktion in Milvus ist die Ermöglichung einer effizienten semantischen Näherungssuche über spärliche Vektoren, die von neuronalen Modellen wie SPLADEv2/BGE-M3 und Statistikmodellen wie dem BM25-Algorithmus erzeugt werden. Milvus unterstützt nun die effektive und leistungsstarke Speicherung, Indizierung und Suche (MIPS, Maximum Inner Product Search) von spärlichen Vektoren.
Ein Beispielcode ist in hello_sparse.py zu finden.
Multi-Embedding & Hybride Suche
Die Unterstützung mehrerer Vektoren ist der Grundstein für Anwendungen, die eine Datenverarbeitung mit mehreren Modellen oder eine Mischung aus dichten und spärlichen Vektoren erfordern. Mit der Multi-Vektor-Unterstützung können Sie jetzt:
- Speichern von Vektoreinbettungen, die für unstrukturierte Text-, Bild- oder Audiobeispiele aus mehreren Modellen generiert wurden.
- ANN-Suchen durchführen, die mehrere Vektoren jeder Entität umfassen.
- Suchstrategien anpassen, indem Sie verschiedenen Einbettungsmodellen Gewichte zuweisen.
- Experimentieren Sie mit verschiedenen Einbettungsmodellen, um die optimale Modellkombination zu finden.
Die Unterstützung für mehrere Vektoren ermöglicht das Speichern, Indizieren und Anwenden von Reranking-Strategien auf mehrere Vektorfelder unterschiedlichen Typs, wie FLOAT_VECTOR und SPARSE_FLOAT_VECTOR, in einer Sammlung. Derzeit sind zwei Rangordnungsstrategien verfügbar: Reciprocal Rank Fusion (RRF) und Average Weighted Scoring. Beide Strategien kombinieren die Suchergebnisse aus verschiedenen Vektorfeldern zu einer einheitlichen Ergebnismenge. Die erste Strategie priorisiert die Entitäten, die konsistent in den Suchergebnissen verschiedener Vektorfelder auftauchen, während die andere Strategie den Suchergebnissen der einzelnen Vektorfelder Gewichte zuweist, um ihre Bedeutung in der endgültigen Ergebnismenge zu bestimmen.
Ein Beispielcode ist in hybrid_search.py zu finden.
Invertierter Index und Fuzzy Match
In früheren Versionen von Milvus wurden speicherbasierte binäre Suchindizes und Marisa-Trie-Indizes für die Indizierung skalarer Felder verwendet. Diese Methoden waren jedoch sehr speicherintensiv. Die neueste Version von Milvus verwendet nun den Tantivy-basierten invertierten Index, der auf alle numerischen und String-Datentypen angewendet werden kann. Dieser neue Index verbessert die Leistung skalarer Abfragen drastisch und reduziert die Abfrage von Schlüsselwörtern in Strings um das Zehnfache. Darüber hinaus verbraucht der invertierte Index dank zusätzlicher Optimierungen bei der Datenkomprimierung und dem Memory-mapped storage (MMap)-Mechanismus der internen Indizierungsstruktur weniger Speicher.
Diese Version unterstützt auch unscharfe Übereinstimmungen bei der skalaren Filterung mit Präfixen, Infixen und Suffixen.
Beispielcode finden Sie in inverted_index_example.py und fuzzy_match.py.
Gruppierte Suche
Sie können nun die Suchergebnisse nach den Werten in einem bestimmten skalaren Feld gruppieren. Dies hilft RAG-Anwendungen bei der Implementierung eines Rückrufs auf Dokumentenebene. Betrachten Sie eine Sammlung von Dokumenten, wobei jedes Dokument in verschiedene Passagen aufgeteilt ist. Jede Passage wird durch eine Vektoreinbettung dargestellt und gehört zu einem Dokument. Um die relevantesten Dokumente anstelle der verstreuten Passagen zu finden, können Sie das Argument group_by_field in die search()-Operation aufnehmen, um die Ergebnisse nach der Dokument-ID zu gruppieren.
Ein Beispielcode findet sich in example_group_by.py.
Float16 und BFloat- Vektor Datentyp
Maschinelles Lernen und neuronale Netze verwenden häufig Datentypen mit halber Genauigkeit, wie Float16 und BFloat. Während diese Datentypen die Abfrageeffizienz verbessern und die Speichernutzung reduzieren können, haben sie den Nachteil einer geringeren Genauigkeit. Mit dieser Version unterstützt Milvus nun diese Datentypen für Vektorfelder.
Beispielcode finden Sie in float16_example.py und bfloat16_example.py.
Verbesserte Architektur
L0-Segment
Diese Version enthält ein neues Segment namens L0-Segment, das zur Aufzeichnung gelöschter Daten dient. Dieses Segment verdichtet regelmäßig die gespeicherten gelöschten Datensätze und teilt sie in versiegelte Segmente auf, wodurch die Anzahl der Datenflushs, die für kleine Löschungen erforderlich sind, reduziert wird und ein geringer Speicherplatzbedarf entsteht. Mit diesem Mechanismus trennt Milvus die Datenverdichtung vollständig von den Datenflushs und verbessert so die Leistung von Lösch- und Upsert-Operationen.
Überarbeitetes BulkInsert
Mit dieser Version wurde auch die Logik für Masseneinfügungen verbessert. Damit können Sie mehrere Dateien in einer einzigen BulkInsert-Anfrage importieren. Mit der überarbeiteten Version wurden sowohl die Leistung als auch die Stabilität von BulkInsert deutlich verbessert. Auch die Benutzerfreundlichkeit wurde verbessert, z. B. durch eine fein abgestimmte Ratenbegrenzung und benutzerfreundlichere Fehlermeldungen. Darüber hinaus können Sie über die RESTful-API von Milvus einfach auf die Bulk-Insert-Endpunkte zugreifen.
Memory-mapped Speicherung
Milvus verwendet Memory-mapped Storage (MMap), um die Speichernutzung zu optimieren. Anstatt den Dateiinhalt direkt in den Speicher zu laden, ordnet dieser Mechanismus den Dateiinhalt dem Speicher zu. Dieser Ansatz geht mit einer Leistungsverschlechterung einher. Wenn Sie MMap für eine HNSW-indizierte Sammlung auf einem Host mit 2 CPUs und 8 GB RAM aktivieren, können Sie 4x mehr Daten mit weniger als 10 % Leistungseinbußen laden.
Darüber hinaus ermöglicht diese Version eine dynamische und feinkörnige Kontrolle über MMap, ohne dass Milvus neu gestartet werden muss.
Einzelheiten finden Sie unter MMap-Speicher.
Andere
Milvus-CDC
Milvus-CDC ist ein einfach zu bedienendes Zusatztool zur Erfassung und Synchronisierung inkrementeller Daten zwischen Milvus-Instanzen, das eine einfache inkrementelle Sicherung und Disaster Recovery ermöglicht. In dieser Version wurde die Stabilität von Milvus-CDC verbessert, und die Change Data Capture (CDC)-Funktionalität ist nun allgemein verfügbar.
Um mehr über Milvus-CDC zu erfahren, besuchen Sie das GitHub Repository und die Milvus-CDC Übersicht.
Verfeinerte MilvusClient-Schnittstellen
MilvusClient ist eine einfach zu bedienende Alternative zum ORM-Modul. Es verfolgt einen rein funktionalen Ansatz, um die Interaktion mit dem Server zu vereinfachen. Anstatt einen Verbindungspool zu unterhalten, baut jeder MilvusClient eine gRPC-Verbindung zum Server auf. Das MilvusClient-Modul hat die meisten Funktionen des ORM-Moduls implementiert. Um mehr über das MilvusClient-Modul zu erfahren, besuchen Sie pymilvus und die Referenzdokumente.