AI-agenten · Les

Metadat filtering voor hybride zoeken

Combineer vectorsimilariteit met gestructureerde filters (datum, auteur, tag) voor precieze, contextuele retrieval.

Les 2 van 414 stappen

Metadat filtering voor hybride zoeken is een gratis AI-agenten-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-agenten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-agenten bevat in totaal 4 lessen.

Delen van deze les zijn nog niet vertaald en worden in het Engels weergegeven.

Waarom filteren?

Een zuivere vectorzoekopdracht retourneert de K meest vergelijkbare fragmenten — zelfs als ze bij de verkeerde tenant, taal of het verkeerde document horen.

Metagegevensfilters beperken de zoekopdracht tot relevante deelverzamelingen, waardoor je zowel precisie als recall krijgt.

Metagegevens opslaan

Voeg bij het opnemen aan elk fragment een woordenboek met metagegevens toe:

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'
    }
)

Bereikfilters

De meeste vectordatabases ondersteunen ook bereikfilters:

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)

Filteren in Qdrant

Qdrant heeft een uitgebreide filtertaal:

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
)

Vooraf filteren versus achteraf filteren

Twee strategieën:

  • Vooraf filteren — filter toepassen en DAARNA zoeken (correct, maar mogelijk traag zonder geïndexeerde metagegevens)
  • Achteraf filteren — zoeken en daarna niet-overeenkomende resultaten verwijderen (snel, maar kan nul resultaten opleveren)

Productiesystemen filteren vooraf met de juiste indexen voor metagegevens.

Hybride vector- en trefwoordzoekopdracht

Combineer semantisch zoeken met klassieke BM25-trefwoordzoekopdrachten. Voer beide uit en combineer de scores (reciprocal-rankfusie is de standaard):

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])

Multitenancy

In SaaS moet ELKE query op tenant_id filteren. Zet dit vast in je wrapper voor het ophalen, zodat je het niet kunt vergeten:

def search(query, tenant_id, top_k=5):
    return index.query(
        vector=embed(query),
        top_k=top_k,
        filter={'tenant_id': tenant_id}
    )

Toegangsbeheer via metagegevens

Sla gebruikers- en rolmachtigingen op in metagegevens:

metadata = {
    'visibility': 'public',         # or 'internal', 'restricted'
    'department': 'engineering',
    'allowed_roles': ['engineer', 'manager']
}

# At query time:
filter = {'allowed_roles': {'$contains': current_user_role}}

Voorrang voor recente documenten

Als je de voorkeur wilt geven aan nieuwere documenten, haal je meer kandidaten op en geef je ze daarna opnieuw een score op basis van recentheid:

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]

Let op de cardinaliteit van metagegevens

Metagegevens met een hoge cardinaliteit (miljoenen unieke waarden) maken indexen enorm groot. Aggregeer vooraf waar mogelijk — sla bijvoorbeeld jaar-maand op in plaats van een volledige tijdstempel voor filteren op tijd.

Altijd actief filter

Welk filter moet elke agent met meerdere tenants ALTIJD opnemen?

Samenvatting

Metagegevensfilters beperken je zoekopdracht. Combineer ze met hybride zoekopdrachten (vectoren + BM25) voor de beste resultaten. Multitenancy en toegangsbeheer zijn hiervan afhankelijk.

Gratis beginnen

Leer AI-agenten met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
60
Lessen
239

Veelgestelde vragen

Is de les “Metadat filtering voor hybride zoeken” gratis?

Ja — de volledige tekst van “Metadat filtering voor hybride zoeken” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-agenten wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-agenten bevat in totaal 4 lessen.

Wat leer ik in “Metadat filtering voor hybride zoeken”?

Combineer vectorsimilariteit met gestructureerde filters (datum, auteur, tag) voor precieze, contextuele retrieval. Je oefent met AI-agenten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met AI-agenten te beginnen?

Ervaring vooraf is niet nodig. AI-agenten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Metadat filtering voor hybride zoeken”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over AI-agenten?

Ja. Elke les over AI-agenten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Pinecone, Weaviate, Qdrant: vergelijking
  2. Metadat filtering voor hybride zoeken
  3. Vectoren bijwerken en verwijderen
  4. Afstandsmetriek kiezen (cosinus, L2, dot)
← Terug naar AI-agenten