0Pricing
AI Agents · Lekcja

Aktualizowanie i usuwanie wektorów

Utrzymuj zgodność indeksu ze źródłem: wykonuj upsert po zmianie dokumentu, usuwaj wektor po jego usunięciu i obsługuj ponowne tworzenie embeddingów.

Aktualizowanie i usuwanie wektorów to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

Indeks nie jest niezmienny

Rzeczywiste dokumenty się zmieniają. Indeks musi za nimi nadążać:

  • Dodawane są nowe dokumenty
  • Istniejące dokumenty są edytowane
  • Stare dokumenty są usuwane lub archiwizowane

Upsert (wstawianie lub aktualizacja)

Większość wektorowych baz danych obsługuje operację upsert — zapisuje wektor z określonym identyfikatorem, zastępując poprzedni, jeśli już istnieje:

index.upsert([
    ('doc-42', new_vector, {'source': 'a.pdf', 'updated_at': now})
])
# If doc-42 already exists, it is overwritten.

Deterministyczne identyfikatory

Jeśli używają Państwo identyfikatorów opartych na haszu treści, „aktualizacja” zachodzi automatycznie — ta sama treść = ten sam identyfikator = to samo miejsce.

Jeśli używają Państwo UUID, muszą Państwo śledzić, który UUID należy do którego dokumentu źródłowego.

Wykrywanie zmian

Aby porównać korpus, należy przechowywać hasz każdego fragmentu:

old_chunks = load_existing_chunks(source)
new_chunks = chunk_doc(source)

old_hashes = {c.id for c in old_chunks}
new_hashes = {c.id for c in new_chunks}

to_delete = old_hashes - new_hashes
to_add = new_hashes - old_hashes
# Skip unchanged — saves re-embedding

Usuwanie według filtra

Większość baz danych obsługuje usuwanie według filtra, co jest przydatne przy operacji „usuń wszystko z tego źródła”:

index.delete(filter={'source': '/old/file.pdf'})

Delete by ID

index.delete(ids=['doc-1', 'doc-2', 'doc-3'])

Usuwanie logiczne

Czasami chcą Państwo coś „ukryć” bez usuwania — należy ustawić flagę deleted_at i odfiltrować ten element podczas wykonywania zapytania:

index.upsert([('doc-42', vec, {'deleted_at': now})])

# At query time:
results = index.query(vector=query_vec, top_k=5, filter={'deleted_at': {'$exists': False}})

Kompaktowanie

Częste usuwanie pozostawia indeks rzadki. Należy okresowo go przebudowywać w celu zachowania wydajności — większość baz danych robi to automatycznie; warto sprawdzić dokumentację dostawcy.

Ponowne tworzenie embeddingów po zmianie modelu

Po aktualizacji modelu embeddingów każdy istniejący wektor staje się niezgodny. Możliwe strategie:

  1. Podwójny zapis do starych i nowych kolekcji podczas migracji
  2. Przełączenie ruchu odczytu na nową kolekcję po zakończeniu migracji
  3. Usunięcie starej kolekcji

Pipeline przyrostowy

Solidny pipeline ingestii:

def sync_doc(source_path):
    new_chunks = chunk_and_hash(load(source_path))
    existing_ids = index.fetch_ids_by_source(source_path)

    new_ids = {c.id for c in new_chunks}
    to_add = [c for c in new_chunks if c.id not in existing_ids]
    to_remove = existing_ids - new_ids

    if to_remove:
        index.delete(ids=list(to_remove))
    if to_add:
        index.upsert([(c.id, embed(c.text), c.metadata) for c in to_add])

Audytowanie rozbieżności

Należy okresowo sprawdzać, czy indeks jest zgodny ze źródłem prawdy. Należy policzyć wiersze dla każdego źródła zarówno w bazie danych, jak i w indeksie wektorowym, a następnie zgłaszać alerty w przypadku niezgodności.

Aktualizacje sterowane webhookami

W przypadku systemów zarządzania dokumentami (Notion, Confluence, GDrive) należy używać webhooków do uruchamiania przyrostowej synchronizacji po zmianie — jest to znacznie tańsze niż ponowne przeszukiwanie wszystkiego.

Znaczniki usunięcia w rozproszonych indeksach

W rozproszonych indeksach operacja „usunięcia” często zapisuje znacznik usunięcia. Do czasu wykonania kompaktowania zapytania mogą nadal widzieć ten znacznik — należy pozostawić filtry na swoim miejscu.

Idempotentne aktualizacje

Jaki jest najprostszy sposób na zapewnienie bezpieczeństwa ponownego uruchamiania ingestii?

Podsumowanie

Od pierwszego dnia należy uwzględnić aktualizacje: identyfikatory oparte na haszach, ingestia oparta na porównywaniu zmian oraz możliwość wymiany modeli embeddingów bez przestoju.

Często zadawane pytania

Czy lekcja „Aktualizowanie i usuwanie wektorów” jest bezpłatna?

Tak — pełny tekst „Aktualizowanie i usuwanie wektorów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.

Co nauczysz się w „Aktualizowanie i usuwanie wektorów”?

Utrzymuj zgodność indeksu ze źródłem: wykonuj upsert po zmianie dokumentu, usuwaj wektor po jego usunięciu i obsługuj ponowne tworzenie embeddingów. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Agents?

Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Aktualizowanie i usuwanie wektorów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?

Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pinecone, Weaviate, Qdrant: porównanie
  2. Filtrowanie metadanych w wyszukiwaniu hybrydowym
  3. Aktualizowanie i usuwanie wektorów
  4. Wybór miar odległości (cosinusowa, L2, iloczyn skalarny)
← Powrót do AI Agents