벡터 업데이트 및 삭제
소스와 인덱스를 동기화해보세요. 문서가 바뀌면 업서트하고, 삭제되면 제거하며, 재임베딩도 처리합니다.
벡터 업데이트 및 삭제은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
색인은 고정되어 있지 않습니다
실제 문서는 변경됩니다. 색인은 이를 따라가야 합니다:
- 새 문서 추가
- 기존 문서 편집
- 오래된 문서 삭제 또는 보관
upsert(삽입 또는 업데이트)
대부분의 벡터 데이터베이스는 upsert를 지원합니다. 지정한 ID와 함께 벡터를 기록하고, 기존 벡터가 있으면 이를 교체합니다:
index.upsert([
('doc-42', new_vector, {'source': 'a.pdf', 'updated_at': now})
])
# If doc-42 already exists, it is overwritten.결정적 ID
콘텐츠 해시 ID를 사용하면 "업데이트"가 자동으로 처리됩니다. 같은 콘텐츠 = 같은 ID = 같은 저장 위치가 되기 때문입니다.
UUID를 사용한다면 어느 UUID가 어느 원본 문서에 속하는지 추적해야 합니다.
변경 감지
말뭉치의 차이를 확인하려면 모든 청크의 해시를 저장하십시오:
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필터로 삭제하기
대부분의 데이터베이스는 필터를 사용한 삭제를 지원하며, "이 소스의 모든 항목을 delete"할 때 유용합니다:
index.delete(filter={'source': '/old/file.pdf'})Delete by ID
index.delete(ids=['doc-1', 'doc-2', 'doc-3'])소프트 삭제
때로는 항목을 제거하지 않고 "숨기고" 싶을 수 있습니다. 삭제 시각 플래그를 설정하고 query 시점에 해당 항목을 필터링하십시오:
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}})압축
빈번한 삭제로 색인이 성기게 됩니다. 성능을 위해 주기적으로 재구축하십시오. 대부분의 데이터베이스가 이를 자동으로 처리하지만, 사용 중인 제공업체의 문서를 확인하십시오.
모델 변경 시 임베딩 재생성
임베딩 모델을 업그레이드하면 기존의 모든 벡터를 더 이상 사용할 수 없게 됩니다. 다음과 같은 전략을 사용할 수 있습니다:
- 마이그레이션 중 기존 컬렉션과 새 컬렉션에 동시에 기록
- 완료되면 읽기 트래픽을 새 컬렉션으로 전환
- 기존 컬렉션 삭제
증분 처리 파이프라인
견고한 데이터 수집 파이프라인은 다음과 같습니다:
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])변경 추적 감사
주기적으로 색인이 신뢰할 수 있는 원본과 일치하는지 확인하십시오. 데이터베이스와 벡터 색인에서 소스별 행 수를 세고, 불일치가 발생하면 알리십시오.
웹훅 기반 업데이트
문서 관리 시스템(노션, 컨플루언스, 구글 드라이브)의 경우 웹훅을 사용해 변경 시 증분 동기화를 시작하십시오. 모든 문서를 다시 크롤링하는 것보다 훨씬 저렴합니다.
분산 삭제를 위한 삭제 표식
분산 색인에서 "삭제"는 삭제 표식을 기록하는 방식으로 처리되는 경우가 많습니다. 압축이 실행될 때까지 검색에서 삭제 표식이 계속 보일 수 있으므로 필터를 그대로 유지하십시오.
멱등성 있는 업데이트
데이터 수집을 다시 실행해도 안전하게 만드는 가장 쉬운 방법은 무엇입니까?
복습
첫날부터 업데이트를 계획하십시오. 해시 기반 ID, 차이 기반 데이터 수집, 그리고 중단 없이 임베딩 모델을 교체할 수 있는 경로를 마련해야 합니다.
자주 묻는 질문
“벡터 업데이트 및 삭제” 강의는 무료인가요?
네 — “벡터 업데이트 및 삭제” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
“벡터 업데이트 및 삭제”에서 뭘 배우나요?
소스와 인덱스를 동기화해보세요. 문서가 바뀌면 업서트하고, 삭제되면 제거하며, 재임베딩도 처리합니다. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Agents을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“벡터 업데이트 및 삭제” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.