청크 캐시 구성
청크 캐시 메커니즘을 통해 Milvus는 데이터가 필요하기 전에 쿼리 노드의 로컬 하드 디스크에 있는 캐시에 데이터를 미리 로드할 수 있습니다. 이 메커니즘은 디스크에서 메모리로 데이터를 로드하는 데 걸리는 시간을 줄여 벡터 검색 성능을 크게 향상시킵니다.
배경
벡터를 검색하기 위해 쿼리를 수행하기 전에 Milvus는 데이터를 객체 저장소에서 쿼리 노드의 로컬 하드 디스크에 있는 메모리 캐시로 로드해야 합니다. 이 과정은 시간이 많이 걸리는 프로세스입니다. 모든 데이터가 로드되기 전에 Milvus는 일부 벡터 검색 요청에 지연으로 응답할 수 있습니다.
쿼리 성능을 개선하기 위해 Milvus는 개체 스토리지에서 로컬 하드 디스크의 캐시에 데이터가 필요하기 전에 미리 로드하는 청크 캐시 메커니즘을 제공합니다. 쿼리 요청이 수신되면 세그코어는 먼저 데이터가 오브젝트 스토리지가 아닌 캐시에 있는지 확인합니다. 데이터가 캐시에 있으면 세그코어는 캐시에서 데이터를 빠르게 검색하여 결과를 클라이언트에 반환할 수 있습니다.
청크 캐시 구성
이 가이드는 Milvus 인스턴스에 대한 청크 캐시 메커니즘을 구성하는 방법에 대한 지침을 제공합니다. 구성은 Milvus 인스턴스를 설치하는 방식에 따라 다릅니다.
헬름 차트를 사용하여 설치한 Milvus 인스턴스의 경우
config
섹션 아래의values.yaml
파일에 구성을 추가한다. 자세한 내용은 헬름 차트로 Milvus 구성을 참조한다.Docker Compose를 사용하여 설치한 Milvus 인스턴스의 경우
Milvus 인스턴스를 시작할 때 사용한
milvus.yaml
파일에 구성을 추가합니다. 자세한 내용은 Docker Compose로 Milvus 구성을 참조하세요.Operator를 사용하여 설치한 Milvus 인스턴스의 경우
Milvus
사용자 지정 리소스의spec.components
섹션에 구성을 추가합니다. 자세한 내용은 Operator로 Milvus 구성을 참조하세요.
구성 옵션
queryNode:
cache:
warmup: async
warmup
매개 변수는 Milvus가 개체 스토리지의 데이터를 쿼리 노드의 로컬 하드 디스크에 있는 캐시에 미리 로드할지 여부를 결정합니다. 이 매개변수의 기본값은 disable
입니다. 가능한 옵션은 다음과 같습니다:
async
: Milvus는 백그라운드에서 데이터를 비동기식으로 미리 로드하므로 컬렉션 로드에 걸리는 시간에 영향을 미치지 않습니다. 그러나 로드 프로세스가 완료된 후 짧은 시간 동안 벡터를 검색할 때 사용자가 지연을 경험할 수 있습니다. 이 옵션이 기본값입니다.sync
: Milvus는 데이터를 동기식으로 미리 로드하므로 컬렉션을 로드하는 데 걸리는 시간에 영향을 줄 수 있습니다. 그러나 사용자는 로드 프로세스가 완료된 후 지연 없이 즉시 쿼리를 수행할 수 있습니다.disable
: Milvus는 메모리 캐시에 데이터를 미리 로드하지 않습니다.
청크 캐시 설정은 컬렉션에 새 데이터가 삽입되거나 컬렉션 인덱스가 다시 빌드될 때에도 적용됩니다.
FAQ
청크 캐시 메커니즘이 올바르게 작동하는지 확인하려면 어떻게 해야 하나요?
컬렉션을 로드한 후 검색 또는 쿼리 요청의 지연 시간을 확인하는 것이 좋습니다. 지연 시간이 예상보다 훨씬 길면(예: 몇 초) 청크 캐시 메커니즘이 여전히 작동 중인 것일 수 있습니다.
쿼리 지연 시간이 오랫동안 높게 유지되는 경우. 개체 스토리지의 처리량을 확인하여 청크 캐시가 계속 작동 중인지 확인할 수 있습니다. 정상적인 경우, 작동 중인 청크 캐시는 오브젝트 스토리지에서 높은 처리량을 생성합니다. 또는
sync
모드에서 청크 캐시를 사용해 볼 수도 있습니다.