데이터 업데이트
데이터 업데이트 (edge-edge-api-updating-data)
Edge Shard에 대한 모든 쓰기 작업은 단 하나의 메서드 update 를 통해 이루어져요. update는 무엇을 바꿀지 설명하는 UpdateOperation 하나를 받아요. 이 연산은 저장소에 적용되기 전에 write-ahead log에 먼저 기록돼요. 그래서 반환이 완료된 업데이트는 크래시가 나도 유실되지 않아요.
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)
- Edge API — EdgeShard 메서드 전체 레퍼런스
- 데이터 읽기 (Reading Data) — 읽기 작업
- Edge Quickstart — 시작하기