Edge 구성
Edge 구성 (edge-edge-api-configuration)
EdgeConfig는 Edge 샤드(Edge Shard)가 저장하는 벡터와, 그것을 인덱싱·저장·검색하는 방식을 좌우하는 파라미터들을 설명해요. 새 샤드를 시작할 때 create / new에 전달하고, 기존 샤드를 다시 열 때는 선택적으로 load에도 전달할 수 있어요.
출처: Qdrant 공식 문서
EdgeConfig
EdgeConfig(
vectors: Optional[Union[EdgeVectorParams, Dict[str, EdgeVectorParams]]] = None,
sparse_vectors: Optional[Dict[str, EdgeSparseVectorParams]] = None,
on_disk_payload: Optional[bool] = None,
hnsw_config: Optional[HnswIndexConfig] = None,
quantization_config: Optional[QuantizationConfig] = None,
optimizers: Optional[OptimizerParameters] = None,
)
Rust에서 EdgeConfig는 필드를 직접 설정하거나, 플루언트(fluent) 방식의 EdgeConfig::builder()로 만들 수 있는 **구조체(struct)**예요.
let config = EdgeConfig::builder()
.vector("text", EdgeVectorParams::builder(384, Distance::Cosine).build())
.on_disk_payload(true)
.build();
| 파라미터 | 설명 |
|---|---|
vectors |
Dense 벡터 구성. Python에서는 단일 EdgeVectorParams가 기본 이름 없는(unnamed) 벡터를 구성해요. sparse_vectors가 주어지면 선택 사항이에요. |
on_disk_payload |
payload를 빠른 접근을 위해 RAM에 캐시할지, 디스크에서 서빙할지 여부예요. |
| 파라미터 | 설명 |
|---|---|
quantization_config |
전역 양자화(quantization). 벡터별로는 EdgeVectorParams.quantization_config로 재정의할 수 있어요. 양자화(Quantization)를 참고하세요. |
optimizers |
옵티마이저 파라미터. Optimizer Parameters 를 참고하세요. |
새 샤드는 vectors 또는 sparse_vectors 중 최소 하나를 정의해야 해요. load 시에는 둘 다 기존 세그먼트에 대해 검증돼요. Python은 둘 다 비어 있으면 ValueError를 발생시켜요. 그래서 튜닝 가능한 파라미터 하나만 바꿔도 벡터를 다시 선언해야 해요.
Dense 벡터 파라미터 (Dense Vector Parameters)
EdgeVectorParams는 하나의 이름 있는 named dense 벡터를 구성해요. size와 distance는 필수이며, 샤드가 생성된 뒤에는 바꿀 수 없어요.
EdgeVectorParams(
size: int,
distance: Distance,
on_disk: Optional[bool] = None,
multivector_config: Optional[MultiVectorConfig] = None,
datatype: Optional[VectorStorageDatatype] = None,
quantization_config: Optional[QuantizationConfigType] = None,
hnsw_config: Optional[HnswIndexConfig] = None,
)
optimize
위에서 설정한 옵티마이저 파라미터를 적용해요. 삭제 표시된 데이터를 제거하고, 세그먼트를 병합하고, 인덱스를 구축해요. Qdrant Edge에는 백그라운드 옵티마이저가 없어서, 최적화는 이 메서드를 호출할 때만 일어나요. 동기적으로 실행되며 더 이상의 최적화가 계획되지 않을 때까지 블로킹해요.
def optimize(self) -> bool