데이터 업데이트

데이터 업데이트 (edge-edge-api-updating-data)

Edge Shard에 대한 모든 쓰기 작업은 단 하나의 메서드 update 를 통해 이루어져요. update는 무엇을 바꿀지 설명하는 UpdateOperation 하나를 받아요. 이 연산은 저장소에 적용되기 전에 write-ahead log에 먼저 기록돼요. 그래서 반환이 완료된 업데이트는 크래시가 나도 유실되지 않아요.

출처: Qdrant 공식 문서 — edge/edge-api/updating-data

def update(self, operation: UpdateOperation) -> None
fn update(&self, operation: UpdateOperation) -> OperationResult<()>
파라미터 설명
operation 적용할 연산

Python에서는 아무것도 반환하지 않고, Rust에서는 성공 시 Ok(())를 반환해요. 이미 존재하는 명명된 벡터(named vector)를 다른 파라미터로 다시 만들면 실패해요.

업데이트 연산 (Update Operations)

Python에서 UpdateOperation은 연산마다 하나씩 정적 생성자(static constructor) 를 가진 클래스예요. 각각은 update에 넘길 UpdateOperation을 반환해요.

연산 파라미터 설명
upsert_points points, condition, update_mode 포인트 삽입 또는 업데이트
delete_points point_ids ID로 포인트 삭제
delete_points_by_filter filter 필터와 일치하는 모든 포인트 삭제
update_vectors point_vectors, condition 기존 포인트의 벡터 교체
delete_vectors point_ids, vector_names 포인트에서 명명된 벡터 삭제
delete_vectors_by_filter filter, vector_names 일치하는 포인트에서 명명된 벡터 삭제
set_payload point_ids, payload, key 페이로드 필드를 포인트에 병합
set_payload_by_filter filter, payload, key 일치하는 포인트에 페이로드 필드 병합
overwrite_payload point_ids, payload, key 포인트의 전체 페이로드 교체
overwrite_payload_by_filter filter, payload, key 일치하는 포인트의 전체 페이로드 교체
delete_payload point_ids, keys 포인트에서 명명된 페이로드 필드 삭제
delete_payload_by_filter filter, keys 일치하는 포인트에서 명명된 페이로드 필드 삭제
clear_payload point_ids 포인트의 모든 페이로드 삭제
clear_payload_by_filter filter 일치하는 포인트의 모든 페이로드 삭제

페이로드 인덱스 (Payload Indexes)

update 연산으로 페이로드 인덱스를 만들고 삭제할 수도 있어요.

연산 파라미터 설명
create_field_index field_name, schema 페이로드 필드 인덱싱
delete_field_index field_name 페이로드 필드 인덱스 제거

벡터 스키마 수정 (Modify the Vector Schema)

기존 Edge Shard의 스키마에 명명된 벡터를 추가하거나 제거할 수 있어요. 새 임베딩 모델로 마이그레이션하거나, 데이터가 이미 있는 Edge Shard에 하이브리드 검색을 추가할 때 유용해요.

연산 파라미터 설명
create_dense_vector vector_name, size, distance, multivector_config, datatype 스키마에 dense 명명 벡터 추가
create_sparse_vector vector_name, modifier, datatype 스키마에 sparse 명명 벡터 추가
delete_vector_name vector_name 스키마에서 명명된 벡터 제거

파라미터 유의사항 (Parameters)

페이로드 연산의 key 파라미터는 페이로드 루트가 아니라 중첩된 필드 경로를 대상으로 해요.

condition 파라미터는 필터로 쓰기 작업을 제한하는데, 두 연산에서 동작이 달라요.

  • update_vectors에서는 연산 전체에 적용돼요. 필터와 일치하는 포인트만 업데이트돼요.
  • upsert_points에서는 이미 존재하는 포인트에만 적용돼요. 그래서 필터를 통과하지 못한 기존 포인트는 그대로 두고, 새로 등장하는 포인트는 어떻게 동작하는지 문서에서 이어서 확인할 수 있어요.

더 알아보기 (Learn more)