IVF 인덱스의 인덱스 매개변수를 선택하는 방법
Milvus 구성 모범 사례에서는 Milvus 0.6.0 구성에 대한 몇 가지 모범 사례가 소개되었습니다. 이 글에서는 테이블 생성, 인덱스 생성, 검색을 포함한 작업을 위해 Milvus 클라이언트에서 주요 매개변수를 설정하는 몇 가지 모범 사례도 소개합니다. 이러한 매개변수는 검색 성능에 영향을 줄 수 있습니다.
1. index_file_size
테이블을 생성할 때 index_file_size 매개변수는 데이터 저장을 위한 단일 파일의 크기를 MB 단위로 지정하는 데 사용됩니다. 기본값은 1024입니다. 벡터 데이터를 가져올 때 Milvus는 데이터를 점진적으로 결합하여 파일로 만듭니다. 파일 크기가 index_file_size에 도달하면 이 파일은 새 데이터를 받지 않으며 Milvus는 새 데이터를 다른 파일에 저장합니다. 이들은 모두 원시 데이터 파일입니다. 인덱스가 생성되면 Milvus는 각 원시 데이터 파일에 대해 인덱스 파일을 생성합니다. IVFLAT 인덱스 유형의 경우 인덱스 파일 크기는 해당 원시 데이터 파일의 크기와 거의 같습니다. SQ8 인덱스의 경우 인덱스 파일의 크기는 해당 원시 데이터 파일의 약 30퍼센트입니다.
검색 중에 Milvus는 각 인덱스 파일을 하나씩 검색합니다. 우리의 경험에 따르면 index_file_size가 1024에서 2048로 변경되면 검색 성능이 30퍼센트에서 50퍼센트까지 향상됩니다. 그러나 값이 너무 크면 큰 파일이 GPU 메모리(또는 CPU 메모리)에 로드되지 않을 수 있습니다. 예를 들어 GPU 메모리가 2 GB이고 index_file_size가 3 GB인 경우 인덱스 파일을 GPU 메모리에 로드할 수 없습니다. 일반적으로 index_file_size를 1024 MB 또는 2048 MB로 설정합니다.
다음 표는 index_file_size에 대해 sift50m을 사용한 테스트를 보여줍니다. 인덱스 유형은 SQ8입니다.
1-sift50m-test-results-milvus.
CPU 모드와 GPU 모드에서 index_file_size가 1024 MB 대신 2048 MB일 때 검색 성능이 크게 향상되는 것을 확인할 수 있습니다.
2. nlist 및 nprobe
nlist 매개변수는 인덱스 생성에 사용되고 nprobe 매개변수는 검색에 사용됩니다. IVFLAT와 SQ8은 모두 클러스터링 알고리즘을 사용하여 많은 수의 벡터를 클러스터 또는 버킷으로 나눕니다. nlist는 클러스터링 중의 버킷 수입니다.
인덱스를 사용해 검색할 때 첫 번째 단계는 대상 벡터에 가장 가까운 일정 수의 버킷을 찾는 것이고, 두 번째 단계는 벡터 거리로 버킷에서 가장 유사한 k개의 벡터를 찾는 것입니다. nprobe는 첫 번째 단계의 버킷 수입니다.
일반적으로 nlist를 늘리면 클러스터링 중 버킷이 더 많아지고 버킷 안의 벡터 수는 줄어듭니다. 그 결과 계산 부하가 감소하고 검색 성능이 향상됩니다. 그러나 유사도 비교를 위한 벡터 수가 줄어들면 올바른 결과를 놓칠 수 있습니다.
nprobe를 늘리면 검색할 버킷이 더 많아집니다. 그 결과 계산 부하가 증가하고 검색 성능은 저하되지만 검색 정확도는 향상됩니다. 상황은 분포가 다른 데이터셋마다 달라질 수 있습니다. nlist와 nprobe를 설정할 때 데이터셋의 크기도 고려해야 합니다. 일반적으로 nlist는 4 * sqrt(n)이 권장되며, 여기서 n은 전체 벡터 수입니다. nprobe의 경우 정확도와 효율성 사이에서 절충해야 하며, 가장 좋은 방법은 시행착오를 통해 값을 결정하는 것입니다.
다음 표는 nlist와 nprobe에 대해 sift50m을 사용한 테스트를 보여줍니다. 인덱스 유형은 SQ8입니다.
sq8-index-test-sift50m.
이 표는 서로 다른 nlist/nprobe 값을 사용한 검색 성능과 정밀도를 비교합니다. CPU와 GPU 테스트 결과가 유사하기 때문에 GPU 결과만 표시됩니다. 이 테스트에서는 nlist/nprobe 값이 같은 비율로 증가함에 따라 검색 정밀도도 증가합니다. nlist = 4096이고 nprobe가 128일 때 Milvus는 최고의 검색 성능을 보입니다. 결론적으로 nlist와 nprobe 값을 결정할 때는 다양한 데이터셋과 요구 사항을 고려하여 성능과 정밀도 간의 절충을 해야 합니다.
요약
index_file_size: 데이터 크기가 index_file_size보다 클 때, index_file_size 값이 클수록 검색 성능이 더 좋습니다.
nlist 및 nprobe:성능과 정밀도 간의 절충을 해야 합니다.
계속 읽기

A Few Notes from Databricks Data + AI Summit 2026: Why the Data Layer Matters Again
James Luan shares notes from Databricks Data + AI Summit 2026 on why production AI is pushing the data layer back to the center of infrastructure.

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Zilliz Cloud Just Landed in Claude Code
The Zilliz Cloud Plugin brings the full power of Zilliz Cloud directly into your Claude Code terminal as natural-language conversations.



