Vektoritietokannat: Pinecone, Weaviate ja pgvector · Oppitunti

Reaaliaikaiset päivitykset ja poistot

Oppikaa käsittelemään muuttuvaa dataa, mukaan lukien vektorien tehokkaat reaaliaikaiset päivitykset ja poistot.

Oppitunti 3/412 vaihetta

Reaaliaikaiset päivitykset ja poistot on ilmainen Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Vektoritietokannat: Pinecone, Weaviate ja pgvector-kurssilla on yhteensä 4 oppituntia.

Muuttuvien vektoritietojen käsittely

Reaalimaailman sovelluksissa tiedot eivät ole staattisia. Ne muuttuvat jatkuvasti! Siksi myös tietojasi edustavia vektoreita on päivitettävä tai poistettava vektoritietokannasta.

Ajattele tuoteluetteloa, jossa hinnat muuttuvat, tai käyttäjäprofiileja, joiden mieltymykset kehittyvät. Vektoritietokannan on heijastettava näitä muutoksia, jotta se pysyy täsmällisenä.

Miksi reaaliaikaiset muutokset ovat tärkeitä?

Reaaliaikaiset päivitykset ja poistot ovat välttämättömiä sovellustesi eheyden ja ajantasaisuuden ylläpitämiseksi:

  • Täsmällisyys: hakutulokset perustuvat aina tuoreimpiin tietoihin.
  • Osuvuus: suositukset ja käyttäjille näytettävät asiayhteystiedot pysyvät ajan tasalla.
  • Tietojen hallinta: tietojen säilytyskäytäntöjen ja käyttäjien henkilötietojen poistopyyntöjen noudattaminen (esimerkiksi ”oikeus tulla unohdetuksi”).

Vektorien ja metadatan täydelliset päivitykset

Jos haluat korvata Pineconessa kokonaan vektorin embedding-arvot ja siihen liittyvän metadatan, käytä upsert()-metodia.

Jos indeksissä on jo vektori samalla tunnisteella, upsert() korvaa sen vektoriarvot ja metadatan antamillasi uusilla arvoilla. Jos tunnisteella ei ole vektoria, se lisätään uutena tietueena.

Esimerkki: vektorin korvaaminen

Jos tuotteen kuvaus muuttuu merkittävästi, sen embedding on ehkä korvattava kokonaan. Käytämme upsert()-metodia olemassa olevan tunnisteen kanssa, jolloin sekä vektori että sen metadata päivitetään.

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.")

Osittaiset päivitykset metodilla `update()`

Joskus haluat muuttaa vain vektorin metadataa tai ehkä pelkkiä vektoriarvoja koskematta metadataan. Pinecone tarjoaa tällaisia osittaisia muutoksia varten update()-metodin.

update()-metodin käyttö on tehokkaampaa kuin upsert()-metodin silloin, kun muutokset ovat osittaisia, koska lähetät vain muuttuneet tiedot koko tietueen korvaamisen sijaan.

Esimerkki: vain metadatan päivittäminen

Jos haluat päivittää olemassa olevan vektorin metadataa, käytä update()-metodia. Anna vektorin tunniste ja uusi metadata set_metadata-parametrilla. Vektorin nykyiset arvot säilyvät ennallaan.

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.")

Vektorien poistaminen Pineconessa

Vektorien poistaminen Pinecone-indeksistä on tavallinen toiminto. Pinecone tarjoaa joustavat tavat vektorien poistamiseen:

  • Yhden tai useamman tietyn tunnisteen perusteella.
  • Metadatasuodattimen täsmäytyksen perusteella.
  • Poistamalla kaikki vektorit indeksistä tai tietystä namespace-nimialueesta.

Tämä toiminnallisuus on tärkeää tietojen siisteyden ylläpitämisessä, vanhentuneiden tietojen hallinnassa ja tietosuojasäädösten noudattamisessa.

Esimerkki: yhden vektorin poistaminen

Yksinkertaisin tapa poistaa vektori on käyttää sen yksilöllistä tunnistetta. Välität yhden tai useamman tunnisteen sisältävän luettelon delete()-metodille.

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.")

Useiden vektorien poistaminen suodattimen avulla

Voit poistaa useita vektoreita antamalla luettelon tunnisteista, mutta tehokas vaihtoehto on poistaa vektoreita metadatasuodattimen perusteella.

Näin voit poistaa tehokkaasti kaikki tietyn metadatakriteerin täyttävät vektorit, kuten tietyn luokan kaikki tuotteet tai kaikki epäaktiiviset käyttäjäprofiilit, ilman että tiedät niiden yksittäisiä tunnisteita.

Esimerkki: poistaminen suodattimien avulla

Oletetaan, että haluamme poistaa kaikki tuotteisiin liittyvät vektorit, joiden tilaksi on merkitty 'out_of_stock'. Voimme käyttää suodatinobjektia delete()-metodissa.

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.")

Testaa ymmärryksesi

Mitkä seuraavista Pineconen vektorien päivittämistä ja poistamista koskevista väitteistä ovat TOSIA?

Kertaus ja seuraavat vaiheet

Hienoa työtä! Olet oppinut pitämään Pinecone-indeksisi dynaamisena ja ajan tasalla.

  • Tutustuimme siihen, miten upsert() korvaa vektorit ja metadatan kokonaan.
  • Näit, miten update()-metodia käytetään tehokkaisiin osittaisiin muutoksiin, erityisesti metadatan päivittämiseen.
  • Lopuksi käsittelimme erilaisia tapoja poistaa vektoreita, kuten tunnisteen perusteella ja tehokkaiden metadatasuodattimien avulla.

Nämä toiminnot ovat välttämättömiä muuttuvien aineistojen hallinnassa reaalimaailman tekoälysovelluksissa.

Aloita maksutta

Opi Vektoritietokannat: Pinecone, Weaviate ja pgvector tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Reaaliaikaiset päivitykset ja poistot” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolun 3 oppituntia, myös oppitunnin “Reaaliaikaiset päivitykset ja poistot”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Vektoritietokannat: Pinecone, Weaviate ja pgvector-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Reaaliaikaiset päivitykset ja poistot”?

Oppikaa käsittelemään muuttuvaa dataa, mukaan lukien vektorien tehokkaat reaaliaikaiset päivitykset ja poistot. Harjoittelet Vektoritietokannat: Pinecone, Weaviate ja pgvector-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Vektoritietokannat: Pinecone, Weaviate ja pgvector-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Reaaliaikaiset päivitykset ja poistot”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunnilla?

Kyllä. Jokainen Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Suodatus metatietojen avulla
  2. Nimiavaruuksien hallinta
  3. Reaaliaikaiset päivitykset ja poistot
  4. Hybridihaku harvoilla ja tiheillä vektoreilla
← Takaisin: Vektoritietokannat: Pinecone, Weaviate ja pgvector