TL;DR
Qdrant는 단순 벡터 저장을 넘어 페이로드와 인덱스를 관리하므로 대량 업로드 시 메모리 압박과 성능 저하가 발생할 수 있다. 밀집 벡터와 희소 벡터의 특성에 맞춰 온디스크 저장, 사전 페이로드 인덱싱, 양자화 기법을 적용하여 메모리 사용량을 조절한다. 또한 배치 크기 최적화와 병렬 업로드 워커, 샤딩 구성을 통해 네트워크 오버헤드를 줄이고 처리량을 극대화한다. 각 설정은 검색 품질과 지연 시간 간의 트레이드오프를 가지므로 워크로드에 맞는 균형점을 찾는 것이 중요하다.
챕터별 상세
Qdrant 데이터 관리 개요
밀집 벡터와 희소 벡터의 차이
HNSW(Hierarchical Navigable Small World)는 근사 최근접 이웃 검색을 위한 그래프 기반 인덱싱 알고리즘이다.
밀집 벡터 온디스크 저장
client.create_collection(collection_name="my_collection", vectors_config=models.VectorParams(size=768, distance=models.Distance.COSINE, on_disk=True))밀집 벡터를 디스크에 저장하여 RAM 사용량을 줄이는 컬렉션 생성 설정
사전 페이로드 인덱싱
client.create_payload_index(collection_name="my_collection", field_name="category", field_schema=models.PayloadSchemaType.KEYWORD)데이터 업로드 전 페이로드 인덱스를 생성하여 효율적인 필터링 구현
양자화 기법 적용
client.create_collection(..., quantization_config=models.TurboQuantization(turbo=models.TurboQuantizationConfig(always_ram=True, bits=models.TurboQuantizationBitSize.BITS4)))TurboQuantization을 적용하여 벡터를 압축하고 메모리 사용량을 최적화
희소 벡터 온디스크 인덱싱
업로드 배치 처리
client.upload_points(collection_name="my_collection", points=points, batch_size=256)배치 크기를 256으로 설정하여 네트워크 및 처리 오버헤드 감소
병렬 업로드 워커 활용
client.upload_points(..., batch_size=256, parallel=4)병렬 업로드 워커를 4개로 설정하여 데이터 처리량 극대화
샤딩 구성
최적의 조합 선택
용어 해설
- 밀집 벡터(Dense Vectors)
- — 대부분의 차원 값이 0이 아닌 실수로 채워진 벡터. 주로 신경망 임베딩 모델에서 생성되며, 의미론적 유사성 검색을 위해 HNSW와 같은 근사 최근접 이웃(ANN) 인덱싱 알고리즘을 사용한다.
- 희소 벡터(Sparse Vectors)
- — 대부분의 차원 값이 0이고 일부만 유의미한 값을 가지는 벡터. 키워드 기반 검색이나 하이브리드 검색에 주로 사용되며, 밀집 벡터와는 다른 인덱싱 구조와 메모리 관리 전략이 필요하다.
- 양자화(Quantization)
- — 고정밀도 벡터 데이터를 저정밀도 데이터로 압축하는 기법. 메모리 사용량을 획기적으로 줄이고 검색 속도를 높일 수 있으나, 압축 과정에서 검색 정확도와 품질에 미세한 손실이 발생할 수 있다.
- 샤딩(Sharding)
- — 데이터베이스를 여러 개의 작은 조각(샤드)으로 나누어 분산 저장하는 기술. 대규모 데이터셋에서 병렬 처리를 가능하게 하여 쓰기 처리량을 높이고 시스템 부하를 분산시킨다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
