Vectordatabases: Pinecone, Weaviate en pgvector · Les

Filteren met metadata

Gebruik metadata om uw zoekopdrachten op basis van overeenkomst te verfijnen en voeg contextuele beperkingen toe aan uw queries.

Les 1 van 412 stappen

Filteren met metadata is een gratis Vectordatabases: Pinecone, Weaviate en pgvector-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Vectordatabases: Pinecone, Weaviate en pgvector. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Vectordatabases: Pinecone, Weaviate en pgvector bevat in totaal 4 lessen.

Je vectorzoekopdrachten filteren

Stel je voor dat je naar producten zoekt, maar alleen "elektronica" wilt die "minder dan €50" kost. Daar komt filtering op metagegevens goed van pas!

Met vectordatabases kun je extra informatie, ook wel metagegevens genoemd, naast je vectoren opslaan. In deze les leer je hoe je deze metagegevens gebruikt om je zoekopdrachten naar overeenkomsten in Pinecone te verfijnen.

Metagegevens begrijpen

Metagegevens zijn eenvoudig gezegd "gegevens over gegevens". In Pinecone gaat het om een set sleutel-waardeparen die aan elke vector is gekoppeld.

  • Sleutel: een tekenreeks die een eigenschap vertegenwoordigt, bijvoorbeeld "category", "price" of "author".
  • Waarde: kan een tekenreeks, getal, Booleaanse waarde of zelfs een lijst met tekenreeksen of getallen zijn.

Metagegevens helpen het item te beschrijven dat je vector vertegenwoordigt.

Waarom zoekopdrachten filteren?

Filteren is essentieel om nauwkeurigere en relevantere zoekresultaten te krijgen.

  • Nauwkeurigheid: beperk de resultaten tot wat relevant is, bijvoorbeeld "rode schoenen".
  • Context: voeg specifieke voorwaarden toe naast alleen vectorovereenkomst, bijvoorbeeld "artikelen die vorig jaar zijn gepubliceerd".
  • Efficiëntie: beperk het aantal vectoren dat wordt bekeken. Hierdoor kunnen zoekopdrachten in grote gegevensverzamelingen sneller worden.

Metagegevens aan vectoren toevoegen

Wanneer je vectoren aan Pinecone toevoegt, of ze "upsert", kun je een woordenboek metadata opnemen. Daardoor kun je later in deze extra gegevens zoeken.

In een vorige les heb je geleerd hoe je gegevens upsert. Hier volgt een korte herinnering aan de manier waarop metagegevens worden gekoppeld:

from pinecone import Pinecone, Index
import os

# Assume Pinecone is initialized (replace with your actual setup)
# pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"))
# index = pc.Index("my-index")

# Example vector with metadata
vectors_to_upsert = [
    {
        "id": "item1",
        "values": [0.1, 0.2, 0.3], # Placeholder vector
        "metadata": {"genre": "fiction", "year": 2023, "price": 19.99}
    },
    {
        "id": "item2",
        "values": [0.4, 0.5, 0.6],
        "metadata": {"genre": "non-fiction", "year": 2022, "price": 25.50}
    }
]

# index.upsert(vectors=vectors_to_upsert) # Uncomment to actually upsert
print("Metadata structure for upserting shown.")

Filteren op exacte overeenkomsten

De eenvoudigste manier om te filteren is zoeken naar exacte overeenkomsten in een metadataveld. Je geeft de veldnaam en de gewenste waarde op.

Als je bijvoorbeeld alle items met "genre": "fiction" wilt vinden, gebruik je {"genre": "fiction"} in de parameter filter van je query.

from pinecone import Pinecone, Index
import os

# Assume index is already set up and has data
# pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"))
# index = pc.Index("my-index")

# Query for items where genre is exactly 'fiction'
query_vector = [0.1, 0.2, 0.3] # Your query embedding

# results = index.query(
#     vector=query_vector,
#     top_k=3,
#     filter={"genre": "fiction"}
# )

print("Querying with filter: {'genre': 'fiction'}")
# print(results) # Uncomment to see results

Filteren op bereiken

Je kunt ook filteren op numerieke bereiken met speciale Pinecone-operatoren. Die zijn handig voor waarden zoals prijzen, datums of beoordelingen.

  • $gt: groter dan
  • $gte: groter dan of gelijk aan
  • $lt: kleiner dan
  • $lte: kleiner dan of gelijk aan

Zo vindt {"price": {"$lt": 20.0}} bijvoorbeeld items die minder dan $20 kosten.

from pinecone import Pinecone, Index
import os

# Assume index with 'price' metadata
# pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"))
# index = pc.Index("my-index")

query_vector = [0.1, 0.2, 0.3]

# Find items published after 2022
# results = index.query(
#     vector=query_vector,
#     top_k=5,
#     filter={"year": {"$gt": 2022}}
# )

print("Querying with filter: {'year': {'$gt': 2022}}")
# print(results) # Uncomment to see results

Filteren met lijsten

Soms moet je filteren op basis van de vraag of een waarde wel of niet voorkomt in een lijst met opties. Pinecone biedt hiervoor de operatoren $in en $nin.

  • $in: de waarde is een van de opgegeven opties.
  • $nin: de waarde is GEEN van de opgegeven opties.

Voorbeeld: {"category": {"$in": ["electronics", "clothing"]}}

from pinecone import Pinecone, Index
import os

# Assume index with 'tag' metadata
# pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"))
# index = pc.Index("my-index")

query_vector = [0.1, 0.2, 0.3]

# Find items belonging to 'fiction' OR 'poetry'
# results = index.query(
#     vector=query_vector,
#     top_k=5,
#     filter={"genre": {"$in": ["fiction", "poetry"]}}
# )

print("Querying with filter: {'genre': {'$in': ['fiction', 'poetry']}}")
# print(results) # Uncomment to see results

Filtervoorwaarden combineren

Je kunt meerdere filtervoorwaarden combineren om complexe queries te maken. Standaard worden meerdere voorwaarden op hetzelfde niveau behandeld als een AND-bewerking.

Voor expliciete OR-bewerkingen gebruik je de operator $or. Als je bijvoorbeeld items wilt vinden met category="books" AND price < 20:

from pinecone import Pinecone, Index
import os

# Assume index with 'category' and 'price' metadata
# pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"))
# index = pc.Index("my-index")

query_vector = [0.1, 0.2, 0.3]

# Find books cheaper than $20 (AND operation)
# results = index.query(
#     vector=query_vector,
#     top_k=5,
#     filter={"category": "books", "price": {"$lt": 20.0}}
# )

print("Querying with filter: {'category': 'books', 'price': {'$lt': 20.0}}")
# print(results) # Uncomment to see results

$or gebruiken voor flexibele filters

Voor een OR-zoekopdracht gebruik je de operator $or. Deze operator neemt een lijst met filtervoorwaarden en neemt het item op als een van die voorwaarden waar is.

Voorbeeld: vind items waarbij category="electronics" OR category="home goods":

from pinecone import Pinecone, Index
import os

# Assume index with 'category' metadata
# pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"))
# index = pc.Index("my-index")

query_vector = [0.1, 0.2, 0.3]

# Find items where category is 'electronics' OR 'home goods'
# results = index.query(
#     vector=query_vector,
#     top_k=5,
#     filter={
#         "$or": [
#             {"category": "electronics"},
#             {"category": "home goods"}
#         ]
#     }
# )

print("Querying with $or filter...")
# print(results) # Uncomment to see results

Geavanceerde gecombineerde filters

Je kunt $and-operatoren (impliciet of expliciet) en $or-operatoren combineren voor zeer krachtige en specifieke filters. Zo kun je complexe zoeklogica opbouwen.

Als je bijvoorbeeld items wilt vinden die "fiction" zijn EN ("published after 2020" OF "price under $15"):

from pinecone import Pinecone, Index
import os

# Assume index with 'genre', 'year', 'price' metadata
# pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"))
# index = pc.Index("my-index")

query_vector = [0.1, 0.2, 0.3]

# Complex filter: fiction AND (year > 2020 OR price < 15)
# results = index.query(
#     vector=query_vector,
#     top_k=5,
#     filter={
#         "genre": "fiction",
#         "$or": [
#             {"year": {"$gt": 2020}},
#             {"price": {"$lt": 15.0}}
#         ]
#     }
# )

print("Querying with complex AND/OR filter...")
# print(results) # Uncomment to see results

Test je kennis van filteren

Welk Pinecone-filter gebruik je om items te vinden die ofwel in de categorie "books" vallen of een "rating" van minstens 4.5 hebben?

Samenvatting: metadat filters beheersen

Goed gedaan! Je hebt geleerd hoe je metadata kunt gebruiken om je overeenkomstzoekopdrachten in Pinecone aanzienlijk te verbeteren.

  • Metadata: sleutel-waardeparen die samen met je vectoren worden opgeslagen.
  • Filtertypen: gelijkheid, bereik ($gt, $lt, enzovoort) en lijst ($in, $nin).
  • Filters combineren: gebruik impliciete AND of expliciete $or voor complexe logica.

Vervolgens bekijken we hoe je je gegevens verder kunt organiseren met namespaces van Pinecone.

Gratis beginnen

Leer Vectordatabases: Pinecone, Weaviate en pgvector 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
12
Lessen
48

Veelgestelde vragen

Is de les “Filteren met metadata” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Vectordatabases: Pinecone, Weaviate en pgvector, waaronder “Filteren met metadata”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Vectordatabases: Pinecone, Weaviate en pgvector bevat in totaal 4 lessen.

Wat leer ik in “Filteren met metadata”?

Gebruik metadata om uw zoekopdrachten op basis van overeenkomst te verfijnen en voeg contextuele beperkingen toe aan uw queries. Je oefent met Vectordatabases: Pinecone, Weaviate en pgvector 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 Vectordatabases: Pinecone, Weaviate en pgvector te beginnen?

Ervaring vooraf is niet nodig. Vectordatabases: Pinecone, Weaviate en pgvector 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 1 van 4.

Hoe lang duurt de les “Filteren met metadata”?

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 Vectordatabases: Pinecone, Weaviate en pgvector?

Ja. Elke les over Vectordatabases: Pinecone, Weaviate en pgvector 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. Filteren met metadata
  2. Namespaces beheren
  3. Updates en verwijderingen in realtime
  4. Hybrid search met sparse-dense vectors
← Terug naar Vectordatabases: Pinecone, Weaviate en pgvector