AI Agents · Lektion

Metadatenfilter für die hybride Suche

Kombinieren Sie Vektorähnlichkeit mit strukturierten Filtern (Datum, Autor, Tag), um präzises und kontextbezogenes Retrieval zu erhalten.

Lektion 2 von 414 Schritte

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.

Kostenlos starten

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

  1. Pinecone, Weaviate, Qdrant: Vergleich
  2. Metadatenfilter für die hybride Suche
  3. Vektoren aktualisieren und löschen
  4. Distanzmetriken auswählen (cosine, L2, dot)
← Zurück zu AI Agents