Die Vektorensuche hat sich in den letzten Jahren als eine der wichtigsten Technologien für die Suche in großen, unstrukturierten Datenbeständen etabliert. Insbesondere in Bereichen wie Produktsuche, Bild- und Textanalyse oder Empfehlungsdiensten gewinnt sie zunehmend an Bedeutung. Dabei ist die Fähigkeit, Suchergebnisse nach bestimmten Kriterien zu filtern, unerlässlich, um präzise und relevante Resultate zu liefern. Doch das Filtern auf einem Vektorindex stellt Entwickler vor komplexe Herausforderungen – insbesondere wenn es darum geht, die Trefferquote (Recall) nicht zu beeinträchtigen. Die Frage lautet: Wie filtert man in einem Vektorindex effizient, ohne die Qualität der Suchergebnisse zu verlieren? Diese Problematik ist im Kontext von Systemen wie Milvus und dessen vollverwalteter Cloud-Variante von Zilliz besonders relevant.
Im Folgenden wird erläutert, wie innovative Techniken das Filtern in Vektorindices revolutionieren und zugleich hohe Leistung garantieren.\n\nVektorensuche in der Praxis ist vielschichtiger als nur die reine Anwendung Approximate Nearest Neighbor (ANN) Algorithmen. Ein typisches Anwendungsbeispiel ist eine Produktsuche, bei der ein Nutzer nicht nur eine ähnliche Variante eines Produkts sucht – beispielsweise Schuhe wie auf einem Foto –, sondern gleichzeitig Einschränkungen bezüglich Farbe, Preis oder Verfügbarkeit vorgibt. Solche Metadatenfilter stellen beim Vektorindex eine besondere Herausforderung dar. Ein naiver Ansatz besteht darin, zunächst eine Ähnlichkeitssuche durchzuführen und anschließend die Ergebnisse anhand des Filters einzuschränken.
Allerdings führt das bei stark selektiven Filtern oft zu unzureichenden Ergebnismengen. Eine simple Lösung, etwa die Erhöhung der Anzahl der zurückgegebenen Kandidaten (topK), wirkt sich negativ auf die Performance aus und erzeugt einen hohen Ressourcenverbrauch.\n\nEffizientes Filtern auf Vektorindices ist eine große technische Herausforderung, die bei Nutzung von Graph-basierten Indizes wie HNSW (Hierarchical Navigable Small World Graph) oder DiskANN besonders komplex wird. Diese Indizes organisieren Vektoren in einem Netzwerk, in dem Nachbarn miteinander verbunden sind, was eine schnelle Navigation während der Suche ermöglicht. Wird jedoch eine Filterbedingung angewendet, entsteht häufig das sogenannte „Islands-Problem“: Wenn viele Punkte aufgrund des Filters ausgeschlossen werden, brechen die Verbindungen im Graphen, sodass relevante Elementgruppen nicht mehr erreichbar sind.
Das bedeutet, trotz treffender Vektoren werden diese nicht gefunden, was die Trefferquote massiv senkt.\n\nEs gibt zwei verbreitete Strategien im Umgang mit Filterbedingungen während der Graph-Traversierung: Entweder werden gefilterte Punkte von Anfang an ausgeschlossen, wodurch aber die Konnektivität zerreißt, oder alle Punkte werden besucht und der Filter erst nachträglich angewandt, was die Performance stark beeinträchtigt. Beide Herangehensweisen erzeugen Probleme bei entweder Qualität oder Geschwindigkeit.\n\nFortschrittliche Techniken versuchen, diesen Konflikt zu lösen. Die sogenannte Alpha-Strategie verwendet einen probabilistischen Ansatz, bei dem auch gefilterte Vektoren mit einer gewissen Wahrscheinlichkeit besucht werden, um wichtige Verbindungen im Graphen zu erhalten.
Die Visitationswahrscheinlichkeit wird dabei anhand der Selektivität des Filters (Filterrate) angepasst. So bleibt die Graphstruktur trotz Filterung funktional und die Trefferquote hoch, während unnötige Suchvorgänge minimiert werden.\n\nEin weiteres bedeutendes Verfahren ist die ACORN-Methode. Diese verzichtet bewusst auf das übliche Kanten-Pruning während des Aufbaus des HNSW-Graphen, um mehr Verlinkungen zwischen Nachbarn zu bewahren und die Konnektivität zu stärken. Zudem erweitert ACORN die Nachbarschaft jedes Knotens mit zusätzlichen Approximate Nearest Neighbors, was die Chancen erhöht, gleichbleibend gute Suchpfade zu finden – insbesondere wenn viele Knoten rausfallen.
Darüber hinaus prüft der Traversierungsalgorithmus Nachbarn von Nachbarn, um verborgene Verbindungen aufzudecken.\n\nMilvus setzt auf die Alpha-Strategie sowie weitere adaptive Mechanismen. So wird bei extrem selektiven Filtern – etwa wenn 99 Prozent der Daten aussortiert werden – automatisch auf eine Brute-Force-Suche umgeschaltet, um Performanceeinbußen durch vergrößerte Pfadlängen und fragmentierte Graphen zu vermeiden. Die proprietäre Suchmaschine Cardinal, Bestandteil von Zilliz Cloud, geht sogar darüber hinaus und kombiniert dynamisch „include-all“ und „exclude-all“ Zugangsmodi, basierend auf statistischen Analysen der Daten, um Effizienz und Trefferquote optimal auszubalancieren.\n\nEin grundlegendes Problem beim Filtern in Vektorindices ist die geringe Korrelation zwischen Metadaten und Vektorsemantik.
Beispielsweise können Produkte mit gleichem Preis völlig unterschiedliche visuelle Merkmale aufweisen. Um diese Diskrepanz zu umgehen, hat Milvus sogenannte metadata-aware Indizes entwickelt. Anstelle eines einzigen großen Graphen werden spezialisierte Subgraphen für unterschiedliche Metadatenwerte erzeugt. Wenn nach einer bestimmten Farbe oder einer anderen Eigenschaft gefiltert wird, navigiert die Suche in einem dieser spezialiserten Teilgraphen, was die Performance deutlich steigert. Spread über Basis- und Spaltengraphen (column graphs) wird eine effiziente Organisation der Daten erreicht ohne Zugeständnisse bei der Genauigkeit.
\n\nSowohl die Evaluierung komplexer Filter als auch die Suche selbst können Flaschenhälse sein. Trifft dies insbesondere bei aufwendigen Bedingungen wie JSON-Filtern oder umfangreichen Stringvergleichen zu, kann der traditionelle Filter-vor-Suchansatz extrem ineffizient sein. Umgekehrt besteht das Risiko, dass bei einer reinen Suche vor der Filterung zu wenige Ergebnisse dauerhaft gefiltert werden. Als Lösung wurde bei Milvus die iterative Filterung eingeführt. Dabei werden in kleinen Chargen Suchergebnisse abgefragt, gefiltert und bei Bedarf weitere Chargen angefordert.
Diese Technik minimiert die Anzahl der teuren Filterausführungen und sichert gleichzeitig eine ausreichende Anzahl hochqualitativer Treffer.\n\nIn vielen Szenarien sind Vektoren und Metadaten in unterschiedlichen Systemen gespeichert. Während Vektor-Datenbanken wie Milvus die semantische Suche ermöglichen, lagern traditionelle relationale oder dokumentenorientierte Datenbanken Preis, Verfügbarkeit und weitere strukturierte Informationen. Für gefilterte Suchen ist eine synchrone Abfrage beider Systeme notwendig, was bei großen Datenmengen schnell zum Flaschenhals wird. Eine konventionelle Methode ist, zunächst die IDs gefilterter Einträge aus der relationalen Datenbank abzurufen und diese dann für die Vektorsuche in Milvus zu verwenden.
Der Datentransfer großer ID-Listen und die Filterausführung auf Seite von Milvus verursachen hohen Overhead.\n\nMilvus begegnet diesem Problem mit dem sogenannten External Filtering, einer SDK-basierten Lösung. Der Ansatz invertiert die Reihenfolge der Verarbeitung: Zuerst wird die reine Vektorensuche durchgeführt und Ergebnisbatches geliefert. Auf der Client-Seite wird dann ein benutzerdefinierter Filter auf diese Batches angewendet. Sollte die gewünschte Anzahl an Treffern noch nicht erreicht sein, werden weitere Batches abgefragt.
Dieses Verfahren reduziert sowohl Netzwerklast als auch Rechenaufwand, da ausschließlich vielversprechende Kandidaten berücksichtigt werden.\n\nDie Feinjustierung von Suchparametern ist eine wichtige Stellschraube für Geschwindigkeit und Qualität. Zilliz Cloud bietet mit AutoIndex einen maschinellen Lernmechanismus, der diese Balance automatisiert optimiert. Statt manuell komplexe Parameter einzustellen, analysiert AutoIndex die Datenverteilung und typische Anfragen und passt dynamisch Indexeinstellungen und Filterevaluationsstrategien an. So wird beispielsweise der Suchbereich bei niedriger Filterrate ausgeweitet, um Recall zu verbessern, bei hoher Filterrate verengt, um Ressourcen zu sparen.
Die Automatisierung minimiert den Aufwand der Entwickler und garantiert stets optimale Resultate aus der Vektorsuche.\n\nRealitätsnahe Leistungsmessungen bestätigen den Mehrwert dieser Ansätze. Im Rahmen eines Benchmarks mit einem Datensatz aus einer Million Vektoren und repräsentativen Filter- und Nichtfilter-Anfragen auf leistungsfähiger AWS-Hardware bewies sich die voll verwaltete Variante von Milvus (Zilliz Cloud) als klarer Spitzenreiter hinsichtlich Durchsatz und Treffergenauigkeit bei einem Monatsbudget von 1000 US-Dollar. Im Vergleich zu anderen etablierten Vektordatenbanken ermöglichte die Kombination aus Graphoptimierungen, metadata-aware Indizes, iterativer Filterung und AutoIndex erhebliche Performancevorteile.\n\nDie Rolle von Vektorensuche mit Filterfunktionalität gewinnt in Zeiten exponentiell wachsender unstrukturierter Datenmengen immer weiter an Bedeutung.