🚀 Try Zilliz Cloud, the fully managed Milvus, for free—experience 10x faster performance! Try Now>>

milvus-logo
LFAI
Home
  • Benutzerhandbuch

Filterung erklärt

Milvus bietet leistungsstarke Filtermöglichkeiten, die eine präzise Abfrage Ihrer Daten ermöglichen. Mit Filterausdrücken können Sie bestimmte skalare Felder anvisieren und die Suchergebnisse mit verschiedenen Bedingungen verfeinern. In diesem Handbuch wird die Verwendung von Filterausdrücken in Milvus anhand von Beispielen erläutert, die sich auf Abfrageoperationen konzentrieren. Sie können diese Filter auch in Such- und Löschanfragen anwenden.

Grundlegende Operatoren

Milvus unterstützt mehrere grundlegende Operatoren zum Filtern von Daten.

  • Vergleichsoperatoren: ==, !=, >, <, >= und <= ermöglichen die Filterung auf der Grundlage von numerischen, Text- oder Datumsfeldern.

  • Bereichsfilter: IN und LIKE helfen bei der Suche nach bestimmten Wertebereichen oder -mengen.

  • Arithmetische Operatoren: +, -, *, /, % und `` werden für Berechnungen mit numerischen Feldern verwendet.

  • Logische Operatoren: AND, OR, und NOT oder '&&', '||', '~', '!' kombinieren mehrere Bedingungen zu komplexen Ausdrücken.

Beispiel: Filtern nach Farbe

Um Entitäten mit Primärfarben (rot, grün oder blau) in einem skalaren Feld color zu finden, verwenden Sie den folgenden Filterausdruck.

filter='color in ["red", "green", "blue"]'

Beispiel: Filtern von JSON-Feldern

Milvus erlaubt es, Schlüssel in JSON-Feldern zu referenzieren. Wenn Sie zum Beispiel ein JSON-Feld product mit den Schlüsseln price und model haben und Produkte mit einem bestimmten Modell und einem Preis unter 1.850 finden möchten, verwenden Sie diesen Filterausdruck.

filter='product["model"] == "JSN-087" and product["price"] < 1850'

Beispiel: Filtern von Array-Feldern

Wenn Sie ein Array-Feld history_temperatures mit Temperaturdatensätzen haben und Observatorien finden möchten, bei denen die 10. aufgezeichnete Temperatur 23°C überschreitet, verwenden Sie diesen Ausdruck.

filter='history_temperatures[10] > 23'

Weitere Informationen zu diesen grundlegenden Operatoren finden Sie unter Grundlegende Operatoren.

Vorlagen für Filterausdrücke

Wenn Sie mit CJK-Zeichen filtern, kann die Verarbeitung aufgrund der größeren Zeichensätze und Kodierungsunterschiede komplexer sein. Dies kann zu einer langsameren Leistung führen, insbesondere mit dem IN Operator.

Milvus führt Filterausdruck-Vorlagen ein, um die Leistung bei der Arbeit mit CJK-Zeichen zu optimieren. Durch die Trennung der dynamischen Werte vom Filterausdruck kann die Abfragemaschine das Einfügen von Parametern effizienter handhaben.

Beispiel

Um Personen über 25 Jahre zu finden, die entweder in "北京" (Peking) oder "上海" (Shanghai) leben, verwenden Sie den folgenden Vorlagenausdruck.

filter = "age > 25 and city in ['北京', '上海']"

Um die Leistung zu verbessern, verwenden Sie diese Variante mit Parametern.

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

Dieser Ansatz reduziert den Parsing-Overhead und verbessert die Abfragegeschwindigkeit. Weitere Informationen finden Sie unter Filtervorlagen.

Datentypspezifische Operatoren

Milvus bietet erweiterte Filteroperatoren für bestimmte Datentypen, wie JSON-, ARRAY- und VARCHAR-Felder.

JSON-Feld-spezifische Operatoren

Milvus bietet erweiterte Operatoren für die Abfrage von JSON-Feldern, die eine präzise Filterung innerhalb komplexer JSON-Strukturen ermöglichen.

JSON_CONTAINS(identifier, jsonExpr): Prüft, ob ein JSON-Ausdruck im Feld existiert.

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter='json_contains(tags, "sale")'

JSON_CONTAINS_ALL(identifier, jsonExpr): Stellt sicher, dass alle Elemente des JSON-Ausdrucks vorhanden sind.

# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter='json_contains_all(tags, ["electronics", "sale", "new"])'

JSON_CONTAINS_ANY(identifier, jsonExpr): Filtert nach Entitäten, bei denen mindestens ein Element im JSON-Ausdruck vorhanden ist.

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter='json_contains_any(tags, ["electronics", "new", "clearance"])'

Weitere Einzelheiten zu JSON-Operatoren finden Sie unter JSON-Operatoren.

Feldspezifische ARRAY-Operatoren

Milvus bietet erweiterte Filteroperatoren für Array-Felder, wie ARRAY_CONTAINS, ARRAY_CONTAINS_ALL, ARRAY_CONTAINS_ANY und ARRAY_LENGTH, die eine feinkörnige Kontrolle über Array-Daten ermöglichen.

ARRAY_CONTAINS: Filtert Entitäten, die ein bestimmtes Element enthalten.

filter="ARRAY_CONTAINS(history_temperatures, 23)"

ARRAY_CONTAINS_ALL: Filtert Entitäten, in denen alle Elemente einer Liste vorhanden sind.

filter="ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])"

ARRAY_CONTAINS_ANY: Filtert Entitäten, die ein beliebiges Element aus der Liste enthalten.

filter="ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])"

ARRAY_LENGTH: Filtert auf der Grundlage der Länge des Arrays.

filter="ARRAY_LENGTH(history_temperatures) < 10"

Weitere Einzelheiten zu Array-Operatoren finden Sie unter ARRAY-Operatoren.

VARCHAR feldspezifische Operatoren

Der Operator Text_Match ermöglicht die präzise Suche nach Dokumenten auf der Grundlage bestimmter Suchbegriffe. Er ist besonders nützlich für gefilterte Suchen, die skalare Filter mit vektoriellen Ähnlichkeitssuchen kombinieren. Im Gegensatz zur semantischen Suche konzentriert sich Text Match auf das genaue Vorkommen von Begriffen.

Milvus verwendet Tantivy zur Unterstützung der invertierten Indizierung und der begriffsbasierten Textsuche. Der Prozess umfasst.

  1. Analyzer: Tokenisiert und verarbeitet den Eingabetext.

  2. Indizierung: Erzeugt einen invertierten Index, der eindeutige Token auf Dokumente abbildet.

Weitere Einzelheiten finden Sie unter Textabgleich.

Übersetzt vonDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?