Wählen Sie den richtigen Analyzer für Ihren Anwendungsfall
Dieser Leitfaden konzentriert sich auf die praktische Entscheidungsfindung bei der Auswahl eines Analysators. Technische Details zu Analysator-Komponenten und zum Hinzufügen von Analysator-Parametern finden Sie im Abschnitt Analysator-Übersicht.
Analyzer in 2 Minuten verstehen
In Milvus verarbeitet ein Analysator den in diesem Feld gespeicherten Text, um ihn für Funktionen wie Volltextsuche (BM25), Phrasenübereinstimmung oder Textübereinstimmung durchsuchbar zu machen. Betrachten Sie ihn als einen Textprozessor, der Ihren Rohinhalt in durchsuchbare Token umwandelt.
Ein Analyzer arbeitet in einer einfachen, zweistufigen Pipeline:
Analyzer Arbeitsablauf
Tokenisierung (erforderlich): In dieser ersten Phase wird ein Tokenizer eingesetzt, um eine fortlaufende Textkette in diskrete, aussagekräftige Einheiten, so genannte Token, zu zerlegen. Die Tokenisierungsmethode kann je nach Sprache und Inhaltstyp erheblich variieren.
Token-Filterung (optional): Nach der Tokenisierung werden Filter angewendet, um die Token zu ändern, zu entfernen oder zu verfeinern. Diese Operationen können die Umwandlung aller Token in Kleinbuchstaben, das Entfernen von bedeutungslosen Wörtern (z. B. Stoppwörter) oder die Reduzierung von Wörtern auf ihre Stammform (Stemming) umfassen.
Beispiel:
Input: "Hello World!"
1. Tokenization → ["Hello", "World", "!"]
2. Lowercase & Punctuation Filtering → ["hello", "world"]
Warum die Wahl des Analysators wichtig ist
Die Wahl des falschen Analysators kann dazu führen, dass relevante Dokumente nicht durchsuchbar sind oder irrelevante Ergebnisse geliefert werden.
Die folgende Tabelle fasst häufige Probleme zusammen, die durch die falsche Wahl des Analyzers verursacht werden, und bietet umsetzbare Lösungen für die Diagnose von Suchproblemen.
Problem |
Symptom |
Beispiel (Input & Output) |
Ursache (schlechter Analyzer) |
Lösung (guter Analyzer) |
|---|---|---|---|---|
Über-Tokenisierung |
Bei Textabfragen nach Fachbegriffen, Bezeichnern oder URLs werden relevante Dokumente nicht gefunden. |
|
|
Verwenden Sie einen |
Unter-Tokenisierung |
Die Suche nach einer Komponente einer Mehrwortphrase führt nicht zu Dokumenten, die die vollständige Phrase enthalten. |
|
Analyzer mit einem |
Verwenden Sie einen |
Sprachliche Unstimmigkeiten |
Die Suchergebnisse für eine bestimmte Sprache sind unsinnig oder nicht vorhanden. |
Chinesischer Text: |
|
Verwenden Sie einen sprachspezifischen Analyzer, wie z. B. |
Erste Frage: Müssen Sie einen Analyzer auswählen?
Für viele Anwendungsfälle brauchen Sie nichts Besonderes zu tun. Lassen Sie uns herausfinden, ob Sie einer von ihnen sind.
Standardverhalten: standard analyzer
Wenn Sie bei der Verwendung von Textsuchfunktionen wie der Volltextsuche keinen Analyzer angeben, verwendet Milvus automatisch den standard Analysator.
Der standard Analyzer:
Teilt Text an Leerzeichen und Interpunktion
Konvertiert alle Token in Kleinbuchstaben
Entfernt einen eingebauten Satz gängiger englischer Stoppwörter und die meisten Interpunktionszeichen
Beispiel einer Umwandlung:
Input: "The Milvus vector database is built for scale!"
Output: ['the', 'milvus', 'vector', 'database', 'is', 'built', 'scale']
Entscheidungskriterien: Eine schnelle Prüfung
Anhand dieser Tabelle können Sie schnell feststellen, ob der Standard-Analysator standard Ihren Anforderungen entspricht. Wenn dies nicht der Fall ist, müssen Sie einen anderen Weg wählen.
Ihr Inhalt |
Standard-Analysator OK? |
Warum |
Was Sie brauchen |
|---|---|---|---|
Englische Blogbeiträge |
✅ Ja |
Standardverhalten ist ausreichend. |
Verwenden Sie die Standardeinstellung (keine Konfiguration erforderlich). |
Chinesische Dokumente |
❌ Nein |
Chinesische Wörter haben keine Leerzeichen und werden als ein Token behandelt. |
Verwenden Sie einen eingebauten |
Technische Dokumentation |
❌ Nein |
Interpunktion wird aus Begriffen wie |
Erstellen Sie einen eigenen Analyzer mit einem |
Durch Leerzeichen getrennte Sprachen wie z.B. französischer/spanischer Text |
⚠️ Vielleicht |
Akzentuierte Zeichen ( |
Ein benutzerdefinierter Analyzer mit dem |
Mehrsprachige oder unbekannte Sprachen |
❌ Nein |
Dem Analyseprogramm |
Verwenden Sie einen eigenen Analyzer mit dem Alternativ können Sie auch mehrsprachige Analysatoren oder einen Sprachidentifikator für eine präzisere Behandlung mehrsprachiger Inhalte konfigurieren. |
Wenn der standardmäßige standard Analyzer Ihre Anforderungen nicht erfüllen kann, müssen Sie einen anderen Analyzer implementieren. Sie haben zwei Möglichkeiten:
Weg A: Integrierte Analysatoren verwenden
Integrierte Analyzer sind vorkonfigurierte Lösungen für gängige Sprachen. Sie sind der einfachste Weg für den Einstieg, wenn der Standard-Analysator nicht perfekt passt.
Verfügbare integrierte Analyzer
Analyzer |
Sprachunterstützung |
Komponenten |
Hinweise |
|---|---|---|---|
Die meisten durch Leerzeichen getrennten Sprachen (Englisch, Französisch, Deutsch, Spanisch, usw.) |
|
Allzweck-Analysator für die erste Textverarbeitung. Für einsprachige Szenarien bieten sprachspezifische Analysatoren (wie |
|
Speziell für Englisch, das Stemming und die Entfernung von Stoppwörtern für eine bessere semantische Übereinstimmung mit Englisch anwendet |
|
Empfohlen für rein englische Inhalte über |
|
Chinesisch |
|
Derzeit wird standardmäßig das Wörterbuch für vereinfachtes Chinesisch verwendet. |
Beispiel für die Implementierung
Um einen eingebauten Analyzer zu verwenden, geben Sie einfach seinen Typ in analyzer_params an, wenn Sie Ihr Feldschema definieren.
# Using built-in English analyzer
analyzer_params = {
"type": "english"
}
# Applying analyzer config to target VARCHAR field in your collection schema
schema.add_field(
field_name='text',
datatype=DataType.VARCHAR,
max_length=200,
enable_analyzer=True,
analyzer_params=analyzer_params,
)
Detaillierte Informationen zur Verwendung finden Sie unter Volltextsuche, Textabgleich oder Phrasenabgleich.
Weg B: Erstellen eines benutzerdefinierten Analyzers
Wenn die integrierten Optionen Ihren Anforderungen nicht genügen, können Sie einen benutzerdefinierten Analyzer erstellen, indem Sie einen Tokenizer mit einer Reihe von Filtern kombinieren. Damit haben Sie die volle Kontrolle über die Textverarbeitungspipeline.
Schritt 1: Wählen Sie den Tokenizer anhand der Sprache aus
Wählen Sie den Tokenizer auf der Grundlage der Hauptsprache Ihres Inhalts:
Westliche Sprachen
Für durch Leerzeichen getrennte Sprachen haben Sie diese Optionen:
Tokenizer |
Wie es funktioniert |
Am besten geeignet für |
Beispiele |
|---|---|---|---|
Trennt Text anhand von Leerzeichen und Satzzeichen |
Allgemeiner Text, gemischte Zeichensetzung |
|
|
Teilt nur nach Leerzeichen auf |
Vorverarbeiteter Inhalt, benutzerformatierter Text |
|
Ostasiatische Sprachen
Wörterbuchbasierte Sprachen erfordern spezielle Tokenizer für eine korrekte Wortsegmentierung:
Chinesisch
Tokenisierer |
Wie es funktioniert |
Am besten geeignet für |
Beispiele |
|---|---|---|---|
Chinesische wörterbuchbasierte Segmentierung mit intelligentem Algorithmus |
Empfohlen für chinesische Inhalte - kombiniert Wörterbuch mit intelligenten Algorithmen, speziell für Chinesisch entwickelt |
|
|
Rein wörterbuchbasierte morphologische Analyse mit chinesischem Wörterbuch(cc-cedict) |
Verarbeitet im Vergleich zu |
|
Japanisch und Koreanisch
Sprache |
Tokenisierer |
Wörterbuch-Optionen |
Am besten für |
Beispiele |
|---|---|---|---|---|
Japanisch |
ipadisch (allgemeiner Gebrauch), ipadisch-neologd (moderne Begriffe), unidisch (akademisch) |
Morphologische Analyse mit Behandlung von Eigennamen |
|
|
Koreanisch |
Koreanische morphologische Analyse |
|
Mehrsprachige oder unbekannte Sprachen
Für Inhalte, bei denen die Sprachen nicht vorhersehbar sind oder in den Dokumenten gemischt werden:
Tokenisierer |
Wie es funktioniert |
Am besten für |
Beispiele |
|---|---|---|---|
Unicode-fähige Tokenisierung (Internationale Komponenten für Unicode) |
Gemischte Schriften, unbekannte Sprachen, oder wenn einfache Tokenisierung ausreicht |
|
Wann sollte icu verwendet werden?
Gemischte Sprachen, bei denen eine Sprachidentifizierung unpraktisch ist.
Sie wollen den Overhead von mehrsprachigen Analysatoren oder den Sprachidentifikator nicht haben.
Der Inhalt besteht aus einer Hauptsprache mit gelegentlichen Fremdwörtern, die wenig zur Gesamtbedeutung beitragen (z. B. englischer Text mit sporadischen Markennamen oder technischen Begriffen auf Japanisch oder Französisch).
Alternative Ansätze: Für einen präziseren Umgang mit mehrsprachigem Inhalt sollten Sie die Verwendung von mehrsprachigen Analysatoren oder des Sprachidentifikators in Betracht ziehen. Weitere Informationen finden Sie unter Mehrsprachige Analysatoren oder Sprachidentifikator.
Schritt 2: Hinzufügen von Filtern für mehr Präzision
Nachdem Sie Ihren Tokenizer ausgewählt haben, wenden Sie Filter an, die auf Ihren spezifischen Suchanforderungen und Inhaltsmerkmalen basieren.
Häufig verwendete Filter
Diese Filter sind für die meisten durch Leerzeichen getrennten Sprachkonfigurationen (Englisch, Französisch, Deutsch, Spanisch, usw.) unerlässlich und verbessern die Suchqualität erheblich:
Filter |
Wie funktioniert es? |
Wann zu verwenden |
Beispiele |
|---|---|---|---|
Alle Token in Kleinbuchstaben umwandeln |
Universal - gilt für alle Sprachen mit Groß- und Kleinschreibung |
|
|
Wörter auf ihre Stammform reduzieren |
Sprachen mit Wortbeugungen (Englisch, Französisch, Deutsch, etc.) |
Für Englisch:
|
|
Gemeinsame bedeutungslose Wörter entfernen |
Die meisten Sprachen - besonders effektiv für Sprachen mit Leerzeichen-Trennung |
|
Bei ostasiatischen Sprachen (Chinesisch, Japanisch, Koreanisch usw.) sollten Sie sich stattdessen auf sprachspezifische Filter konzentrieren. Diese Sprachen verwenden in der Regel andere Ansätze für die Textverarbeitung und profitieren möglicherweise nicht wesentlich vom Stemming.
Textnormalisierungsfilter
Diese Filter standardisieren Textvariationen, um die Konsistenz des Abgleichs zu verbessern:
Filter |
Wie funktioniert er? |
Wann zu verwenden |
Beispiele |
|---|---|---|---|
Konvertierung von Zeichen mit Akzent in ASCII-Äquivalente |
Internationale Inhalte, nutzergenerierte Inhalte |
|
Token-Filterung
Steuern Sie, welche Token auf der Grundlage von Zeicheninhalt oder -länge erhalten bleiben:
Filter |
Wie es funktioniert |
Wann zu verwenden |
Beispiele |
|---|---|---|---|
Eigenständige Satzzeichen entfernen |
Bereinigung der Ausgabe von |
|
|
Nur Buchstaben und Zahlen behalten |
Technischer Inhalt, saubere Textverarbeitung |
|
|
Entfernen von Token außerhalb des angegebenen Längenbereichs |
Rauschen filtern (übermäßig lange Token) |
|
|
Benutzerdefinierte musterbasierte Filterung |
Domänenspezifische Token-Anforderungen |
|
Sprachspezifische Filter
Diese Filter behandeln spezifische Sprachmerkmale:
Filter |
Sprache |
Wie es funktioniert |
Beispiele |
|---|---|---|---|
Deutsch |
Zerlegt zusammengesetzte Wörter in durchsuchbare Komponenten |
|
|
Chinesisch |
Behält chinesische Zeichen + alphanumerische Zeichen bei |
|
|
Chinesisch |
Behält nur chinesische Zeichen bei |
|
Schritt 3: Kombinieren und implementieren
Um Ihren eigenen Analysator zu erstellen, definieren Sie den Tokenizer und eine Liste von Filtern im analyzer_params Wörterbuch. Die Filter werden in der Reihenfolge angewendet, in der sie aufgelistet sind.
# Example: A custom analyzer for technical content
analyzer_params = {
"tokenizer": "whitespace",
"filter": ["lowercase", "alphanumonly"]
}
# Applying analyzer config to target VARCHAR field in your collection schema
schema.add_field(
field_name='text',
datatype=DataType.VARCHAR,
max_length=200,
enable_analyzer=True,
analyzer_params=analyzer_params,
)
Abschluss: Testen Sie mit run_analyzer
Überprüfen Sie immer Ihre Konfiguration, bevor Sie sie auf eine Sammlung anwenden:
# Sample text to analyze
sample_text = "The Milvus vector database is built for scale!"
# Run analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Analyzer output:", result)
Häufig zu prüfende Probleme:
Über-Tokenisierung: Fachbegriffe werden falsch aufgeteilt
Untertokenisierung: Phrasen werden nicht richtig getrennt
Fehlende Token: Wichtige Begriffe werden herausgefiltert
Ausführliche Informationen zur Verwendung finden Sie unter run_analyzer.
Empfohlene Konfigurationen nach Anwendungsfall
Dieser Abschnitt enthält empfohlene Tokenizer- und Filterkonfigurationen für häufige Anwendungsfälle bei der Arbeit mit Analyzern in Milvus. Wählen Sie die Kombination, die am besten zu Ihrem Inhaltstyp und Ihren Suchanforderungen passt.
Bevor Sie einen Analyzer auf Ihre Sammlung anwenden, empfehlen wir Ihnen die Verwendung von run_analyzer zu verwenden, um die Leistung der Textanalyse zu testen und zu validieren.
Sprachen mit Akzentzeichen (Französisch, Spanisch, Deutsch, etc.)
Verwenden Sie einen standard Tokenizer mit Kleinbuchstaben-Konvertierung, sprachspezifischem Stemming und Stoppwort-Entfernung. Diese Konfiguration funktioniert auch für andere europäische Sprachen, indem die Parameter language und stop_words geändert werden.
# French example
analyzer_params = {
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding", # Handle accent marks
{
"type": "stemmer",
"language": "french"
},
{
"type": "stop",
"stop_words": ["_french_"]
}
]
}
# For other languages, modify the language parameter:
# "language": "spanish" for Spanish
# "language": "german" for German
# "stop_words": ["_spanish_"] or ["_german_"] accordingly
Englischer Inhalt
Für englische Textverarbeitung mit umfassender Filterung. Sie können auch den eingebauten english Analysator verwenden:
analyzer_params = {
"tokenizer": "standard",
"filter": [
"lowercase",
{
"type": "stemmer",
"language": "english"
},
{
"type": "stop",
"stop_words": ["_english_"]
}
]
}
# Equivalent built-in shortcut:
analyzer_params = {
"type": "english"
}
Chinesischer Inhalt
Verwenden Sie den jieba Tokenizer und wenden Sie einen Zeichenfilter an, um nur chinesische Zeichen, lateinische Buchstaben und Ziffern zu erhalten.
analyzer_params = {
"tokenizer": "jieba",
"filter": ["cnalphanumonly"]
}
# Equivalent built-in shortcut:
analyzer_params = {
"type": "chinese"
}
Bei vereinfachtem Chinesisch entfernt cnalphanumonly alle Token außer chinesischen Zeichen, alphanumerischem Text und Ziffern. Dadurch wird verhindert, dass die Interpunktion die Suchqualität beeinträchtigt.
Japanischer Inhalt
Verwenden Sie den lindera Tokenizer mit einem japanischen Wörterbuch und Filtern, um Interpunktion zu entfernen und die Tokenlänge zu kontrollieren:
analyzer_params = {
"tokenizer": {
"type": "lindera",
"dict": "ipadic" # Options: ipadic, ipadic-neologd, unidic
},
"filter": [
"removepunct", # Remove standalone punctuation
{
"type": "length",
"min": 1,
"max": 20
}
]
}
Koreanischer Inhalt
Ähnlich wie bei japanischen Inhalten wird der lindera Tokenizer mit einem koreanischen Wörterbuch verwendet:
analyzer_params = {
"tokenizer": {
"type": "lindera",
"dict": "ko-dic"
},
"filter": [
"removepunct",
{
"type": "length",
"min": 1,
"max": 20
}
]
}
Gemischte oder mehrsprachige Inhalte
Wenn Sie mit Inhalten arbeiten, die sich über mehrere Sprachen erstrecken oder Skripte auf unvorhersehbare Weise verwenden, beginnen Sie mit dem icu Analysator. Dieser Unicode-fähige Analyzer verarbeitet gemischte Schriften und Symbole effektiv.
Einfache mehrsprachige Konfiguration (kein Stemming):
analyzer_params = {
"tokenizer": "icu",
"filter": ["lowercase", "asciifolding"]
}
Erweiterte mehrsprachige Verarbeitung:
Für eine bessere Kontrolle über das Verhalten von Token in verschiedenen Sprachen:
Verwenden Sie eine mehrsprachige Analyzer-Konfiguration. Einzelheiten finden Sie unter Mehrsprachige Analyzer.
Implementieren Sie einen Sprachidentifikator für Ihren Inhalt. Weitere Informationen finden Sie unter Sprachidentifikator.
Integration mit Textabfragefunktionen
Nachdem Sie Ihren Analyzer ausgewählt haben, können Sie ihn in die von Milvus bereitgestellten Textsuchfunktionen integrieren.
Volltextsuche
Analyzer wirken sich direkt auf die BM25-basierte Volltextsuche aus, indem sie einen Sparse-Vektor erzeugen. Verwenden Sie denselben Analyzer sowohl für die Indizierung als auch für die Abfrage, um eine konsistente Tokenisierung zu gewährleisten. Sprachspezifische Analyzer bieten im Allgemeinen eine bessere BM25-Bewertung als generische Analyzer. Einzelheiten zur Implementierung finden Sie unter Volltextsuche.
Textabgleich
Textabgleichsoperationen führen einen exakten Tokenabgleich zwischen Abfragen und indiziertem Inhalt auf der Grundlage Ihrer Analysatorausgabe durch. Einzelheiten zur Implementierung finden Sie unter Textabgleich.
Phrasenabgleich
Der Phrasenabgleich erfordert eine konsistente Tokenisierung von Mehrwortausdrücken, um die Phrasengrenzen und die Bedeutung beizubehalten. Einzelheiten zur Implementierung finden Sie unter Phrasenabgleich.