🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI
Home
  • Benutzerhandbuch

Filter-Vorlagen

In Milvus können komplexe Filterausdrücke mit zahlreichen Elementen, insbesondere solche, die Nicht-ASCII-Zeichen wie CJK-Zeichen enthalten, die Abfrageleistung erheblich beeinträchtigen. Um dies zu beheben, führt Milvus einen Mechanismus zur Schablonierung von Filterausdrücken ein, der die Effizienz verbessern soll, indem er die Zeit für das Parsen komplexer Ausdrücke reduziert. Auf dieser Seite wird die Verwendung der Filterausdruckschablone bei Such-, Abfrage- und Löschvorgängen erläutert.

Überblick

Filterausdruckschablonen ermöglichen es Ihnen, Filterausdrücke mit Platzhaltern zu erstellen, die während der Abfrageausführung dynamisch durch Werte ersetzt werden können. Durch die Verwendung von Schablonen vermeiden Sie die Einbettung großer Arrays oder komplexer Ausdrücke direkt in den Filter, was die Parsing-Zeit reduziert und die Abfrageleistung verbessert.

Nehmen wir an, Sie haben einen Filterausdruck mit zwei Feldern, age und city, und Sie möchten alle Personen finden, deren Alter größer als 25 ist und die entweder in "北京" (Peking) oder "上海" (Shanghai) leben. Anstatt die Werte direkt in den Filterausdruck einzubetten, können Sie eine Vorlage verwenden.

filter = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}

Hier sind {age} und {city} Platzhalter, die bei der Ausführung der Abfrage durch die tatsächlichen Werte in filter_params ersetzt werden.

Die Verwendung von Filterausdruck-Vorlagen in Milvus hat mehrere entscheidende Vorteile.

  • Geringere Parsing-Zeit: Durch das Ersetzen großer oder komplexer Filterausdrücke durch Platzhalter verbringt das System weniger Zeit mit dem Parsing und der Verarbeitung des Filters.

  • Verbesserte Abfrageleistung: Durch den reduzierten Parsing-Overhead verbessert sich die Abfrageleistung, was zu höheren QPS und schnelleren Antwortzeiten führt.

  • Skalierbarkeit: Wenn Ihre Datensätze wachsen und die Filterausdrücke komplexer werden, sorgt das Templating dafür, dass die Leistung effizient und skalierbar bleibt.

Suchoperationen

Für Suchoperationen in Milvus wird der Ausdruck filter verwendet, um die Filterbedingung zu definieren, und der Parameter filter_params wird verwendet, um die Werte für die Platzhalter anzugeben. Das filter_params Wörterbuch enthält die dynamischen Werte, die Milvus verwendet, um den Filterausdruck zu ersetzen.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.search(
    "hello_milvus",
    vectors[:nq],
    filter=expr,
    limit=10,
    output_fields=["age", "city"],
    search_params={"metric_type": "COSINE", "params": {"search_list": 100}},
    filter_params=filter_params,
)

In diesem Beispiel wird Milvus bei der Ausführung der Suche {age} dynamisch durch 25 und {city} durch ["北京", "上海"] ersetzen.

Abfrageoperationen

Der gleiche Schablonenmechanismus kann auf Abfrageoperationen in Milvus angewendet werden. In der Funktion query definieren Sie den Filterausdruck und verwenden filter_params, um die zu ersetzenden Werte anzugeben.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.query(
    "hello_milvus",
    filter=expr,
    output_fields=["age", "city"],
    filter_params=filter_params
)

Durch die Verwendung von filter_params kann Milvus das dynamische Einfügen von Werten effizient handhaben und die Geschwindigkeit der Abfrageausführung verbessern.

Löschoperationen

Sie können Filterausdrücke auch in Löschvorgängen verwenden. Ähnlich wie bei der Suche und Abfrage definiert der Ausdruck filter die Bedingungen, und filter_params liefert die dynamischen Werte für die Platzhalter.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.delete(
    "hello_milvus",
    filter=expr,
    filter_params=filter_params
)

Dieser Ansatz verbessert die Leistung von Löschvorgängen, vor allem wenn es um komplexe Filterbedingungen geht.

Schlussfolgerung

Das Templating von Filterausdrücken ist ein wichtiges Werkzeug zur Optimierung der Abfrageleistung in Milvus. Durch die Verwendung von Platzhaltern und des filter_params Wörterbuchs können Sie die Zeit, die für das Parsen komplexer Filterausdrücke aufgewendet wird, erheblich reduzieren. Dies führt zu einer schnelleren Abfrageausführung und einer besseren Gesamtleistung.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?