Metadatenfilter für die hybride Suche
Kombinieren Sie Vektorähnlichkeit mit strukturierten Filtern (Datum, Autor, Tag), um präzises und kontextbezogenes Retrieval zu erhalten.
Metadatenfilter für die hybride Suche ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Warum filtern?
Eine reine Vektorsuche gibt die K ähnlichsten Abschnitte zurück — selbst wenn sie zum falschen Mandanten, zur falschen Sprache oder zum falschen Dokument gehören.
Metadatenfilter beschränken die Suche auf relevante Teilmengen und verbessern dadurch sowohl die Präzision ALS AUCH den Recall.
Metadaten speichern
Fügen Sie bei der Aufnahme jedem Abschnitt ein Metadaten-Dictionary hinzu:
metadata = {
'tenant_id': 'acme',
'language': 'en',
'source': 'help-docs',
'updated_at': '2024-08-12',
'tags': ['shipping', 'returns']
}
for k, v in metadata.items():
print(f"{k}: {v}")
Filtering in Pinecone
results = index.query(
vector=query_vec,
top_k=5,
filter={
'tenant_id': 'acme',
'language': 'en'
}
)Bereichsfilter
Die meisten Vektor-Datenbanken unterstützen auch Bereichsfilter:
filter = {
'updated_at': {'$gte': '2024-01-01'},
'score': {'$gt': 0.5}
}
print(filter)
In and Not-In
filter = {
'tags': {'$in': ['shipping', 'returns']},
'archived': {'$ne': True}
}
print(filter)
Filtern in Qdrant
Qdrant verfügt über eine umfangreiche Filtersprache:
from qdrant_client.models import Filter, FieldCondition, MatchValue
filter = Filter(must=[
FieldCondition(key='tenant_id', match=MatchValue(value='acme')),
FieldCondition(key='language', match=MatchValue(value='en'))
])
results = client.search(
collection_name='docs',
query_vector=query_vec,
query_filter=filter,
limit=5
)Vorfilterung vs. Nachfilterung
Zwei Strategien:
- Vorfilterung — zuerst den Filter anwenden, DANN suchen (korrekt, kann ohne indizierte Metadaten langsam sein)
- Nachfilterung — suchen und anschließend nicht passende Ergebnisse entfernen (schnell, kann aber null Ergebnisse liefern)
Produktivsysteme verwenden eine Vorfilterung mit geeigneten Metadatenindizes.
Hybride Vektor- und Stichwortsuche
Kombinieren Sie semantische Suche mit der klassischen BM25-Stichwortsuche. Führen Sie beide Suchvorgänge aus und kombinieren Sie die Bewertungen (Reciprocal-Rank-Fusion ist der Standard):
def rrf(vec_results, bm25_results, k=60):
scores = defaultdict(float)
for rank, doc in enumerate(vec_results):
scores[doc.id] += 1 / (k + rank)
for rank, doc in enumerate(bm25_results):
scores[doc.id] += 1 / (k + rank)
return sorted(scores.items(), key=lambda x: -x[1])Mandantenfähigkeit
In SaaS muss JEDE Abfrage nach tenant_id filtern. Schreiben Sie diesen Filter fest in Ihre Retrieval-Wrapper, damit er nicht vergessen werden kann:
def search(query, tenant_id, top_k=5):
return index.query(
vector=embed(query),
top_k=top_k,
filter={'tenant_id': tenant_id}
)Zugriffskontrolle über Metadaten
Speichern Sie Benutzer- und Rollenberechtigungen in den Metadaten:
metadata = {
'visibility': 'public', # or 'internal', 'restricted'
'department': 'engineering',
'allowed_roles': ['engineer', 'manager']
}
# At query time:
filter = {'allowed_roles': {'$contains': current_user_role}}Boost für Aktualität
Um neuere Dokumente zu bevorzugen, rufen Sie zunächst mehr Kandidaten ab und bewerten Sie sie anschließend anhand ihrer Aktualität neu:
candidates = index.query(vector=query_vec, top_k=50)
scored = [
(c.score * recency_factor(c.metadata['updated_at']), c)
for c in candidates
]
scored.sort(reverse=True)
final = scored[:5]Achten Sie auf die Kardinalität von Metadaten
Metadaten mit hoher Kardinalität (Millionen eindeutiger Werte) machen Indizes sehr groß. Aggregieren Sie nach Möglichkeit vorab — speichern Sie beispielsweise für die Zeitfilterung Jahr und Monat statt eines vollständigen Zeitstempels.
Immer aktiver Filter
Welchen Filter sollte jeder mandantenfähige Agent IMMER enthalten?
Zusammenfassung
Metadatenfilter beschränken den Umfang Ihrer Suche. Kombinieren Sie sie für die besten Ergebnisse mit einer hybriden Suche (Vektor + BM25). Mandantenfähigkeit und Zugriffskontrolle beruhen darauf.
Lerne AI Agents mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 60
- Lektionen
- 239
Häufig gestellte Fragen
Ist die Lektion „Metadatenfilter für die hybride Suche“ kostenlos?
Ja — der vollständige Text von „Metadatenfilter für die hybride Suche“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Metadatenfilter für die hybride Suche“?
Kombinieren Sie Vektorähnlichkeit mit strukturierten Filtern (Datum, Autor, Tag), um präzises und kontextbezogenes Retrieval zu erhalten. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Metadatenfilter für die hybride Suche“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Pinecone, Weaviate, Qdrant: Vergleich
- Metadatenfilter für die hybride Suche
- Vektoren aktualisieren und löschen
- Distanzmetriken auswählen (cosine, L2, dot)