Metadatenfilterung mit Zilliz Cloud Pipelines
Eine häufige Frage, die ich höre, lautet: „Brauche ich zusätzlich zu meiner Vektordatenbank eine reguläre SQL-Datenbank?“ Diese Frage kann notwendig sein, wenn Sie zusätzliche Informationen mit den unstrukturierten Daten einbeziehen. Außerdem können Sie die Daten zu geschäftlichen Zwecken filtern, bevor Sie eine semantische Ähnlichkeitssuche durchführen. Zum Beispiel:
In einem rechtlichen Kontext müssen Sie möglicherweise nach Textabschnitten nur aus Ihrer Vertragsdatenbank oder einem bestimmten Vertrag suchen.
Im Einzelhandel möchten Sie Ihre Suche möglicherweise auf eine bestimmte Größe von Herrenschuhen eingrenzen.
Bei der Bildsuche möchten Sie möglicherweise Poster für Filme finden, die zwischen 2010 und 2016 veröffentlicht wurden und IMDB-Bewertungen von mehr als 7,0 haben.
Zurück zur obigen Frage: Meine Antwort lautet: „Nein, Sie müssen sich keine Sorgen darum machen, wenn Sie die Milvus-Vektordatenbank oder Zilliz Cloud, das vollständig verwaltete Milvus, verwenden.“ Mit Milvus können Sie eine hybride Vektor- und Skalarsuche durchführen, um eine bessere Präzision zu erreichen.
In den folgenden Abschnitten besprechen wir Skalar- oder Metadatenfilterung und wie Sie Metadatenfilterung in Zilliz Cloud durchführen können. Dieser Blog setzt meinen vorherigen Blog über den Einstieg in RAG in nur 5 Minuten fort. Sie finden den Code in diesem Notebook und scrollen Sie nach unten zu Zelle #27.
Wie versteht man Metadatenfilterung in Milvus?
Die Milvus-Vektordatenbank ermöglicht es Ihnen, Vektorsuchen durchzuführen, indem Sie boolesche Ausdrücke anwenden und diese mit Bedingungen für die Attribute Ihrer Daten einschränken. Die Attribute können jedes Feld sein, außer dem Embedding-Vektor der unstrukturierten Daten. Darüber hinaus existiert Metadatenfilterung in Milvus parallel zur Vektorsuche. Sie können in der Filterexpression jedes Feld außer dem Embedding-Vektorfeld verwenden und den Vektorindex nutzen, um das Embedding-Vektorfeld zu durchsuchen. Milvus übernimmt beide Vorgänge automatisch, wenn Sie in Ihrem Suchbefehl eine Filterexpression angeben.
Wie führt man Metadatenfilterung in Zilliz Cloud durch?
Um schnell iterieren zu können, verwende ich in diesem Leitfaden Zilliz Cloud (Free Tier), das vollständig verwaltete Milvus. Es hostet Ihre Datenbank auf einem serverlosen Cloud-Server, aber Sie können dennoch lokal damit interagieren, indem Sie PyMilvus-API-Aufrufe durchführen. Außerdem verwende ich Zilliz Cloud Pipelines, eine integrierte Funktion, um unstrukturierte Daten für optimierte Abläufe in Vektor-Embeddings zu codieren.
Die unten stehenden Daten stammen aus unseren Dokumentationsseiten der Milvus Documentation.
Schritt 1: Eine Collection (Datenbanktabelle) und Pipelines erstellen
Laden Sie Ihre Daten nach S3 oder GCS hoch.
Öffnen Sie ein weiteres Browserfenster unter https://cloud.zilliz.com/ und erstellen Sie einen „Starter“-Cluster.
- Fügen Sie den Collection-Namen hinzu und klicken Sie auf „Create Collection and Cluster“.
Hinweis: Wenn Sie Ihren ersten Zilliz Cloud-Cluster erstellen, erstellen Sie standardmäßig auch eine neue Collection. Wenn Sie Zilliz Cloud Pipelines verwenden, erstellen Sie eine weitere neue Collection.
- Navigieren Sie über das Menü auf der linken Seite zu Pipelines und folgen Sie den geführten Schritten, um Ihre Daten hochzuladen.
a. Beginnen Sie mit „Ingestion Pipeline.“
b. Wählen Sie den Namen Ihres Clusters aus, fügen Sie Collection- und Pipeline-Namen hinzu und klicken Sie auf „Add a Function.“
c. Fügen Sie einen Namen hinzu und klicken Sie auf „Add“. In diesem Schritt der Pipeline können Sie nichts ändern.
d. Optional: Klicken Sie erneut auf „Add a Function“
e. Optional: Benennen Sie den Metadatenfeld-Schritt, das Metadatenfeld und den Typ. Klicken Sie auf „Add“.
- Klicken Sie auf „Create Ingestion Pipeline“. Jetzt haben Sie eine neue Ingestion Pipeline und eine neue Collection erstellt.
Klicken Sie auf „Create Deletion and Search Pipelines“, um Deletion- und Search-Pipelines zu erstellen.
Um die Pipeline „Ingestion“ zu finden, klicken Sie auf das Run-Symbol > unter „Actions.“
- Verweisen Sie auf Ihre Daten. In AWS ist der einfachste Weg eine temporäre, vorsignierte URL. Wählen Sie aus, wann Sie sie teilen möchten, und kopieren Sie dann die vorsignierte URL.
- Fügen Sie die vorsignierte URL ein und klicken Sie auf „Run.“
- Aktualisieren Sie Ihren Browser und prüfen Sie, ob die neue Collection und das Schema korrekt sind.
Abfrage in der Webkonsole oder mithilfe von API-Aufrufen.
Schritt 2. Suche in der Webkonsole
Suchen Sie die Pipeline „Search“ unter Actions > klicken Sie auf das Run-Symbol.
Geben Sie in der UI Ihre Frage ein und klicken Sie auf „Run.“
Bearbeiten Sie den „filter“ mithilfe eines booleschen Ausdrucks. Sie sollten sehen, dass der Filter auf die Suchergebnisse angewendet wurde.
Das war’s! Sie können boolesche Ausdrücke verwenden, um die Suche über jedes Feld außer dem Embedding-Vektor der unstrukturierten Daten zu filtern. Das Embedding-Vektorfeld wird in Pipelines mit dem Vektorindex AUTOINDEX durchsucht.
Außerdem werden in Pipelines Embeddings normalisiert, sodass die Metriken IP und Kosinus-Distanz gleichwertig funktionieren. Das Standard-Embedding-Modell, das derzeit in Pipelines verwendet wird, ist bge-large-en-v1.5.
Schritt 3. Suche per API
Sie können auch mithilfe von API-Aufrufen suchen (Python-Code befindet sich in diesem Notebook; scrollen Sie nach unten zu Cell#27. )
Sie benötigen zwei Dinge.
Zilliz API Token
Pipeline-ID
Sie können das API Token über den Hauptbildschirm des Clusters abrufen.
Um die Pipeline-ID zu erhalten, suchen Sie die Pipeline „Search“, sehen Sie in der Spalte „Pipeline-ID“ nach und klicken Sie auf das Kopiersymbol. Fügen Sie die Pipeline ID in die URL Ihres API-Aufrufs ein.
import requests, json
url = "https://controller.api.gcp-us-west1.zillizcloud.com/v1/pipelines/pipe-xxxx/run"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {TOKEN}",
}
data = {
"data": {
"query_text": SAMPLE_QUESTION
},
"params": {
"limit": TOP_K,
"offset": 0,
# Any of these fields can be used in filter expression.
"outputFields": ["chunk_text", "chunk_id", "doc_name", "source"],
"filter": "doc_name == 'param.html'"
}
}
# Send the POST request
response = requests.post(url, headers=headers, json=data)
Das war’s! Jetzt haben Sie gelernt, wie Sie eine Filtersuche in Zilliz Cloud über die API durchführen.
Zusammenfassung
Ähnlich wie das Verknüpfen von Daten in einer SQL-Datenbank, um SQL-Abfragen ausführen zu können, ermöglicht Ihnen die Metadatenfilterung, hybride Vektor- und Skalarsuchen in Milvus oder Zilliz Cloud durchzuführen, um präzisere Ergebnisse zu erhalten, die auf Ihre spezifischen Anforderungen zugeschnitten sind. Sie können Ihre Suche mit bestimmten Bedingungen einschränken, indem Sie boolesche Ausdrücke angeben, die die Skalarfelder oder das Primärschlüsselfeld filtern. Sie können jedes Feld außer dem Einbettungsvektor im Filterausdruck verwenden und das Einbettungsvektorfeld mithilfe des Vektorindex durchsuchen. Milvus oder Zilliz Cloud übernimmt automatisch beide Vorgänge, wenn Sie in Ihrem Suchbefehl einen Filterausdruck angeben.
Der vollständige Code für diese Demo befindet sich in diesem Notebook; scrollen Sie nach unten zu Zelle #27. Probieren Sie es aus.
Weiterlesen

Zilliz Skills Breakdown: How AI Agents Master Vector Databases
Zilliz's Milvus Skill (pymilvus, 7 files) and Zilliz Cloud Skill (zilliz-cli, 14 modules) bring vector-DB dev and ops into one Claude Code session.

Announcing the General Availability of Zilliz Cloud BYOC on Google Cloud Platform
Zilliz Cloud BYOC on GCP offers enterprise vector search with full data sovereignty and seamless integration.

Balancing Precision and Performance: How Zilliz Cloud's New Parameters Help You Optimize Vector Search
Optimize vector search with Zilliz Cloud’s level and recall features to tune accuracy, balance performance, and power AI applications.



