Vectordatabases: Pinecone, Weaviate en pgvector · Les

Updates en verwijderingen in realtime

Leer technieken voor het verwerken van dynamische data, waaronder efficiënte realtime-updates en het verwijderen van vectoren.

Les 3 van 412 stappen

Updates en verwijderingen in realtime is een gratis Vectordatabases: Pinecone, Weaviate en pgvector-les op CoddyKit. Dit is les 3 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.

Dynamische vect gegevens beheren

In toepassingen uit de echte wereld zijn gegevens niet statisch. Ze veranderen voortdurend! Dat betekent dat ook de vectoren die je gegevens vertegenwoordigen moeten worden bijgewerkt of verwijderd uit je vectordatabase.

Denk bijvoorbeeld aan een productcatalogus waarin prijzen veranderen of gebruikersprofielen waarin voorkeuren zich ontwikkelen. Je vectordatabase moet deze veranderingen weerspiegelen om accuraat te blijven.

Waarom realtime veranderingen belangrijk zijn

Realtime updates en verwijderingen zijn essentieel om de integriteit en relevantie van je toepassingen te behouden:

  • Nauwkeurigheid: ervoor zorgen dat je zoekresultaten altijd op de meest actuele gegevens zijn gebaseerd.
  • Relevantie: aanbevelingen en contextuele informatie actueel houden voor gebruikers.
  • Gegevensbeheer: voldoen aan bewaarbeleid voor gegevens of verzoeken van gebruikers om persoonlijke gegevens te verwijderen (bijvoorbeeld het 'recht om vergeten te worden').

Volledige updates van vectoren en metadata

Om de embeddingwaarden van een bestaande vector en de bijbehorende metadata in Pinecone volledig te vervangen, gebruik je de methode upsert().

Als er al een vector met dezelfde ID in je index bestaat, overschrijft upsert() de bestaande vectorwaarden en metadata met de nieuwe waarden die je opgeeft. Als er geen vector met die ID bestaat, wordt deze als een nieuwe vermelding ingevoegd.

Voorbeeld: een vector vervangen

Als de beschrijving van een product aanzienlijk verandert, moet de embedding mogelijk volledig worden vervangen. We gebruiken upsert() met de bestaande ID om zowel de vector als de metadata bij te werken.

from pinecone import Pinecone, Index
import os

# For this example, we'll use a mock class instead of actual Pinecone connection
# In a real app, replace with: 
# pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"), environment=os.environ.get("PINECONE_ENVIRONMENT"))
# index = pc.Index("your-index-name")

class MockPineconeIndex:
    def upsert(self, vectors):
        print(f"Upserting vectors: {vectors}")

index = MockPineconeIndex() 

# Assume 'product-123' already exists with an old vector and metadata
print("--- Before Update (Conceptual) ---")
print("Vector 'product-123' has old values and metadata.")

# New vector values and metadata for 'product-123'
new_vector_values = [0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2] # Example 8-dim vector
new_metadata = {"category": "electronics", "price": 129.99, "status": "updated"}

# Use upsert to fully replace the vector and metadata for 'product-123'
index.upsert(
    vectors=[
        {"id": "product-123", "values": new_vector_values, "metadata": new_metadata}
    ]
)

print("\n--- After Update (Conceptual) ---")
print("Vector 'product-123' now has new values and metadata, replacing old ones.")

Gedeeltelijke updates met `update()`

Soms hoef je alleen de metadata van een vector te wijzigen, of juist alleen de vectorwaarden zonder de metadata aan te passen. Pinecone biedt hiervoor de methode update() voor gedeeltelijke wijzigingen.

update() is efficiënter dan upsert() als je slechts gedeeltelijke wijzigingen hebt, omdat je alleen de gewijzigde gegevens verstuurt in plaats van de volledige vermelding te vervangen.

Voorbeeld: alleen metadata bijwerken

Om alleen de metadata van een bestaande vector bij te werken, gebruik je de methode update(). Je geeft de ID van de vector en de parameter set_metadata met de nieuwe metadata op. De bestaande vectorwaarden blijven ongewijzigd.

from pinecone import Pinecone, Index
import os

# Mock class for Pinecone's update method
class MockPineconeIndexUpdate:
    def update(self, id, values=None, set_metadata=None):
        print(f"Updating vector ID: {id}")
        if values: print(f"  New values provided (vector will be replaced): {values}")
        if set_metadata: print(f"  Setting metadata: {set_metadata}")

index_update = MockPineconeIndexUpdate() # Replace with pc.Index("your-index-name")

# Assume 'product-456' exists with vector and metadata like {'stock': 10, 'color': 'blue'}
print("--- Before Metadata Update (Conceptual) ---")
print("Vector 'product-456' has existing metadata.")

# Update only the stock count for 'product-456'
updated_metadata = {"stock": 5, "last_checked": "2023-10-27"}

index_update.update(id="product-456", set_metadata=updated_metadata)

print("\n--- After Metadata Update (Conceptual) ---")
print("Vector 'product-456' now has updated stock and last_checked metadata. Other metadata and vector values are unchanged.")

Vectoren verwijderen in Pinecone

Vectoren uit je Pinecone-index verwijderen is een veelgebruikte bewerking. Pinecone biedt flexibele manieren om vectoren te verwijderen:

  • Op basis van één of meer specifieke ID's.
  • Op basis van een overeenkomend metadatafilter.
  • Alle vectoren binnen een index of een specifieke namespace verwijderen.

Deze functionaliteit is essentieel voor het opschonen van gegevens, het beheren van verouderde informatie en het naleven van privacyregelgeving.

Voorbeeld: één vector verwijderen

De eenvoudigste manier om een vector te verwijderen is op basis van de unieke ID. Je geeft een lijst met een of meer ID's door aan de methode delete().

from pinecone import Pinecone, Index
import os

# Mock class for Pinecone's delete method
class MockPineconeIndexDelete:
    def delete(self, ids=None, delete_all=False, filter=None):
        if ids: print(f"Deleting vectors with IDs: {ids}")
        elif delete_all: print("Deleting all vectors.")
        elif filter: print(f"Deleting vectors with filter: {filter}")

index_delete = MockPineconeIndexDelete() # Replace with pc.Index("your-index-name")

# Assume 'user-profile-789' exists in the index
print("--- Before Deletion (Conceptual) ---")
print("Vector 'user-profile-789' is present.")

# Delete a single vector by its ID
index_delete.delete(ids=["user-profile-789"])

print("\n--- After Deletion (Conceptual) ---")
print("Vector 'user-profile-789' has been removed from the index.")

Veel vectoren verwijderen met een filter

Je kunt meerdere vectoren verwijderen door een lijst met ID's op te geven, maar een krachtige functie is het verwijderen van vectoren op basis van een metadatafilter.

Zo kun je efficiënt alle vectoren verwijderen die aan specifieke metadatacriteria voldoen, zoals alle producten uit een bepaalde categorie of alle inactieve gebruikersprofielen, zonder hun afzonderlijke ID's te kennen.

Voorbeeld: verwijderen met filters

Stel dat we alle vectoren willen verwijderen die horen bij producten met de status 'out_of_stock'. We kunnen hiervoor een filterobject gebruiken binnen de methode delete().

from pinecone import Pinecone, Index
import os

# Mock class for Pinecone's delete method
class MockPineconeIndexDelete:
    def delete(self, ids=None, delete_all=False, filter=None):
        if ids: print(f"Deleting vectors with IDs: {ids}")
        elif delete_all: print("Deleting all vectors.")
        elif filter: print(f"Deleting vectors with filter: {filter}")

index_delete = MockPineconeIndexDelete() # Replace with pc.Index("your-index-name")

# Assume several products exist, some with 'status': 'out_of_stock'
print("--- Before Filtered Deletion (Conceptual) ---")
print("Vectors for products with status 'out_of_stock' are present.")

# Delete all vectors where the 'status' metadata is 'out_of_stock'
index_delete.delete(filter={
    "status": "out_of_stock"
})

print("\n--- After Filtered Deletion (Conceptual) ---")
print("All vectors for 'out_of_stock' products have been removed.")

Controleer je begrip

Welke van de volgende uitspraken over het bijwerken en verwijderen van vectoren in Pinecone zijn WAAR?

Samenvatting en volgende stappen

Goed gedaan! Je hebt geleerd hoe je je Pinecone-index dynamisch en actueel houdt.

  • We hebben bekeken hoe upsert() vectoren en metadata volledig vervangt.
  • Je hebt gezien hoe de methode update() wordt gebruikt voor efficiënte gedeeltelijke wijzigingen, vooral voor metadata.
  • Tot slot hebben we verschillende manieren behandeld om vectoren te verwijderen, onder andere op basis van ID en met krachtige metadatafilters.

Deze bewerkingen zijn essentieel voor het beheren van gegevensverzamelingen die veranderen in AI-toepassingen uit de echte wereld.

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 “Updates en verwijderingen in realtime” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Vectordatabases: Pinecone, Weaviate en pgvector, waaronder “Updates en verwijderingen in realtime”, 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 “Updates en verwijderingen in realtime”?

Leer technieken voor het verwerken van dynamische data, waaronder efficiënte realtime-updates en het verwijderen van vectoren. 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 3 van 4.

Hoe lang duurt de les “Updates en verwijderingen in realtime”?

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